public void Execute() { foreach (var flatmate in flatmates.GetEntities()) { float totalDirtyness = 0; Dictionary <int, AIRoom> aiRooms = new Dictionary <int, AIRoom>(); foreach (var room in rooms) { totalDirtyness += room.dirtLevel.value; aiRooms.Add(room.roomId.value, new AIRoom(room.roomType.room, room.dirtLevel.value, room.roomId.value)); } List <AIFlatmate> aIFlatmates = new List <AIFlatmate>(); foreach (var busyFlatmate in busyFlatmates) { aIFlatmates.Add(new AIFlatmate(busyFlatmate.activeAction.value, busyFlatmate.currentRoom.roomId)); } State s = new State(flatmate.motivation.value, flatmate.fun.value, flatmate.opinion.value, totalDirtyness, flatmate.aIBehaviour.value, flatmate.currentRoom.roomId, aiRooms, aIFlatmates); AIDecisionService.decideNextAction(s, flatmate.id.value); flatmate.isAIDeciding = true; } }
public void Execute() { foreach (var flatmate in flatmates.GetEntities()) { if (AIDecisionService.hasResult(flatmate.flatmateId.value)) { var nextAction = AIDecisionService.popResult(flatmate.flatmateId.value); if (nextAction == null) { flatmate.isAIDeciding = false; return; } if (nextAction.room != flatmate.currentRoom.roomId) { command.CreateEntity().AddEnterRoomCommand(nextAction.room, flatmate.flatmateId.value); } command.CreateEntity().AddStartActionCommand(nextAction.action, flatmate.flatmateId.value, nextAction.action.DefaultLength - 1 + 2 * (float)rnd.NextDouble()); flatmate.isAIDeciding = false; } } }