Skip to content

Commit c9f1902

Browse files
committed
Added adv research cost scaling and general cost scaling
1 parent dfb6147 commit c9f1902

5 files changed

Lines changed: 60 additions & 4 deletions

File tree

HarmonyDetours.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,13 @@ static void Postfix(Verse.ResearchProjectDef __instance, ref float __result, Tec
7474
__result = Mathf.Min(__result, 2);
7575
}
7676

77-
7877
if (TechAdvancing_Config_Tab.configCheckboxMakeHigherResearchesSuperExpensive == 1)
7978
{
80-
__result *= (float)(10 * Math.Pow(2, num));
79+
__result *= (float)(TechAdvancing_Config_Tab.configCheckboxMakeHigherResearchesSuperExpensiveFac * Math.Pow(2, num));
8180
}
8281
}
82+
83+
__result *= TechAdvancing_Config_Tab.ConfigChangeResearchCostFacAsFloat();
8384
}
8485
}
8586

1.5 KB
Binary file not shown.

TechAdvancing/Languages/English/Keyed/English.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@
5151
<config_menu_button_research_project_settings>Project Settings</config_menu_button_research_project_settings>
5252

5353
<configCheckboxMakeHigherResearchesSuperExpensive>Make research projects much more expensive if they are more advanced than your faction.</configCheckboxMakeHigherResearchesSuperExpensive>
54+
<configCheckboxMakeHigherResearchesSuperExpensiveFac>Use the following base multiplier for the above setting: (current factor: x{0})</configCheckboxMakeHigherResearchesSuperExpensiveFac>
55+
<configChangeResearchCostFac>Scale the cost of all research projects by following value: (current factor: x{0})</configChangeResearchCostFac>
5456
<configWordTechlevel>Techlevel</configWordTechlevel>
5557

5658

TechAdvancing/Languages/German/Keyed/German.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
<configResultingTechLvl>Resultierendes Technologielevel:</configResultingTechLvl>
2727
<configCheckboxNeedTechColonists>Falls diese Option aktiviert ist kann dein Technologielevel die Stufe '{0}' \nnicht überschreiten falls deine Kolonie nur aus Stammesmitgliedern besteht</configCheckboxNeedTechColonists>
2828
<configCheckboxNeedTechColonists_CappedAt>Da die obere Option aktiviert ist, wird das Technologielevel auf '{0}' begrenzt, \nbis sich dir eine Person anschließt deren Fraktion ein höheres Technologielevel besitzt.</configCheckboxNeedTechColonists_CappedAt>
29-
<configCheckboxDisableCostMultiplicatorCap>Entfernen der 200%-Begrenzung bei der Berechnung des Forschungsmalus beim Forschen an fortgeschrittenen Technologien\n(wie in A18 und zuvor).</configCheckboxDisableCostMultiplicatorCap>
29+
<configCheckboxDisableCostMultiplicatorCap>Entfernen der 200%-Begrenzung bei der Berechnung des Forschungsmalus für fortgeschrittene Technologien (wie in A18 und zuvor).</configCheckboxDisableCostMultiplicatorCap>
3030

3131
<newTechLevelMedievalCapRemLetterTitle>Fortgeschrittene Technologielevel freigeschaltet</newTechLevelMedievalCapRemLetterTitle>
3232
<newTechLevelMedievalCapRemLetterContents>Dein(e) {0} hat gerade ein Mitglied dazugewonnen welches an fortschrittliche Technologielevel gewöhnt ist. Nun sind alle Technologielevel freigeschaltet. Weiter so!</newTechLevelMedievalCapRemLetterContents>
@@ -51,6 +51,8 @@
5151
<config_menu_button_research_project_settings>Projekt Einstellungen</config_menu_button_research_project_settings>
5252

5353
<configCheckboxMakeHigherResearchesSuperExpensive>Erhöhe die Entwicklungskosten von Projekten die dein Technologielevel überschreiten um ein vielfaches.</configCheckboxMakeHigherResearchesSuperExpensive>
54+
<configCheckboxMakeHigherResearchesSuperExpensiveFac>Verwende folgenden Multiplikator für die obere Einstellung: (aktueller Faktor: x{0})</configCheckboxMakeHigherResearchesSuperExpensiveFac>
55+
<configChangeResearchCostFac>Vervielfache die Entwicklungskosten aller Forschungsprojekte mittels folgendem Wert: (aktueller Faktor: x{0})</configChangeResearchCostFac>
5456
<configWordTechlevel>Technologielevel</configWordTechlevel>
5557

