public void NextTurn() { List <string> valuesThisTurn = new List <string>(); values.ForEach(v => valuesThisTurn.Add(v.ToString())); valuesThisTurn.Add("gloire:" + glory); valuesThisTurn.Add("finances:" + money); valuesLog.Add(valuesThisTurn); values.FindAll(v => v.Active != false).ForEach(p => p.Propagate()); values.ForEach(v => v.Update()); indicators.FindAll(i => i.Active != false && i.GloryAmount != null).ForEach(i => { money += i.MoneyImpacted; glory += i.GloryImpacted; }); policies.FindAll(p => p.Active != false && p.MoneyAmount < 0).ForEach(p => money -= p.MoneyImpacted); policies.FindAll(p => p.Active != false && p.MoneyAmount > 0).ForEach(p => money += p.MoneyImpacted); policies.FindAll(p => p.Active != false && p.GloryAmount > 0).ForEach(p => glory += p.GloryImpacted); perks.FindAll(p => p.Active == true).ForEach(p => { money += p.MoneyImpacted; glory += p.GloryImpacted; }); perks.FindAll(p => p.Active == false).ForEach(p => p.CheckActivation()); crises.FindAll(c => c.Active == true).ForEach(c => { money -= c.MoneyImpacted; glory -= c.GloryImpacted; }); crises.FindAll(c => c.Active == false).ForEach(c => c.CheckActivation()); turns++; if (turnsLeft > 0) { turnsLeft--; } if (crises.Exists(c => c.Result == IndexedValue.ResultType.Lose && c.Active == true) || money < 0) { GameControler.LoseDialog(crises.Find(c => c.Result == IndexedValue.ResultType.Lose && c.Active == true)); turnsLeft = 0; } else if (perks.Exists(p => p.Result == IndexedValue.ResultType.Win && p.Active == true)) { GameControler.WinDialog(); turnsLeft = 0; } }
public void DeactivatePolicy(IndexedValue val, out int mCost, out int gCost) { val.Deactivate(out mCost, out gCost); GameControler.DeactivatePolicyDialog(mCost, gCost); glory -= Math.Abs(gCost); }