private BudgetGlobalImpact GenerateGlobalImpact() { BudgetGlobalImpact globalImpact = new BudgetGlobalImpact(); foreach (BudgetComponent bc in _budgetComponents) { BudgetWorldValues impact; if (!bc.impacts.Contains(EWorldImpactType.None)) { foreach (EWorldImpactType e in bc.impacts.ToArray()) { impact = _impactsDatabase[e]; globalImpact.cleanliness += impact.cleanliness.val + (bc.budget * impact.cleanliness.multiplicator); globalImpact.economy += impact.economy.val + (bc.budget * impact.economy.multiplicator); globalImpact.forest += impact.forest.val + (bc.budget * impact.forest.multiplicator); globalImpact.npc += impact.npc.val + (bc.budget * impact.npc.multiplicator); bc.PassAYear(); } } } foreach (KeyValuePair <EWorldImpactType, int> bonus in _bonusValues) { BudgetWorldValues impact = _impactsDatabase[bonus.Key]; for (int i = 0; i < bonus.Value; i++) { globalImpact.cleanliness += impact.cleanliness.val; globalImpact.economy += impact.economy.val; globalImpact.forest += impact.forest.val; globalImpact.npc += impact.npc.val; } } return(globalImpact); }
public static void NewYear(BudgetGlobalImpact globalImpact) { globalImpact.forest += I_STATE_FOREST; globalImpact.cleanliness += I_STATE_CLEANLINESS; globalImpact.npc += I_STATE_NPC; globalImpact.economy += I_STATE_ECONOMY; ApplyImpact(globalImpact); Events.Instance.Raise(new OnChangeGauges()); }
public static void ApplyImpact(BudgetGlobalImpact values) { float lForest = STATE_FOREST; float lEconomy = STATE_ECONOMY; float lNpc = STATE_NPC; float lClean = STATE_CLEANLINESS; STATE_FOREST = Mathf.Clamp(values.forest - (lEconomy / 3f), -3f, 3f); STATE_CLEANLINESS = Mathf.Clamp(values.cleanliness + ((lForest - lEconomy) / 3f), -3f, 3f); STATE_NPC = Mathf.Clamp(values.npc + (lEconomy / 3f) + (1.5f * Mathf.Log(3.2f + lClean)) - 2f, -3f, 3f); STATE_ECONOMY = Mathf.Clamp(values.economy + (lNpc / 2f), -3f, 3f); }
public void UpdateBudget() { BudgetGlobalImpact fullImpact = GenerateGlobalImpact(); WorldValues.NewYear(fullImpact); }