diff --git a/SpriteFontPlus/src/obj/Debug/net45/.NETFramework,Version=v4.5.AssemblyAttributes.cs b/SpriteFontPlus/src/obj/Debug/net45/.NETFramework,Version=v4.5.AssemblyAttributes.cs
--- a/SpriteFontPlus/src/obj/Debug/net45/.NETFramework,Version=v4.5.AssemblyAttributes.cs
+++ b/SpriteFontPlus/src/obj/Debug/net45/.NETFramework,Version=v4.5.AssemblyAttributes.cs
@@ -1,4 +1,4 @@
-//
-using System;
-using System.Reflection;
+//
+using System;
+using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")]
diff --git a/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csproj.CoreCompileInputs.cache b/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csproj.CoreCompileInputs.cache
--- a/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csproj.CoreCompileInputs.cache
+++ b/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csproj.CoreCompileInputs.cache
@@ -1,1 +1,1 @@
-7bbcd971441293d3543e03c61356b4763d0b75e2
+e3914796b5fae6ebfb8f4168aa490143cbdf1c22
diff --git a/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csproj.FileListAbsolute.txt b/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csproj.FileListAbsolute.txt
--- a/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csproj.FileListAbsolute.txt
+++ b/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csproj.FileListAbsolute.txt
@@ -1,48 +1,4 @@
-/Users/alys/repos/fna-tutorial/SpriteFontPlus/src/bin/FNA/Debug/net45/FNA.dll.config
-/Users/alys/repos/fna-tutorial/SpriteFontPlus/src/bin/FNA/Debug/net45/SpriteFontPlus.dll
-/Users/alys/repos/fna-tutorial/SpriteFontPlus/src/bin/FNA/Debug/net45/SpriteFontPlus.pdb
-/Users/alys/repos/fna-tutorial/SpriteFontPlus/src/bin/FNA/Debug/net45/FNA.dll
-/Users/alys/repos/fna-tutorial/SpriteFontPlus/src/bin/FNA/Debug/net45/FNA.pdb
-/Users/alys/repos/fna-tutorial/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csprojAssemblyReference.cache
-/Users/alys/repos/fna-tutorial/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.AssemblyInfoInputs.cache
-/Users/alys/repos/fna-tutorial/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.AssemblyInfo.cs
-/Users/alys/repos/fna-tutorial/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csproj.CoreCompileInputs.cache
-/Users/alys/repos/fna-tutorial/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csproj.CopyComplete
-/Users/alys/repos/fna-tutorial/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.dll
-/Users/alys/repos/fna-tutorial/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.pdb
-/Users/alys/repos/fna-pong/SpriteFontPlus/src/bin/FNA/Debug/net45/FNA.dll.config
-/Users/alys/repos/fna-pong/SpriteFontPlus/src/bin/FNA/Debug/net45/SpriteFontPlus.dll
-/Users/alys/repos/fna-pong/SpriteFontPlus/src/bin/FNA/Debug/net45/SpriteFontPlus.pdb
-/Users/alys/repos/fna-pong/SpriteFontPlus/src/bin/FNA/Debug/net45/FNA.dll
-/Users/alys/repos/fna-pong/SpriteFontPlus/src/bin/FNA/Debug/net45/FNA.pdb
-/Users/alys/repos/fna-pong/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csprojAssemblyReference.cache
-/Users/alys/repos/fna-pong/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.AssemblyInfoInputs.cache
-/Users/alys/repos/fna-pong/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.AssemblyInfo.cs
-/Users/alys/repos/fna-pong/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csproj.CoreCompileInputs.cache
-/Users/alys/repos/fna-pong/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csproj.CopyComplete
-/Users/alys/repos/fna-pong/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.dll
-/Users/alys/repos/fna-pong/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.pdb
-/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/bin/FNA/Debug/net45/FNA.dll.config
-/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/bin/FNA/Debug/net45/SpriteFontPlus.dll
-/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/bin/FNA/Debug/net45/SpriteFontPlus.pdb
-/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/bin/FNA/Debug/net45/FNA.dll
-/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/bin/FNA/Debug/net45/FNA.pdb
/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csprojAssemblyReference.cache
-/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csproj.CoreCompileInputs.cache
/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.AssemblyInfoInputs.cache
/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.AssemblyInfo.cs
-/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csproj.CopyComplete
-/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.dll
-/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.pdb
-/Users/alys/repos/isometric-park-fna/SpriteFontPlus/src/bin/FNA/Debug/net45/FNA.dll.config
-/Users/alys/repos/isometric-park-fna/SpriteFontPlus/src/bin/FNA/Debug/net45/SpriteFontPlus.dll
-/Users/alys/repos/isometric-park-fna/SpriteFontPlus/src/bin/FNA/Debug/net45/SpriteFontPlus.pdb
-/Users/alys/repos/isometric-park-fna/SpriteFontPlus/src/bin/FNA/Debug/net45/FNA.dll
-/Users/alys/repos/isometric-park-fna/SpriteFontPlus/src/bin/FNA/Debug/net45/FNA.pdb
-/Users/alys/repos/isometric-park-fna/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csprojAssemblyReference.cache
-/Users/alys/repos/isometric-park-fna/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.AssemblyInfoInputs.cache
-/Users/alys/repos/isometric-park-fna/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.AssemblyInfo.cs
-/Users/alys/repos/isometric-park-fna/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csproj.CoreCompileInputs.cache
-/Users/alys/repos/isometric-park-fna/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csproj.CopyComplete
-/Users/alys/repos/isometric-park-fna/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.dll
-/Users/alys/repos/isometric-park-fna/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.pdb
+/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csproj.CoreCompileInputs.cache
diff --git a/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csprojAssemblyReference.cache b/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csprojAssemblyReference.cache
index 73f94effcb2041082426754fa6e667b7fb095833..2ab36166f736c5c0d5448b33808d7cd4bcbef451
GIT binary patch
literal 6939
zc%1E7YitzP6`q-W&Kg*UBs>BnYeEPFd)5Z8d0ND*<6s^JY+flCb9eXd?!@!h%)_ot
z0TYl&`lCc4iIk|7B1Pm!9<*vBMQZ<<%mgY~)grb(4L~=o$|a&vEsDki;y4Y$O+9>&NG8=8CcuP34bcTQ
z_#Q1MDnzRExv_7<*11R{2;x3G38BEp1@V?oKlHL;NGvE2+%(ZC!?KOou>pSJ2#8fl
zQ`eG`m`Td2q9)sgR0}DINgJ(OBcq~H5OR_fj)L`yX{`^-l4Z$*WyiFZ{ib4wG8G1>
zCK5>;Cm2PmZw&fAHf>+b6U!8R*fgza?;ZgIp-~;jKPbU8MA;_R`+?(eR=Jt
z$$D1R;I3sCpOF=Yd6%d>XPGz77_V+(5X%&^CNZrkST%<2?BM64xF5v>C>}(y0L4NS
zi%={^@eqn7D3*cp>0upbrXJFa5vp-{1(KZO
zIEIflPemRmLYn72PGw8i#pyj@bnf??n$BQMPtpD+l0F6f3MKu>50Ko>qdGEA&0J
zzefYSQB@lbKaPtCySP>WS2^K*sFrrMqg_%<`-G!iT1&ge85+!-S;Y#WLPer?^#v8U
z&y|J)rC}ogV-m_sq@YK#C6j2`BHE;TxvUt0lVX=t;K9Ty;YKv8=4b{gcVw83m58W?
zh(2Iw5m6t&N5!yb$?O6UUX*3iT7#k*l}V{Ya||1a;EKfr0vw0Fa4g478Hi|8YA%6y+^<+RJ`Y*_N}@5wvewLG!_6S)RWCPu3x-`l
zkwhDN^T3|Q#qRg8owz%`h!YvX)plrz!PSfjehy&&n;TV_td%L@wb1OVc4=~B(~i5E
zyV=(uHjCwHnH9Hncs;oy@a-6`6pD_iF=IaiH!*J3oloK9b9+w)WH&;ydlKhvh^}8x
zQrT2T+s1Y6v~|Nqi|8X2qMMk>EmO^PpWlqEx1i|sQ2*FX{Yo|UC!rad4!K^=Br48y
zfoyPXMEGq;JB^~-!~J(|?!T?({xmdwE}(i*ZK_b+4l*&*Mu_i4>N`;E^zi?{&Hp#m
z{QIEE&V*hsr<~F82~1!t!))L?u?saN)n<(RxoyGu<8b9z2ftOD2`!Y
zT$`t?A@~9k9@Y55w0~5)vOePW>K{4uK`GT9}`D&Kq
z(Dc@|{={)V@}@O+U>XG{80Hn^iSuFw4q#Us6GVnA6ZylfLsu_f`}!^6+&l5hx99%r
z`t4_LTsZ$tU_?5*>-Co({`Ka6zH#l#KVSLF8((zX-^9Jtpl$i@#H**T{%y4J!Y7f@
zJ*%&;o%iy;LpT0@z3HP%|G9oMcXZdBi&x%#ebr#5`5oH4?A9MUjX|~LA2&}O`(^y<
zYn>~X{&aqtE=tHBU2Na|qc1MT1$%mNzuG!<`o1q?n^@dI;gk(B)khpR42^a{unxx}
zo^n7w96x$+ar<9iWIOyoHv58X@ql#tfo$^yNqa!L{XlwsL3VgRcKU(r^#$4I0qOSx
zIb@%3@x#s;`;2XjZ<
zcfSE@9B(^vWHteBPW*qrfesFyu(OyA|AcWZt1}e8=5gPuOFUIK<5zVHz92;p
zi0B8R_=2b&kdhyW=?gOA0U7lJIq5MyMSfDoR{h6kqiqAU!6n4?-hHHcQAR$1zS
Ll2`s9%{F`oat&E{
diff --git a/isometric-park-fna/Components/TreeDeltaComponent.cs b/isometric-park-fna/Components/TreeDeltaComponent.cs
--- a/isometric-park-fna/Components/TreeDeltaComponent.cs
+++ b/isometric-park-fna/Components/TreeDeltaComponent.cs
@@ -1,33 +1,35 @@
using Encompass;
+using isometricparkfna.Utils;
+
namespace isometricparkfna.Components
{
public struct TreeDeltaComponent : IComponent
{
- public int deltaTrees;
+ public Fact deltaTrees;
public string deltaTreesName
{
get
{
- if (deltaTrees <= -18)
+ if (deltaTrees.Value <= -18)
{
return "Unsustainable";
}
- else if (MathUtils.BetweenExclusive(deltaTrees, -18, -6))
+ else if (MathUtils.BetweenExclusive(deltaTrees.Value, -18, -6))
{
return "Moderately unsustainable";
}
- else if (MathUtils.Between(deltaTrees, -6, 0))
+ else if (MathUtils.Between(deltaTrees.Value, -6, 0))
{
return "Somewhat unsustainable";
}
- else if (deltaTrees == 0)
+ else if (deltaTrees.Value == 0)
{
return "Break even";
}
- else if (deltaTrees > 0)
+ else if (deltaTrees.Value > 0)
{
return "Restoration";
}
diff --git a/isometric-park-fna/Engines/SimulationBridgeEngine.cs b/isometric-park-fna/Engines/SimulationBridgeEngine.cs
--- a/isometric-park-fna/Engines/SimulationBridgeEngine.cs
+++ b/isometric-park-fna/Engines/SimulationBridgeEngine.cs
@@ -114,7 +114,7 @@
{
var removed = 0;
var tree_squares = area.squares.Where((square) => simulation.map.cells[(int)square.X][(int)square.Y].hasTree);
- var to_remove = -delta.deltaTrees;
+ var to_remove = -delta.deltaTrees.Value;
//calculate the probability in order to get the expected number of removed trees
var expected = to_remove;
diff --git a/isometric-park-fna/Engines/Spawners/ContractSpawner.cs b/isometric-park-fna/Engines/Spawners/ContractSpawner.cs
--- a/isometric-park-fna/Engines/Spawners/ContractSpawner.cs
+++ b/isometric-park-fna/Engines/Spawners/ContractSpawner.cs
@@ -12,6 +12,7 @@
using isometricparkfna.Messages;
using isometricparkfna.Components;
+using isometricparkfna.Utils;
namespace isometricparkfna.Spawners {
@@ -210,7 +211,7 @@
AddComponent(contract, nameAndDescription);
AddComponent(contract, new SelectedComponent { selected = false });
AddComponent(contract, new ContractStatusComponent { status = ContractStatus.Proposed, date = this.simulation.DateTime });
- AddComponent(contract, new TreeDeltaComponent { deltaTrees = deltaTrees });
+ AddComponent(contract, new TreeDeltaComponent { deltaTrees = new Fact(deltaTrees) });
AddComponent(contract, new BudgetLineComponent
{
category = "Contracts",
diff --git a/isometric-park-fna/UI/DebugWindow.cs b/isometric-park-fna/UI/DebugWindow.cs
--- a/isometric-park-fna/UI/DebugWindow.cs
+++ b/isometric-park-fna/UI/DebugWindow.cs
@@ -271,7 +271,7 @@
{
ImGui.PlotLines("Frame Rate", ref debugInfo.pastFps[0], debugInfo.pastFps.Length);
}
-
+
foreach (string k in additionalInfo.Keys)
{
diff --git a/isometric-park-fna/UI/Widgets.cs b/isometric-park-fna/UI/Widgets.cs
new file mode 100644
--- /dev/null
+++ b/isometric-park-fna/UI/Widgets.cs
@@ -0,0 +1,61 @@
+using System; //FYI, this is where IntPtr comes from
+
+using ImGuiNET;
+using Num = System.Numerics;
+
+namespace isometricparkfna.UI
+{
+
+ public static class Widgets
+ {
+//Relatively thin wrappers over common ImGui idioms
+#region basic_elements
+ public static void Tooltip(string text, Num.Vector2 relative_position)
+ {
+ if (ImGui.IsItemHovered())
+ {
+ var rect = ImGui.GetItemRectMax();
+ ImGui.SetNextWindowPos(rect + relative_position );
+ ImGui.BeginTooltip();
+ ImGui.Text(text);
+ ImGui.EndTooltip();
+ }
+ }
+
+ public static void Tooltip(string text)
+ {
+ Widgets.Tooltip(text, new Num.Vector2(15, 0));
+ }
+
+ public static void Indicator(string text, Num.Vector4 color)
+ {
+ var dimensions = ImGui.CalcTextSize(text);
+
+ ImGui.PushStyleColor(ImGuiCol.Text, color);
+ //Found through trial and error:
+ ImGui.SetCursorPosX(ImGui.GetCursorPosX() -(dimensions.X + 10));
+ ImGui.Text(text);
+ ImGui.PopStyleColor();
+ }
+
+ public static void MapImage(ImGuiImageMap map, Num.Vector2 size, int image_index)
+ {
+ ImGui.Image(map.ImGuiTexture, size, map.GetSourceUVStart(image_index), map.GetSourceUVEnd(image_index), Num.Vector4.One, Num.Vector4.Zero); // Here, the previously loaded texture is used
+
+ }
+#endregion
+
+//Widgets that are made up of the components defined above
+#region composite_widgets
+
+ public static void MapImageTooltip(ImGuiImageMap map, Num.Vector2 size, int image_index, string tooltip)
+ {
+ ImGui.Image(map.ImGuiTexture, size, map.GetSourceUVStart(image_index), map.GetSourceUVEnd(image_index), Num.Vector4.One, Num.Vector4.Zero); // Here, the previously loaded texture is used
+
+ Widgets.Tooltip(tooltip, Num.Vector2.Zero);
+
+ }
+
+#endregion
+ }
+}
diff --git a/isometric-park-fna/Utils/Fact.cs b/isometric-park-fna/Utils/Fact.cs
new file mode 100644
--- /dev/null
+++ b/isometric-park-fna/Utils/Fact.cs
@@ -0,0 +1,20 @@
+
+using System;
+namespace isometricparkfna.Utils
+{
+ public struct Fact
+ {
+ public T Value;
+
+ public bool Known {get;}
+ public bool Aware {get;}
+
+ public Fact(T value)
+ {
+ this.Value = value;
+ this.Known = true;
+ this.Aware = true;
+ }
+
+ }
+}
diff --git a/isometric-park-fna/isometric-park-fna.csproj b/isometric-park-fna/isometric-park-fna.csproj
--- a/isometric-park-fna/isometric-park-fna.csproj
+++ b/isometric-park-fna/isometric-park-fna.csproj
@@ -58,6 +58,8 @@
+
+