diff --git a/C++ProjectTemplate b/C++ProjectTemplate index fc8d31a..125a100 100755 Binary files a/C++ProjectTemplate and b/C++ProjectTemplate differ diff --git a/main.cpp b/main.cpp index 3e692c1..d683d43 100644 --- a/main.cpp +++ b/main.cpp @@ -1196,6 +1196,28 @@ goes on a very long time, I hope you can understand this is only for testing pur BATTLE_STATE=BattleState::WAIT; } }break; + case BattleState::MOVE_SELECT:{ + if (LeftPressed()) { + if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x-1,SELECTED_MOVE_SQUARE.y})) { + SELECTED_MOVE_SQUARE.x-=1; + } + } + if (RightPressed()) { + if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x+1,SELECTED_MOVE_SQUARE.y})) { + SELECTED_MOVE_SQUARE.x+=1; + } + } + if (UpPressed()) { + if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x,SELECTED_MOVE_SQUARE.y-1})) { + SELECTED_MOVE_SQUARE.y-=1; + } + } + if (DownPressed()) { + if (MOVEMENT_GRID.count({SELECTED_MOVE_SQUARE.x,SELECTED_MOVE_SQUARE.y+1})) { + SELECTED_MOVE_SQUARE.y+=1; + } + } + }break; } } @@ -1667,6 +1689,7 @@ goes on a very long time, I hope you can understand this is only for testing pur cursorOffset.x-=36*0.08; cursorOffset.y-=36*0.08; } + cursorOffset+=SELECTED_MOVE_SQUARE*32; DrawDecal((vi2d)((PARTY_MEMBER_OBJ[-CURRENT_TURN-1]->GetPosWithOrigin()-cameraPos)/32)*32+cursorOffset,SPRITES["crosshair.png"],cursorScale); } for (auto numb:DAMAGE_NUMBERS) { @@ -3339,46 +3362,46 @@ goes on a very long time, I hope you can understand this is only for testing pur } void CheckGrid(int x,int y,vd2d pos,int lifetime) { - if (!MOVEMENT_GRID.count({x,y})) { - if (pos.x<0||pos.x>=WIDTH||pos.y<0||pos.y>=HEIGHT-64) { - return; - } - for (int xx=0;xx<32;xx++) { - for (int yy=0;yy<32;yy++) { - vi2d offset={xx,yy}; - if (Collision(pos+offset)) { - return; - } + if (pos.x<0||pos.x>=WIDTH||pos.y<0||pos.y>=HEIGHT-64) { + return; + } + for (int xx=0;xx<32;xx++) { + for (int yy=0;yy<32;yy++) { + vi2d offset={xx,yy}; + if (Collision(pos+offset)) { + std::cout<GetPosWithOrigin()-cameraPos)/32*32) { + } + bool nonSolid=false; //Ran into a non-solid instance, which means we can't mark the tile, but we can continue moving through. + for (int i=0;iGetPosWithOrigin()-cameraPos)/32*32) { + nonSolid=true; + break; + } + } + if (!nonSolid) { + for (int i=0;iobjs.size();i++) { + if (pos==(vi2d)(BATTLE_ENCOUNTER->objs[i]->obj->GetPosWithOrigin()-cameraPos)/32*32) { nonSolid=true; break; } } - if (!nonSolid) { - for (int i=0;iobjs.size();i++) { - if (pos==(vi2d)(BATTLE_ENCOUNTER->objs[i]->obj->GetPosWithOrigin()-cameraPos)/32*32) { - nonSolid=true; - } - } - } + } - if (!nonSolid) { - MOVEMENT_GRID[{x,y}]=pos; - } - if (lifetime>0) { - vi2d offsetLeft = {-32,0}; - CheckGrid(x-1,y,pos+offsetLeft,lifetime-1); - vi2d offsetRight = {32,0}; - CheckGrid(x+1,y,pos+offsetRight,lifetime-1); - vi2d offsetUp = {0,-32}; - CheckGrid(x,y-1,pos+offsetUp,lifetime-1); - vi2d offsetDown = {0,32}; - CheckGrid(x,y+1,pos+offsetDown,lifetime-1); - } + if (!nonSolid) { + MOVEMENT_GRID[{x,y}]=pos; + } + if (lifetime>0) { + vi2d offsetLeft = {-32,0}; + CheckGrid(x-1,y,pos+offsetLeft,lifetime-1); + vi2d offsetRight = {32,0}; + CheckGrid(x+1,y,pos+offsetRight,lifetime-1); + vi2d offsetUp = {0,-32}; + CheckGrid(x,y-1,pos+offsetUp,lifetime-1); + vi2d offsetDown = {0,32}; + CheckGrid(x,y+1,pos+offsetDown,lifetime-1); } } @@ -3386,26 +3409,7 @@ goes on a very long time, I hope you can understand this is only for testing pur vi2d gridCenter = (vi2d)pos/32*32; MOVEMENT_GRID.clear(); CheckGrid(0,0,gridCenter-cameraPos,range); - for (std::map,vd2d>::const_iterator it = MOVEMENT_GRID.cbegin();it!=MOVEMENT_GRID.cend();++it) { - int gridX = it->first.first; - int gridY = it->first.second; - vd2d pos = it->second; - bool neighborExists=false; - for (int x=-1;x<=1;x++) { - for (int y=-1;y<=1;y++) { - if (abs(x)+abs(y)==1&&MOVEMENT_GRID.count({gridX+x,gridY+y})&&MOVEMENT_GRID[{gridX+x,gridY+y}]!=NO_NEIGHBOR) { - neighborExists=true; - break; - } - } - if (neighborExists) { - break; - } - } - if (!neighborExists) { - MOVEMENT_GRID[{gridX,gridY}]=NO_NEIGHBOR; //No neighbor found. - } - } + } vi2d grid(int x, int y) {