public float NextTurn(int d, int turn) { Cell c; MOVELIST dir = (MOVELIST)d; BARBARIAN_MOVE_TYPE type = DecideMove(dir, out c); ExecuteMove(c, type); if (type == BARBARIAN_MOVE_TYPE.INVALID) { return(0.01f); } return(VisualTurn(type, c, turn)); }
public void ChangeSprite(MOVELIST dir, int occupant) { Sprite currentGraphic = new Sprite(); switch (dir) { case MOVELIST.M_LEFT: currentGraphic = moveLeft; if (occupant == 1) { currentGraphic = attack; } butLeft.image.sprite = currentGraphic; break; case MOVELIST.M_FORWARD: currentGraphic = moveForward; if (occupant == 1) { currentGraphic = attack; } butForward.image.sprite = currentGraphic; break; case MOVELIST.M_RIGHT: currentGraphic = moveRight; if (occupant == 1) { currentGraphic = attack; } butRight.image.sprite = currentGraphic; break; case MOVELIST.M_BACK: currentGraphic = moveBack; if (occupant == 1) { currentGraphic = attack; } butBack.image.sprite = currentGraphic; break; case MOVELIST.S_STOMP: //TODO: Implement stomp UI break; } }
private BARBARIAN_MOVE_TYPE DecideMove(MOVELIST dir, out Cell c) { switch (dir) { case MOVELIST.M_LEFT: c = map.CellAtPoint(cell.x - 1, cell.y); break; case MOVELIST.M_FORWARD: c = map.CellAtPoint(cell.x, cell.y + 1); break; case MOVELIST.M_RIGHT: c = map.CellAtPoint(cell.x + 1, cell.y); break; case MOVELIST.M_BACK: c = map.CellAtPoint(cell.x, cell.y - 1); break; case MOVELIST.S_STOMP: c = cell; return(BARBARIAN_MOVE_TYPE.SPELL_STOMP); default: c = cell; break; } if (c == null) { // Something went wrong. return(BARBARIAN_MOVE_TYPE.INVALID); } if (c.type == 666) { // Probably out of bounds. return(BARBARIAN_MOVE_TYPE.INVALID); } if (c.type == 5) { return(BARBARIAN_MOVE_TYPE.FINISH); } if (c.occupant == 1) { // Occupied tile that (can be attacked). return(BARBARIAN_MOVE_TYPE.ATTACK); } if ((c.type == 0 || c.type == 4) && c.occupant == 0) { // Empty ground tile. return(BARBARIAN_MOVE_TYPE.MOVE); } else { // Some garbage. return(BARBARIAN_MOVE_TYPE.INVALID); } }