예제 #1
0
        public Effect(EffectDescription pDescription, Player pPlayer)
        {
            Direction = pDescription.direction;
            Item      = pDescription.item;
            Inventor  = pDescription.Inventor;

            switch (pDescription.direction)
            {
            case "get": Dir = EffectDirection.Get; break;

            case "drop": Dir = EffectDirection.Drop; break;

            default: Logger.Warn("Wrong effect direction"); break;
            }

            switch (pDescription.item)
            {
            case "coin": It = EffectItem.Coin; break;

            case "spy": It = EffectItem.Spy; break;

            case "invention": It = EffectItem.Invention; break;

            default: Logger.Warn("Wrong effect item"); break;
            }

            switch (pDescription.count)
            {
            case "spy":
                Count = pPlayer.GetSpyCount();
                break;

            case "invented":
                Count = pPlayer.GetPlayedInventionsCount();
                break;

            case "inventions":
                Count = pPlayer.GetInventionsCount();
                break;

            default:
                decimal n = 0;
                if (!decimal.TryParse(pDescription.count, out n))
                {
                    Logger.Warn("Wrong effect count");
                }

                Count = (int)n;
                break;
            }
        }
예제 #2
0
        public bool PrepareEffect()
        {
            CurrentEffect = null;

            if (EffectQueue.Count > 0)
            {
                EffectDescription effDesc = null;
                lock (EffectQueue)
                {
                    effDesc = EffectQueue.Dequeue();
                }
                var eff = new Effect(effDesc, this);
                CurrentEffect = eff;
                Console.WriteLine($"{Name} должен {effDesc.direction} {eff.Count} {effDesc.item}");
            }

            return(true);
        }