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;
         }
     }
 }