public override bool OnMessage(MacWorker pMacWorker, Telegram msg) { switch (msg.Msg) { case (int)message_type_mac.Msg_BigTasty: { addItemToOrder(food_type.BigTasty); SendDebugMessage(pMacWorker.ID); return(true); } case (int)message_type_mac.Msg_CocaCola: { addItemToOrder(food_type.CocaCola); SendDebugMessage(pMacWorker.ID); return(true); } case (int)message_type_mac.Msg_Free: { addItemToOrder(food_type.Free); SendDebugMessage(pMacWorker.ID); return(true); } case (int)message_type_mac.Msg_IceCream: { addItemToOrder(food_type.IceCream); SendDebugMessage(pMacWorker.ID); return(true); } case (int)message_type_mac.Msg_EndOrder: { //sending a complete order to pMiner MessageDispatcher.Instance().DispatchMessage(SEND_MSG_IMMEDIATELY, pMacWorker.ID, pMacWorker.MinerID, (int)message_type_mac.Msg_EndOrder, new AdditionalInfo(order.Clone())); //start cooking pMacWorker.GetFSM().ChangeState(MacWorker_Cooking.Instance()); //sending order to the cooking state to know what to cook MessageDispatcher.Instance().DispatchMessage(SEND_MSG_IMMEDIATELY, pMacWorker.ID, pMacWorker.ID, (int)message_type_mac.Msg_EndOrder, new AdditionalInfo(order)); order = null; return(true); } } return(false); }
static void basicTimer_Elapsed(object sender, ElapsedEventArgs e) { if (currentUpdates < maxUpdates) { currentUpdates++; Clock.Instance().TimePassed(0.5); minerBob.Update(); MessageDispatcher.Instance().DispatchDelayedMessages(); } else { basicTimer.Stop(); } }
public override void Execute(MacWorker pMacWorker) { OrderItem CurrentDish; if (order != null) { CurrentDish = order.GetNextDish(); if (CurrentDish != null) { switch (CurrentDish.Type) { case food_type.BigTasty: Console.WriteLine("\n{0}: Обжариваю ароматное мясо для Биг тейсти, кладу его в булочку и заправляю " + "специальным фирменным соусом 'Биг тейсти'", EntityManager.Instance().GetNameOfEntity(pMacWorker.ID)); break; case food_type.CocaCola: Console.WriteLine("\n{0}: Наливаю кока-колу", EntityManager.Instance().GetNameOfEntity(pMacWorker.ID)); break; case food_type.Free: Console.WriteLine("\n{0}: Готовлю ароматную картошку 'фри'", EntityManager.Instance().GetNameOfEntity(pMacWorker.ID)); break; case food_type.IceCream: Console.WriteLine("\n{0}: Наполняю вафельный стаканчик мороженым", EntityManager.Instance().GetNameOfEntity(pMacWorker.ID)); break; } } else { //food is ready MessageDispatcher.Instance().DispatchMessage(SEND_MSG_IMMEDIATELY, pMacWorker.ID, pMacWorker.MinerID, (int)message_type_mac.Msg_FoodIsReady, null); //back to Hanging state pMacWorker.GetFSM().ChangeState(MacWorker_Hanging.Instance()); } } }
public override void Enter(Wife pWife) { //if not already cooking put the stew in the oven if (!pWife.Cooking) { Console.WriteLine(String.Format("\n{0}: Кладу стейк на сковородку", EntityManager.Instance().GetNameOfEntity(pWife.ID))); //send a delayed message to myself so that I know when to take the stew //out of the oven MessageDispatcher.Instance().DispatchMessage(0.99, pWife.ID, pWife.ID, (int)message_type.Msg_StewReady, null); pWife.SetCooking(true); } }
public override void Enter(Miner pMiner) { if (pMiner.Location != location_type.home) { Console.WriteLine(String.Format("\n{0}: Вухуу! Я уже достаточно богат. Возвращаюсь домой к моей женушке.", EntityManager.Instance().GetNameOfEntity(pMiner.ID))); pMiner.ChangeLocation(location_type.home); //pMiner.WifeChangeState(SleepWithHusband.Instance()); //let the wife know I'm home MessageDispatcher.Instance().DispatchMessage(SEND_MSG_IMMEDIATELY, //0 delay pMiner.ID, pMiner.WifeID, (int)message_type.Msg_HiHoneyImHome, null); } }
public override bool OnMessage(Wife pWife, Telegram msg) { switch (msg.Msg) { case (int)message_type.Msg_StewReady: { Debugger.Instance().WriteLine(String.Format("\nMessage received by {0} at time: {1}", EntityManager.Instance().GetNameOfEntity(pWife.ID), Clock.Instance().GetCurrentTime())); Console.WriteLine("\n{0}: Стейк готов! Пойдем кушать!", EntityManager.Instance().GetNameOfEntity(pWife.ID)); //let hubby know the stew is ready MessageDispatcher.Instance().DispatchMessage(SEND_MSG_IMMEDIATELY, pWife.ID, pWife.HusbandsId, (int)message_type.Msg_StewReady, null); pWife.ChangeState(DoHousework.Instance()); pWife.SetCooking(false); return(true); } } return(false); }
public override void Enter(Miner pMiner) { if (pMiner.Location != location_type.mac) { Console.WriteLine(String.Format("\n{0}: Я иду в МакДоналдс, еееу!", EntityManager.Instance().GetNameOfEntity(pMiner.ID))); pMiner.ChangeLocation(location_type.mac); } //creating order int iMaxOrderItems = 1 + pMiner.GetRand.Next(5); int iCurrentItem; //warning MacWorker about creating new order MessageDispatcher.Instance().DispatchMessage(SEND_MSG_IMMEDIATELY, pMiner.ID, pMiner.GetMcWorkerID, (int)message_type_mac.Msg_NewOrder, null); for (int i = 0; i < iMaxOrderItems; i++) { iCurrentItem = 3 + pMiner.GetRand.Next(4); MessageDispatcher.Instance().DispatchMessage(SEND_MSG_IMMEDIATELY, pMiner.ID, pMiner.GetMcWorkerID, iCurrentItem, null); //saying what is the current item to add in the order switch ((message_type_mac)iCurrentItem) { case (message_type_mac.Msg_BigTasty): { Console.WriteLine(String.Format("\n{0}: - Биг тейсти, пожалуйста", EntityManager.Instance().GetNameOfEntity(pMiner.ID))); break; } case (message_type_mac.Msg_CocaCola): { Console.WriteLine(String.Format("\n{0}: - Кока-колу", EntityManager.Instance().GetNameOfEntity(pMiner.ID))); break; } case (message_type_mac.Msg_Free): { Console.WriteLine(String.Format("\n{0}: - Картошку 'фри'", EntityManager.Instance().GetNameOfEntity(pMiner.ID))); break; } case (message_type_mac.Msg_IceCream): { Console.WriteLine(String.Format("\n{0}: - Мороженое в стаканчике", EntityManager.Instance().GetNameOfEntity(pMiner.ID))); break; } } } MessageDispatcher.Instance().DispatchMessage(SEND_MSG_IMMEDIATELY, pMiner.ID, pMiner.GetMcWorkerID, (int)message_type_mac.Msg_EndOrder, null); }