Example #1
0
		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;
			}
		}
Example #2
0
		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;
			}
		}