Exemple #1
0
        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);
        }
Exemple #2
0
 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();
     }
 }
Exemple #3
0
        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);
        }
Exemple #7
0
        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);
        }