5658

TechAdvancing_Config_Tab.cs

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,32 @@ public class TechAdvancing_Config_Tab : Window
5555
public static int configCheckboxMakeHigherResearchesSuperExpensive { get => b_configCheckboxMakeHigherResearchesSuperExpensive ? 1 : 0; set => b_configCheckboxMakeHigherResearchesSuperExpensive = value == 1; }
5656
public static bool b_configCheckboxMakeHigherResearchesSuperExpensive = false;
5757

58+
[ConfigTabValueSaved("configCheckboxMakeHigherResearchesSuperExpensiveFac")]
59+
public static int configCheckboxMakeHigherResearchesSuperExpensiveFac { get; set; } = 10;
60+
61+
[ConfigTabValueSaved("configChangeResearchCostFac")]
62+
public static int configChangeResearchCostFac { get; set; } = 100; // 100 equals to a factor of x1
63+
public static float ConfigChangeResearchCostFacAsFloat()
64+
{
65+
var scaled = configChangeResearchCostFac * 0.01f;
66+
67+
if (scaled < 1) // e.g. 0.99
68+
{
69+
return (float)Math.Round(scaled, 3);
70+
}
71+
else if (scaled < 10) // e.g. 9.99
72+
{
73+
return (float)Math.Round(scaled, 2);
74+
}
75+
else if (scaled < 100) // e.g. 99.9
76+
{
77+
return (float)Math.Round(scaled, 1);
78+
}
79+
else // e.g. 100 and above
80+
{
81+
return (float)Math.Round(scaled, 0);
82+
}
83+
}
5884

5985
private static readonly Dictionary<string, object> oldCfgValues = new Dictionary<string, object>();
6086

@@ -191,9 +217,34 @@ public override void DoWindowContents(Rect canvas)
191217

192218

193219
Widgets.CheckboxLabeled(new Rect(canvas.x, drawpos, Verse.Text.CalcSize("configCheckboxMakeHigherResearchesSuperExpensive".Translate()).x + 40f, 40f), "configCheckboxMakeHigherResearchesSuperExpensive".Translate() + "\n", ref b_configCheckboxMakeHigherResearchesSuperExpensive, false);
220+
AddSpace(ref drawpos, 40f);
221+
if (b_configCheckboxMakeHigherResearchesSuperExpensive)
222+
{
223+
int slider1ToCfg(float x) => x < 10 ? (int)x : (int)(x * x / 10);
224+
float cfgToSlider1(float x) => x < 10 ? x : (float)Math.Sqrt(10 * x);
225+
226+
configCheckboxMakeHigherResearchesSuperExpensiveFac = slider1ToCfg(Widgets.HorizontalSlider(new Rect(canvas.x, drawpos, this.windowRect.width - 40f, 40f), cfgToSlider1(configCheckboxMakeHigherResearchesSuperExpensiveFac), 1, 100f,
227+
label: "configCheckboxMakeHigherResearchesSuperExpensiveFac".Translate(configCheckboxMakeHigherResearchesSuperExpensiveFac), roundTo: 1f));
228+
}
194229

195-
196230
AddSpace(ref drawpos, 40f);
231+
int slider2ToCfg(float x) => x < 50 ? (int)(x / 2) : (int)(x * x / 100);
232+
float cfgToSlider2(float x) => x < 25 ? x * 2 : (float)(Math.Sqrt(x) * 10);
233+
234+
float val = ConfigChangeResearchCostFacAsFloat();
235+
string s;
236+
if (val < 100)
237+
{
238+
var s2 = val.ToString();
239+
s = (s2 + (s2.Contains('.') ? "" : ".")).PadRight(4, '0');
240+
}
241+
else
242+
{
243+
s = val.ToString();
244+
}
245+
246+
configChangeResearchCostFac = slider2ToCfg(Widgets.HorizontalSlider(new Rect(canvas.x, drawpos, this.windowRect.width - 40f, 40f), cfgToSlider2(configChangeResearchCostFac), 2, 1000f,
247+
label: "configChangeResearchCostFac".Translate(s), roundTo: 1f));
197248
}
198249
break;
199250

0 commit comments

Comments
 (0)