예제 #1
0
        public override void Execute(Miner pMiner)
        {
            pMiner.IncreaseFatigue();
            pMiner.IncreaseHunger();

            if (pMiner.GoldInPockets > 0)
            {
                pMiner.DepositIntoTheBank(pMiner.GoldInPockets);
                Console.WriteLine(String.Format("\n{0}: Я положил {1} золота в банк. Теперь у меня всего в банке {2} золота",
                                                EntityManager.Instance().GetNameOfEntity(pMiner.ID), pMiner.GoldInPockets,
                                                pMiner.GoldInBank));
                pMiner.EmptyPockets();

                if (pMiner.Wealthy())
                {
                    pMiner.ChangeState(GoHomeAndSleepTilRested.Instance());
                    //pMiner.GetFSM().SetGlobalState(GoHomeAndSleepTilRested.Instance());
                }
                else
                {
                    pMiner.ChangeState(EnterMineAndDigForNugget.Instance());
                }
            }
            else
            {
                Console.WriteLine(String.Format("\n{0}: У меня нет золота с собой. Зачем я пришел в банк?",
                                                EntityManager.Instance().GetNameOfEntity(pMiner.ID)));
                pMiner.ChangeState(EnterMineAndDigForNugget.Instance());
            }
        }
예제 #2
0
        public static State <Miner> Instance()
        {
            if (instance == null)
            {
                instance = new EnterMineAndDigForNugget();
            }

            return(instance);
        }
예제 #3
0
        public override void Execute(Miner pMiner)
        {
            pMiner.IncreaseFatigue();
            pMiner.IncreaseHunger();

            Console.WriteLine(String.Format("\n{0}: О, этот могучий восхитительный ликер",
                                            EntityManager.Instance().GetNameOfEntity(pMiner.ID)));
            pMiner.SpendNugget();
            pMiner.CleanThirst();
            pMiner.ChangeState(EnterMineAndDigForNugget.Instance());
        }
예제 #4
0
        public override void Execute(Miner pMiner)
        {
            pMiner.IncreaseFatigue();

            Console.WriteLine(String.Format("\n{0}: ZZZZ...",
                                            EntityManager.Instance().GetNameOfEntity(pMiner.ID)));
            pMiner.Sleep();
            if (pMiner.Fatigue == 0)
            {
                pMiner.ChangeState(EnterMineAndDigForNugget.Instance());
                //pMiner.GetFSM().SetGlobalState(null);
            }
        }
예제 #5
0
        public override void Execute(Miner pMiner)
        {
            OrderItem CurrentDish = pMiner.GetNextDish();

            if (CurrentDish != null)
            {
                switch (CurrentDish.Type)
                {
                case food_type.BigTasty:
                {
                    Console.WriteLine(String.Format("\n{0}: Мммм, этот биг тейсти просто восхитителен!",
                                                    EntityManager.Instance().GetNameOfEntity(pMiner.ID)));
                    break;
                }

                case food_type.CocaCola:
                {
                    Console.WriteLine(String.Format("\n{0}: Пью кока-колу",
                                                    EntityManager.Instance().GetNameOfEntity(pMiner.ID)));
                    pMiner.CleanThirst();
                    break;
                }

                case food_type.Free:
                {
                    Console.WriteLine(String.Format("\n{0}: 'Фри' с сырным соусом. Ммм...",
                                                    EntityManager.Instance().GetNameOfEntity(pMiner.ID)));
                    break;
                }

                case food_type.IceCream:
                {
                    Console.WriteLine(String.Format("\n{0}: Мороженое как нельзя лучше охлаждает после изнурительной работы в шахте",
                                                    EntityManager.Instance().GetNameOfEntity(pMiner.ID)));
                    break;
                }
                }
            }
            else
            {
                //all dishes are over, change state
                Console.WriteLine(String.Format("\n{0}: Спасибо!",
                                                EntityManager.Instance().GetNameOfEntity(pMiner.ID)));
                pMiner.ClearOrder();
                pMiner.ResetHunger();
                pMiner.ChangeState(EnterMineAndDigForNugget.Instance());
            }
        }