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; } }
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); }