// TODO remove private StatsDifference NewDifferenceWithMyFoodValue(int value) { var result = new StatsDifference(); result.SetMyFood(value); return(result); }
private void Update() { StatsDifference effect = Effect.Effect; foreach (var indicator in new KeyValuePair <StateIndicator, StateItemType>[] { new KeyValuePair <StateIndicator, StateItemType> (MyEnergy, StateItemType.MyEnergy), new KeyValuePair <StateIndicator, StateItemType> (MyMaxEnergy, StateItemType.MyMaxEnergy), new KeyValuePair <StateIndicator, StateItemType> (MyFood, StateItemType.MyFood), new KeyValuePair <StateIndicator, StateItemType> (MyHappiness, StateItemType.MyHappiness), new KeyValuePair <StateIndicator, StateItemType> (MyHealth, StateItemType.MyHealth), new KeyValuePair <StateIndicator, StateItemType> (FamilyFood, StateItemType.FamilyFood), new KeyValuePair <StateIndicator, StateItemType> (FamilyHappiness, StateItemType.FamilyHappiness), new KeyValuePair <StateIndicator, StateItemType> (FamilyHealth, StateItemType.FamilyHealth) }) { // TODO display values push down? indicator.Key.UpdateValue( State.State.GetStateItemValue <float>(indicator.Value.ToString()), Mathf.CeilToInt(State.State.GetStateItemValue <float>(indicator.Value.ToString())), effect.GetStat(indicator.Value.ToString())); // TODO special indicator for MyEnergy MyEnergy.UpdateValue(State.State.GetStateItemValue <float>(StateItemType.MyEnergy.ToString()), Mathf.CeilToInt(State.State.GetStateItemValue <float>(StateItemType.MyEnergy.ToString())), effect.GetStat(StateItemType.MyEnergy.ToString()), State.State.GetStateItemValue <float>(StateItemType.MyMaxEnergy.ToString())); } }
void Update() { StatsDifference effect = Effect.Effect; Money.text = State.State.GetStateItemValue <int>(StateItemType.Money.ToString()) + EffectSuffixCreator.Create(effect.GetStat(StateItemType.Money.ToString())); MoneyPerWorkshift.text = Mathf.FloorToInt(State.State.GetStateItemValue <int>(StateItemType.MySalary.ToString())) + EffectSuffixCreator.Create(effect.GetStat(StateItemType.MySalary.ToString())); MoneyPerPartnersWorkshift.text = Mathf.FloorToInt(State.State.GetStateItemValue <int>(StateItemType.PartnerSalary.ToString())) + EffectSuffixCreator.Create(effect.GetStat(StateItemType.PartnerSalary.ToString())); FoodSupplies.text = Mathf.FloorToInt(State.State.GetStateItemValue <int>(StateItemType.FoodSupplies.ToString())) + EffectSuffixCreator.Create(effect.GetStat(StateItemType.FoodSupplies.ToString())); Age.text = Mathf.FloorToInt(State.State.GetStateItemValue <float>(StateItemType.Age.ToString())).ToString(); }
private void UpdateStatsOneTime(StatsDifference difference, StateAction action) { foreach (var item in _items.Values) { if (ShouldItemBeUpdated(item)) { item.ApplyDifferenceByAction(difference, action); } } }
public override void ApplyDifferenceByAction(StatsDifference difference, StateAction action, float multiplier = 1) { base.ApplyDifferenceByAction(difference, action, multiplier); // TODO aaaaargh ugly comparison of objects to find out if it's after-action difference! // maybe create methods UpdateBeforeAction and UpdateAfterAction in StateItem and make default implementation the same, just override it in money case if (action.IsWorkAction() && difference == action.GetEffectAfter()) { Value += action.IsPartnersAction() ? _getPartnerSalary() : _getPlayerSalary(); } }
public void Plus(StatsDifference difference) { MyEnergy += difference.MyEnergy; MyMaxEnergy += difference.MyMaxEnergy; MyFood += difference.MyFood; MyHappiness += difference.MyHappiness; MyHealth += difference.MyHealth; FamilyFood += difference.FamilyFood; FamilyHappiness += difference.FamilyHappiness; FamilyHealth += difference.FamilyHealth; Money += difference.Money; FoodSupplies += difference.FoodSupplies; MoneyPerWorkshift += difference.MoneyPerWorkshift; MoneyPerPartnersWorkshift += difference.MoneyPerPartnersWorkshift; }
private StatsDifference CreateSummaryEffect(StateAction action) { StatsDifference result = new StatsDifference(); var differences = new[] { action.GetEffectBefore(), action.GetEffectDuring(), action.GetEffectAfter() }; foreach (StatsDifference difference in differences) { result.Plus(difference); } if (action.GetName() == PlayerActionType.GoToWork.ToString()) { result.SetMoney(State.State.GetStateItemValue <int>(StateItemType.MySalary.ToString())); } if (action.GetName() == PlayerActionType.PartnerGoesToWork.ToString()) { result.SetMoney(State.State.GetStateItemValue <int>(StateItemType.PartnerSalary.ToString())); } return(result); }
public void ResetDifference() { m_Effect = new StatsDifference(); m_TimeToFinish = 0; }
protected override int GetDifferenceValue(StatsDifference difference) { return(difference.GetStat(GetName())); }
public override bool DifferenceHasZeroEffect(StatsDifference difference) { return(GetDifferenceValue(difference) == 0); }
public override void ApplyDifferenceByAction(StatsDifference difference, StateAction action, float multiplier = 1) { Value += GetDifferenceValue(difference); }
public virtual bool DifferenceHasZeroEffect(StatsDifference difference) { return(true); }
public virtual void ApplyDifferenceByAction(StatsDifference difference, StateAction action, float multiplier = 1) { ApplyDifferenceByActionCalled++; }
protected abstract T GetDifferenceValue(StatsDifference difference);
public abstract bool DifferenceHasZeroEffect(StatsDifference difference);
public abstract void ApplyDifferenceByAction(StatsDifference difference, StateAction action, float multiplier = 1);