mirror of
https://github.com/stevenhowes/CTheEscape.git
synced 2026-05-26 15:53:29 +01:00
Read and highlight smart tiles in mapedit
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -15,6 +15,7 @@ extern int screen;
|
|||||||
|
|
||||||
#define TILESX 10
|
#define TILESX 10
|
||||||
#define TILESY 10
|
#define TILESY 10
|
||||||
|
#define SMARTTILES 100
|
||||||
|
|
||||||
// SWI Registers
|
// SWI Registers
|
||||||
_kernel_swi_regs inreg;
|
_kernel_swi_regs inreg;
|
||||||
@@ -59,6 +60,58 @@ struct TilePlayer_s {
|
|||||||
|
|
||||||
struct TilePlayer_s TilePlayer;
|
struct TilePlayer_s TilePlayer;
|
||||||
|
|
||||||
|
struct SmartTile_s {
|
||||||
|
int Tile;
|
||||||
|
int ActionTarget;
|
||||||
|
unsigned char Action;
|
||||||
|
unsigned char ActionValue;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SmartTile_s SmartTiles[SMARTTILES];
|
||||||
|
|
||||||
|
void game2_loadsmarttiles(char* filename)
|
||||||
|
{
|
||||||
|
int length;
|
||||||
|
|
||||||
|
// Attempt to get file info
|
||||||
|
inreg.r[0] = 5;
|
||||||
|
inreg.r[1] = (int) filename;
|
||||||
|
_kernel_swi(OS_File,&inreg,&outreg);
|
||||||
|
|
||||||
|
// Length will be in R4 if it exists
|
||||||
|
length = outreg.r[4];
|
||||||
|
|
||||||
|
if(length > sizeof(SmartTiles))
|
||||||
|
{
|
||||||
|
screen_nobuffer();
|
||||||
|
while (1)
|
||||||
|
printf("Smarttiles exceeds %d bytes (%d bytes) object type is %d\n",sizeof(SmartTiles),length,outreg.r[0]);
|
||||||
|
//exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Attempt to get file info
|
||||||
|
inreg.r[0] = 16;
|
||||||
|
inreg.r[1] = (int) filename;
|
||||||
|
inreg.r[2] = (int) SmartTiles;
|
||||||
|
inreg.r[3] = 0;
|
||||||
|
|
||||||
|
_kernel_swi(OS_File,&inreg,&outreg);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void game2_savesmarttiles(char* filename)
|
||||||
|
{
|
||||||
|
// Attempt to get file info
|
||||||
|
inreg.r[0] = 10;
|
||||||
|
inreg.r[1] = (int) filename;
|
||||||
|
inreg.r[2] = 0xffd;
|
||||||
|
inreg.r[4] = (int) SmartTiles;
|
||||||
|
inreg.r[5] = (int) SmartTiles + (sizeof(SmartTiles));
|
||||||
|
|
||||||
|
_kernel_swi(OS_File,&inreg,&outreg);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void game2_loadmap(char* filename)
|
void game2_loadmap(char* filename)
|
||||||
{
|
{
|
||||||
int length;
|
int length;
|
||||||
@@ -132,6 +185,7 @@ void game2_setup()
|
|||||||
memset(map[2],0xFF,100);
|
memset(map[2],0xFF,100);
|
||||||
|
|
||||||
game2_loadmap("mission2");
|
game2_loadmap("mission2");
|
||||||
|
game2_loadsmarttiles("m2_smart");
|
||||||
game2_fillmap(TilePlayer.mapoffset.X,TilePlayer.mapoffset.Y);
|
game2_fillmap(TilePlayer.mapoffset.X,TilePlayer.mapoffset.Y);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -322,6 +376,14 @@ int game2_tick()
|
|||||||
|
|
||||||
TilePlayer.rawtile = (TilePlayer.mapoffset.Y) + TilePlayer.localtile.Y + (TilePlayer.mapoffset.X * 100) + (TilePlayer.localtile.X * 100);
|
TilePlayer.rawtile = (TilePlayer.mapoffset.Y) + TilePlayer.localtile.Y + (TilePlayer.mapoffset.X * 100) + (TilePlayer.localtile.X * 100);
|
||||||
|
|
||||||
|
for(i = 0; i < SMARTTILES; i++)
|
||||||
|
{
|
||||||
|
if(SmartTiles[i].Tile == TilePlayer.rawtile)
|
||||||
|
{
|
||||||
|
draw_sprite("smart",TilePlayer.localtile.X*100,TilePlayer.localtile.Y*100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sprintf(textbuffer,"Tile:%i\nSprite:%i\nSolid: %i",
|
sprintf(textbuffer,"Tile:%i\nSprite:%i\nSolid: %i",
|
||||||
TilePlayer.rawtile,
|
TilePlayer.rawtile,
|
||||||
fullmap[TilePlayer.rawtile],
|
fullmap[TilePlayer.rawtile],
|
||||||
|
|||||||
Reference in New Issue
Block a user