protected override UnitOfWork GetUnitOfWorkImpl(Context context) { int deffencePlayerID = context.map.GetSeaPointOwnerID(to); int defenceCount = context.map.GetNavyCountByCell(to, deffencePlayerID); if (deffencePlayerID == playerID || defenceCount == 0) { UnitOfWork uow = new UOW_Move() { playerID = playerID, from = from, to = to, count = count, gold = gold, }; return uow; } else { NavyFightCM navyFight = new NavyFightCM() { AttackCell = from, AttackCount = count, AttackPlayerID = playerID, AttackPortCount = context.map.GetPortCountForSeaHex(to, playerID), AttackRetreateAvalible = context.map.CanPlayerRetreatFromSeaHex(to, playerID), DefenceCell = to, DefenceCount = defenceCount, DefencePlayerID = deffencePlayerID, DefencePortCount = context.map.GetPortCountForSeaHex(to, deffencePlayerID), DefenceRetreateAvalible = context.map.CanPlayerRetreatFromSeaHex(to, deffencePlayerID) }; UnitOfWork uow = new UOW_Fight() { playerID = playerID, from = from, to = to, count = count, gold = gold, navyFight = navyFight }; return uow; } }
protected override UnitOfWork GetUnitOfWorkImpl(Context context) { int deffencePlayerID = context.map.Islands[islandToID].OwnerID; int defenceCount = context.map.GetArmyCountByIsland(islandToID, deffencePlayerID); bool isMinotaurus = context.map.IsThereCreatureOnIsland(Card.Minotaur, islandToID); //TODO minotaurus? if (deffencePlayerID == playerID || defenceCount == 0 && !isMinotaurus) { UnitOfWork uow= new UOW_Move() { playerID = playerID, islandFromID = islandFromID, islandToID = islandToID, count = count, gold = gold, pegasus = IsPegusus, changeOwner = (deffencePlayerID != playerID) }; return uow; } else { ArmyFightCM armyFight = new ArmyFightCM() { AttackIslandID = islandFromID, AttackCount = count, AttackPlayerID = playerID, AttackRetreateAvalible = context.map.CanPlayerRetreatFromIsland(islandToID, playerID), DefenceIslandID = islandToID, DefenceCount = defenceCount, DefencePlayerID = deffencePlayerID, DefenceFortressCount = context.map.GetBuildCountAtIsland(islandToID, Build.Mars, true), DefenceRetreateAvalible = context.map.CanPlayerRetreatFromIsland(islandToID, deffencePlayerID), IsMinotaurus = isMinotaurus }; UnitOfWork uow = new UOW_Fight() { playerID = playerID, islandFromID = islandFromID, islandToID = islandToID, count = count, gold = gold, pegasus = IsPegusus, armyFight = armyFight }; return uow; } }