public MacWorker(int id, string name, Miner pMiner) : base(id, name) { m_StateMachine = new StateMachine <MacWorker>(this); m_StateMachine.SetCurrentState(MacWorker_Hanging.Instance()); m_miner = pMiner; }
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()); } } }