Tilemap(VX): Factor out common code into tilemap-common.h
Renamed flashmap.h to tilemap-common.h as it already contained shared functions.
This commit is contained in:
		
							parent
							
								
									faef0e8503
								
							
						
					
					
						commit
						60f101f2e6
					
				
					 7 changed files with 114 additions and 128 deletions
				
			
		| 
						 | 
				
			
			@ -124,7 +124,7 @@ set(MAIN_HEADERS
 | 
			
		|||
	src/glstate.h
 | 
			
		||||
	src/quad.h
 | 
			
		||||
	src/tilemap.h
 | 
			
		||||
	src/flashmap.h
 | 
			
		||||
	src/tilemap-common.h
 | 
			
		||||
	src/graphics.h
 | 
			
		||||
	src/gl-debug.h
 | 
			
		||||
	src/global-ibo.h
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								mkxp.pro
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								mkxp.pro
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -103,7 +103,7 @@ HEADERS += \
 | 
			
		|||
	src/glstate.h \
 | 
			
		||||
	src/quad.h \
 | 
			
		||||
	src/tilemap.h \
 | 
			
		||||
	src/flashmap.h \
 | 
			
		||||
	src/tilemap-common.h \
 | 
			
		||||
	src/graphics.h \
 | 
			
		||||
	src/gl-debug.h \
 | 
			
		||||
	src/global-ibo.h \
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,196 +4,196 @@ extern const StaticRect autotileRects[] =
 | 
			
		|||
{
 | 
			
		||||
	{ 32.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 16.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 16.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 16.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 16.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 16.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 16.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 48.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 48.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 48.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 48.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 48.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 48.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 96.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 96.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 96.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 96.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 64.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 80.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 32.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 48.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 16.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 48.5, 15, 15 },
 | 
			
		||||
	{ 16.5, 48.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 48.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 16.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 48.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 48.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 48.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 48.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 48.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 48.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 96.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 96.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 96.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 96.5, 15, 15 },
 | 
			
		||||
	{ 16.5, 96.5, 15, 15 },
 | 
			
		||||
	{ 16.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 16.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 96.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 16.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 16.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 48.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 48.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 48.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 16.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 16.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 16.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 96.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 96.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 64.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 32.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 80.5, 112.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 16.5, 0.5, 15, 15 },
 | 
			
		||||
	{ 16.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 0.5, 16.5, 15, 15 }
 | 
			
		||||
	{ 0.5, 16.5, 15, 15 },
 | 
			
		||||
	{ 16.5, 16.5, 15, 15 }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
extern const int autotileRectsN = sizeof(autotileRects) / sizeof(autotileRects[0]);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,6 +21,7 @@
 | 
			
		|||
 | 
			
		||||
#include "tileatlasvx.h"
 | 
			
		||||
 | 
			
		||||
#include "tilemap-common.h"
 | 
			
		||||
#include "bitmap.h"
 | 
			
		||||
#include "table.h"
 | 
			
		||||
#include "etc-internal.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -65,21 +66,6 @@ static elementsN(autotileVXRectsC);
 | 
			
		|||
namespace TileAtlasVX
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
wrap(int value, int range)
 | 
			
		||||
{
 | 
			
		||||
	int res = value % range;
 | 
			
		||||
	return res < 0 ? res + range : res;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int16_t
 | 
			
		||||
tableGetWrapped(const Table &t, int x, int y, int z = 0)
 | 
			
		||||
{
 | 
			
		||||
	return t.at(wrap(x, t.xSize()),
 | 
			
		||||
	            wrap(y, t.ySize()),
 | 
			
		||||
	            z);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int16_t
 | 
			
		||||
tableGetSafe(const Table *t, int x)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -333,35 +319,6 @@ void build(TEXFBO &tf, Bitmap *bitmaps[BM_COUNT])
 | 
			
		|||
#define OVER_PLAYER_FLAG (1 << 4)
 | 
			
		||||
#define TABLE_FLAG       (1 << 7)
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
atSelectSubPos(FloatRect &pos, int i)
 | 
			
		||||
{
 | 
			
		||||
	switch (i)
 | 
			
		||||
	{
 | 
			
		||||
	case 0:
 | 
			
		||||
		return;
 | 
			
		||||
	case 1:
 | 
			
		||||
		pos.x += 16;
 | 
			
		||||
		return;
 | 
			
		||||
	case 2:
 | 
			
		||||
		pos.y += 16;
 | 
			
		||||
		return;
 | 
			
		||||
	case 3:
 | 
			
		||||
		pos.x += 16;
 | 
			
		||||
		pos.y += 16;
 | 
			
		||||
		return;
 | 
			
		||||
	case 4:
 | 
			
		||||
		pos.y += 24;
 | 
			
		||||
		return;
 | 
			
		||||
	case 5:
 | 
			
		||||
		pos.x += 16;
 | 
			
		||||
		pos.y += 24;
 | 
			
		||||
		return;
 | 
			
		||||
	default:
 | 
			
		||||
		assert(!"Unreachable");
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Reference: http://www.tktkgame.com/tkool/memo/vx/tile_id.html */
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
/*
 | 
			
		||||
** flashmap.h
 | 
			
		||||
** tilemap-common.h
 | 
			
		||||
**
 | 
			
		||||
** This file is part of mkxp.
 | 
			
		||||
**
 | 
			
		||||
| 
						 | 
				
			
			@ -19,8 +19,8 @@
 | 
			
		|||
** along with mkxp.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef FLASHMAP_H
 | 
			
		||||
#define FLASHMAP_H
 | 
			
		||||
#ifndef TILEMAPCOMMON_H
 | 
			
		||||
#define TILEMAPCOMMON_H
 | 
			
		||||
 | 
			
		||||
#include "table.h"
 | 
			
		||||
#include "gl-util.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -30,8 +30,11 @@
 | 
			
		|||
#include "glstate.h"
 | 
			
		||||
#include "shader.h"
 | 
			
		||||
#include "vertex.h"
 | 
			
		||||
#include "quad.h"
 | 
			
		||||
#include "etc-internal.h"
 | 
			
		||||
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include <assert.h>
 | 
			
		||||
#include <vector>
 | 
			
		||||
 | 
			
		||||
#include <sigc++/connection.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -44,11 +47,50 @@ wrap(int value, int range)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
static inline int16_t
 | 
			
		||||
tableGetWrapped(const Table *t, int x, int y, int z = 0)
 | 
			
		||||
tableGetWrapped(const Table &t, int x, int y, int z = 0)
 | 
			
		||||
{
 | 
			
		||||
	return t->get(wrap(x, t->xSize()),
 | 
			
		||||
	              wrap(y, t->ySize()),
 | 
			
		||||
	              z);
 | 
			
		||||
	return t.get(wrap(x, t.xSize()),
 | 
			
		||||
	             wrap(y, t.ySize()),
 | 
			
		||||
	             z);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
enum AtSubPos
 | 
			
		||||
{
 | 
			
		||||
	TopLeft          = 0,
 | 
			
		||||
	TopRight         = 1,
 | 
			
		||||
	BottomLeft       = 2,
 | 
			
		||||
	BottomRight      = 3,
 | 
			
		||||
	BottomLeftTable  = 4,
 | 
			
		||||
	BottomRightTable = 5
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static inline void
 | 
			
		||||
atSelectSubPos(FloatRect &pos, int i)
 | 
			
		||||
{
 | 
			
		||||
	switch (i)
 | 
			
		||||
	{
 | 
			
		||||
	case TopLeft:
 | 
			
		||||
		return;
 | 
			
		||||
	case TopRight:
 | 
			
		||||
		pos.x += 16;
 | 
			
		||||
		return;
 | 
			
		||||
	case BottomLeft:
 | 
			
		||||
		pos.y += 16;
 | 
			
		||||
		return;
 | 
			
		||||
	case BottomRight:
 | 
			
		||||
		pos.x += 16;
 | 
			
		||||
		pos.y += 16;
 | 
			
		||||
		return;
 | 
			
		||||
	case BottomLeftTable:
 | 
			
		||||
		pos.y += 24;
 | 
			
		||||
		return;
 | 
			
		||||
	case BottomRightTable:
 | 
			
		||||
		pos.x += 16;
 | 
			
		||||
		pos.y += 24;
 | 
			
		||||
		return;
 | 
			
		||||
	default:
 | 
			
		||||
		assert(!"Unreachable");
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct FlashMap
 | 
			
		||||
| 
						 | 
				
			
			@ -144,7 +186,7 @@ private:
 | 
			
		|||
 | 
			
		||||
	bool sampleFlashColor(Vec4 &out, int x, int y) const
 | 
			
		||||
	{
 | 
			
		||||
		int16_t packed = tableGetWrapped(data, x, y);
 | 
			
		||||
		int16_t packed = tableGetWrapped(*data, x, y);
 | 
			
		||||
 | 
			
		||||
		if (packed == 0)
 | 
			
		||||
			return false;
 | 
			
		||||
| 
						 | 
				
			
			@ -216,4 +258,4 @@ private:
 | 
			
		|||
	std::vector<CVertex> vertices;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // FLASHMAP_H
 | 
			
		||||
#endif // TILEMAPCOMMON_H
 | 
			
		||||
| 
						 | 
				
			
			@ -36,7 +36,7 @@
 | 
			
		|||
#include "quad.h"
 | 
			
		||||
#include "vertex.h"
 | 
			
		||||
#include "tileatlas.h"
 | 
			
		||||
#include "flashmap.h"
 | 
			
		||||
#include "tilemap-common.h"
 | 
			
		||||
 | 
			
		||||
#include <sigc++/connection.h>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -590,21 +590,6 @@ struct TilemapPrivate
 | 
			
		|||
		return value;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	FloatRect getAutotilePieceRect(int x, int y, /* in pixel coords */
 | 
			
		||||
	                               int corner)
 | 
			
		||||
	{
 | 
			
		||||
		switch (corner)
 | 
			
		||||
		{
 | 
			
		||||
		case 0 : break;
 | 
			
		||||
		case 1 : x += 16; break;
 | 
			
		||||
		case 2 : x += 16; y += 16; break;
 | 
			
		||||
		case 3 : y += 16; break;
 | 
			
		||||
		default: abort();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return FloatRect(x, y, 16, 16);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void handleAutotile(int x, int y, int tileInd, SVVector *array)
 | 
			
		||||
	{
 | 
			
		||||
		/* Which autotile [0-7] */
 | 
			
		||||
| 
						 | 
				
			
			@ -617,7 +602,9 @@ struct TilemapPrivate
 | 
			
		|||
		/* Iterate over the 4 tile pieces */
 | 
			
		||||
		for (int i = 0; i < 4; ++i)
 | 
			
		||||
		{
 | 
			
		||||
			FloatRect posRect = getAutotilePieceRect(x*32, y*32, i);
 | 
			
		||||
			FloatRect posRect(x*32, y*32, 16, 16);
 | 
			
		||||
			atSelectSubPos(posRect, i);
 | 
			
		||||
 | 
			
		||||
			FloatRect texRect = pieceRect[i];
 | 
			
		||||
 | 
			
		||||
			/* Adjust to atlas coordinates */
 | 
			
		||||
| 
						 | 
				
			
			@ -635,7 +622,7 @@ struct TilemapPrivate
 | 
			
		|||
	void handleTile(int x, int y, int z)
 | 
			
		||||
	{
 | 
			
		||||
		int tileInd =
 | 
			
		||||
			tableGetWrapped(mapData, x + viewpPos.x, y + viewpPos.y, z);
 | 
			
		||||
			tableGetWrapped(*mapData, x + viewpPos.x, y + viewpPos.y, z);
 | 
			
		||||
 | 
			
		||||
		/* Check for empty space */
 | 
			
		||||
		if (tileInd < 48)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -33,7 +33,7 @@
 | 
			
		|||
#include "quad.h"
 | 
			
		||||
#include "quadarray.h"
 | 
			
		||||
#include "shader.h"
 | 
			
		||||
#include "flashmap.h"
 | 
			
		||||
#include "tilemap-common.h"
 | 
			
		||||
 | 
			
		||||
#include <vector>
 | 
			
		||||
#include <sigc++/connection.h>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue