public bool goodSpellUsing(Spell s, bool enemy, Cell c) { if (s.getSpellType() == Spell.SpellType.PASSIVE) { } else { Battle.BattleState bs = getBS(); Spell.Target t = s.getSpellTarget(); CellContent content = c.getContent(); if (t == Spell.Target.CELL && content != CellContent.STONE || t == Spell.Target.ALL_ENEMY_UNITS || t == Spell.Target.SELF) { return(true); } return((!enemy || t != Spell.Target.ALLY_UNIT) && (enemy || t != Spell.Target.ENEMY_UNIT)); } return(false); }
public void OnCellClick(Position p) { if (battle.getBattleState() != Battle.BattleState.FIRST_PLAYER_MOVE && battle.getBattleState() != Battle.BattleState.SECOND_PLAYER_MOVE) { return; } bool madeMove = false; if (activeSpell == -1) { switch (battle.getMap().getMapCell(p.getX, p.getY).getContent()) { case CellContent.UNIT1: if (battle.getBattleState() == Battle.BattleState.SECOND_PLAYER_MOVE) { BattleUnitsStack b1 = battle.order2.getFirst(); BattleUnitsStack b2 = battle.getBUSwithPos(1, p); if (b2 == null) { return; } madeMove = Attack(b1, b2); } else { return; } break; case CellContent.UNIT2: if (battle.getBattleState() == Battle.BattleState.FIRST_PLAYER_MOVE) { BattleUnitsStack b1 = battle.order1.getFirst(); BattleUnitsStack b2 = battle.getBUSwithPos(2, p); if (b2 == null) { return; } madeMove = Attack(b1, b2); } else { return; } break; case CellContent.FREE: BattleUnitsStack b = battle.getBattleState() == Battle.BattleState.FIRST_PLAYER_MOVE ? battle.order1.getFirst() : battle.order2.getFirst(); if (battle.getBattleState() == Battle.BattleState.FIRST_PLAYER_MOVE) { var bb = army1.GetComponent <uBattleArmy>().getUBUS(b.getcPos()); madeMove = bb.GetComponent <uBattleUnitsStack>().Move(p); } else { var bb = army2.GetComponent <uBattleArmy>().getUBUS(b.getcPos()); madeMove = bb.GetComponent <uBattleUnitsStack>().Move(p); } break; case CellContent.STONE: return; } } else { Spell s = activeBUS.getSpell(activeSpell); Spell.Target t = activeBUS.getType().getSpell(activeSpell).getSpellTarget(); if (s.isSummonBear()) { madeMove = s.Use(map.GetComponent <uMap>().getCell(p).getPos(), p, gameObject, activeBUS.Count, getBS() == Battle.BattleState.FIRST_PLAYER_MOVE ? 1 : 2); } else if (t == Spell.Target.CELL && !battle.getMap().getMapCell(p.getX, p.getY).gotSpell()) { madeMove = s.Use(activeBUS.getcPos(), map.GetComponent <uMap>().getCell(p)); } else { switch (battle.getMap().getMapCell(p.getX, p.getY).getContent()) { case CellContent.FREE: break; case CellContent.UNIT1: uBattleUnitsStack busAtP1 = army1.GetComponent <uBattleArmy>().getUBUS(p) .GetComponent <uBattleUnitsStack>(); if (getBS() == Battle.BattleState.FIRST_PLAYER_MOVE && t == Spell.Target.ALLY_UNIT) { madeMove = s.Use(activeBUS.getcPos(), busAtP1); } if (getBS() == Battle.BattleState.SECOND_PLAYER_MOVE && t == Spell.Target.ENEMY_UNIT) { madeMove = s.Use(activeBUS.getcPos(), busAtP1); } break; case CellContent.UNIT2: uBattleUnitsStack busAtP2 = army2.GetComponent <uBattleArmy>().getUBUS(p) .GetComponent <uBattleUnitsStack>(); if (getBS() == Battle.BattleState.SECOND_PLAYER_MOVE && t == Spell.Target.ALLY_UNIT) { madeMove = s.Use(activeBUS.getcPos(), busAtP2); } if (getBS() == Battle.BattleState.FIRST_PLAYER_MOVE && t == Spell.Target.ENEMY_UNIT) { madeMove = s.Use(activeBUS.getcPos(), busAtP2); } break; case CellContent.STONE: break; default: if (t == Spell.Target.ALL_ENEMY_UNITS) { if (getBS() == Battle.BattleState.FIRST_PLAYER_MOVE) { madeMove = s.Use(activeBUS.getcPos(), army1.GetComponent <uBattleArmy>()); } else { madeMove = s.Use(activeBUS.getcPos(), army2.GetComponent <uBattleArmy>()); } } break; } } } if (madeMove) { DoDamageFromCells(); if (getBS() == Battle.BattleState.FIRST_PLAYER_MOVE) { battle.order1.NormalMove(); } else { battle.order2.NormalMove(); } battle.Refresh(); CheckForEnd(); if (getBS() != Battle.BattleState.END) { activeSpell = -1; activeBUS = battle.nextTern(); map.GetComponent <uMap>().Recolor(); SpellsMenu.GetComponent <BattleMenu>().RefreshSpells(activeBUS); } } }