diff --git a/!TheEsc/!MapEdit,ff8 b/!TheEsc/!MapEdit,ff8 index a897ba4..75b1d3f 100644 Binary files a/!TheEsc/!MapEdit,ff8 and b/!TheEsc/!MapEdit,ff8 differ diff --git a/!TheEsc/!RunImage,ff8 b/!TheEsc/!RunImage,ff8 index d5de7fa..9013b29 100644 Binary files a/!TheEsc/!RunImage,ff8 and b/!TheEsc/!RunImage,ff8 differ diff --git a/!TheEsc/Font,ff9 b/!TheEsc/Font,ff9 index 61e4765..799a5c8 100644 Binary files a/!TheEsc/Font,ff9 and b/!TheEsc/Font,ff9 differ diff --git a/!TheEsc/Spr,ff9 b/!TheEsc/Spr,ff9 index 5b8cf8c..2d76e4f 100644 Binary files a/!TheEsc/Spr,ff9 and b/!TheEsc/Spr,ff9 differ diff --git a/!TheEsc/c/MapEdit b/!TheEsc/c/MapEdit index be1df5a..c4f8850 100644 --- a/!TheEsc/c/MapEdit +++ b/!TheEsc/c/MapEdit @@ -577,17 +577,14 @@ int game2_tick() map[2][x][y] = 255; TilePlayer.localtile.X = x; TilePlayer.localtile.Y = y; - if(screen) - draw_sprite("select1",x*100,y*100); - else - draw_sprite("select2",x*100,y*100); + draw_sprite("select1",x*100,y*100); } } } - draw_sprite("lcarsblack",1000,DISPLAY_Y-164); + draw_sprite("commspanel",1000,DISPLAY_Y-164); TilePlayer.rawtile = (TilePlayer.mapoffset.Y) + TilePlayer.localtile.Y + (TilePlayer.mapoffset.X * 100) + (TilePlayer.localtile.X * 100); @@ -660,8 +657,6 @@ int game2_tick() game2_tick_input(); - draw_sprite("cursor",TilePlayer.location.X,TilePlayer.location.Y); - x = 1100; y = 600; diff --git a/!TheEsc/c/Mission2 b/!TheEsc/c/Mission2 index 13e3078..82644ee 100644 --- a/!TheEsc/c/Mission2 +++ b/!TheEsc/c/Mission2 @@ -55,6 +55,10 @@ struct TilePlayer_s { int rawtile; unsigned char direction; unsigned char facedirection; + unsigned char sprite[13]; + unsigned char basesprite[13]; + unsigned char animframe; + int nextanimframe; }; struct TilePlayer_s TilePlayer; @@ -250,6 +254,8 @@ void game2_setup() TilePlayer.direction = DIRECTION_NONE; TilePlayer.facedirection = 1; + TilePlayer.animframe = 0; + TilePlayer.nextanimframe = 0; memset(map[0],0xFF,100); memset(map[1],0xFF,100); @@ -347,7 +353,16 @@ void game2_tick_input() // Store the last movement so we know where to face an idle player if(TilePlayer.direction > 0) + { TilePlayer.facedirection = TilePlayer.direction; + if(tick > TilePlayer.nextanimframe) + { + TilePlayer.animframe++; + TilePlayer.nextanimframe = tick + 10; + } + if(TilePlayer.animframe > 3) + TilePlayer.animframe = 0; + } // Store in case we have a vertical collide TilePlayer.lastlocation.X = TilePlayer.location.X; @@ -431,6 +446,8 @@ int game2_tick() int x; int y; int i; + char flipv = 0; + char fliph = 0; lasttick = tick; tick = clock(); @@ -502,24 +519,68 @@ int game2_tick() } } - game2_tick_input(); + game2_tick_input(); if((TilePlayer.facedirection & (1 << DIRECTION_N)) && (TilePlayer.facedirection & (1 << DIRECTION_E))) //NE - draw_sprite_flippedh("man_se",TilePlayer.location.X,TilePlayer.location.Y); - else if((TilePlayer.facedirection & (1 << DIRECTION_S)) && (TilePlayer.facedirection & (1 << DIRECTION_E))) // SE - draw_sprite("man_se",TilePlayer.location.X,TilePlayer.location.Y); - else if((TilePlayer.facedirection & (1 << DIRECTION_S)) && (TilePlayer.facedirection & (1 << DIRECTION_W))) // SW - draw_sprite_flippedv("man_se",TilePlayer.location.X,TilePlayer.location.Y); - else if((TilePlayer.facedirection & (1 << DIRECTION_N)) && (TilePlayer.facedirection & (1 << DIRECTION_W))) // NW - draw_sprite_flippedhv("man_se",TilePlayer.location.X,TilePlayer.location.Y); - else if(TilePlayer.facedirection & (1 << DIRECTION_N)) // N - draw_sprite_flippedh("man_s",TilePlayer.location.X,TilePlayer.location.Y); - else if(TilePlayer.facedirection & (1 << DIRECTION_S)) // S - draw_sprite("man_s",TilePlayer.location.X,TilePlayer.location.Y); - else if(TilePlayer.facedirection & (1 << DIRECTION_E)) // E - draw_sprite("man_e",TilePlayer.location.X,TilePlayer.location.Y); - else if(TilePlayer.facedirection & (1 << DIRECTION_W)) // W - draw_sprite_flippedv("man_e",TilePlayer.location.X,TilePlayer.location.Y); + { + fliph = 1; + sprintf(TilePlayer.basesprite, "man_se"); + }else if((TilePlayer.facedirection & (1 << DIRECTION_S)) && (TilePlayer.facedirection & (1 << DIRECTION_E))) // SE + { + sprintf(TilePlayer.basesprite, "man_se"); + }else if((TilePlayer.facedirection & (1 << DIRECTION_S)) && (TilePlayer.facedirection & (1 << DIRECTION_W))) // SW + { + flipv = 1; + sprintf(TilePlayer.basesprite, "man_se"); + }else if((TilePlayer.facedirection & (1 << DIRECTION_N)) && (TilePlayer.facedirection & (1 << DIRECTION_W))) // NW + { + flipv = 1; + fliph = 1; + sprintf(TilePlayer.basesprite, "man_se"); + }else if(TilePlayer.facedirection & (1 << DIRECTION_N)) // N + { + fliph = 1; + sprintf(TilePlayer.basesprite, "man_s"); + }else if(TilePlayer.facedirection & (1 << DIRECTION_S)) // S + { + sprintf(TilePlayer.basesprite, "man_s"); + }else if(TilePlayer.facedirection & (1 << DIRECTION_E)) // E + { + sprintf(TilePlayer.basesprite, "man_e"); + }else if(TilePlayer.facedirection & (1 << DIRECTION_W)) // W + { + flipv = 1; + sprintf(TilePlayer.basesprite, "man_e"); + } + + if(TilePlayer.animframe == 0) + sprintf(TilePlayer.sprite, "%s",TilePlayer.basesprite); + if(TilePlayer.animframe == 1) + sprintf(TilePlayer.sprite, "%s_l",TilePlayer.basesprite); + if(TilePlayer.animframe == 2) + sprintf(TilePlayer.sprite, "%s",TilePlayer.basesprite); + if(TilePlayer.animframe == 3) + { + // Use 'right' for diagonals, otherwise we flip + if(strlen(TilePlayer.basesprite) > 5) + sprintf(TilePlayer.sprite, "%s_r",TilePlayer.basesprite); + else + { + sprintf(TilePlayer.sprite, "%s_l",TilePlayer.basesprite); + } + } + + draw_spritetext("#############", 1020, 650); + draw_spritetext(TilePlayer.sprite, 1020, 650); + + if(fliph && flipv) + draw_sprite_flippedhv(TilePlayer.sprite,TilePlayer.location.X,TilePlayer.location.Y); + else if(fliph) + draw_sprite_flippedh(TilePlayer.sprite,TilePlayer.location.X,TilePlayer.location.Y); + else if(flipv) + draw_sprite_flippedv(TilePlayer.sprite,TilePlayer.location.X,TilePlayer.location.Y); + else + draw_sprite(TilePlayer.sprite,TilePlayer.location.X,TilePlayer.location.Y); #ifdef M2_DEBUG_HITBOXES draw_rectangle(