Description:
Add super basic Budget UI.
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r52:6014d57fc049 -

@@ -0,0 +1,96
1 using System;
2 using Microsoft.Xna.Framework;
3 using Microsoft.Xna.Framework.Graphics;
4 using Microsoft.Xna.Framework.Input;
5
6 namespace isometricparkfna
7 {
8 public class BudgetWindow
9 {
10 private Budget budget;
11 private SpriteFont font;
12 public int x;
13 public int y;
14
15
16 private Vector2 mouseEnd;
17 private Vector2 mouseStart;
18 private MouseState mousePrev;
19
20 public BudgetWindow(Budget budget, SpriteFont font, int start_x, int start_y)
21 {
22
23 this.budget = budget;
24 this.font = font;
25 this.x = start_x;
26 this.y = start_y;
27 }
28
29 public void update(MouseState mouseCur, Budget budget)
30 {
31 this.budget = budget;
32
33 if ((mouseCur.LeftButton == ButtonState.Pressed)
34 && MathUtils.Between(mouseCur.X, x, 700+x)
35 && MathUtils.Between(mouseCur.Y, y, 500 + y))
36 {
37 if (mousePrev.LeftButton == ButtonState.Released)
38 {
39 this.mouseStart = new Vector2(mouseCur.X, mouseCur.Y);
40
41 }
42 else
43 {
44 this.mouseEnd = new Vector2(mouseCur.X, mouseCur.Y);
45 }
46 }
47 else if (mousePrev.LeftButton == ButtonState.Pressed)
48 {
49 this.x = MathUtils.Clamp(this.x + (int)(this.mouseEnd.X - this.mouseStart.X), 0, 700);
50 this.y = MathUtils.Clamp(this.y + (int)(this.mouseEnd.Y - this.mouseStart.Y), 0, 400);
51
52 }
53
54 this.mousePrev = mouseCur;
55
56 //if ((mouseCur.LeftButton == ButtonState.Pressed)
57 // && MathUtils.Between(mouseCur.X, x, 700 + x)
58 // && MathUtils.Between(mouseCur.Y, y, 500 + y))
59 //{
60 // this.x += 50;
61 //}
62 }
63
64 public void draw(SpriteBatch batch)
65 {
66 int bar_height = 25;
67 int height = 500;
68
69 for (int i = 1; i < (height / bar_height); i++)
70 {
71 Rectangle position = new Rectangle(this.x, bar_height * i + this.y,
72 700, bar_height);
73
74 if ((i % 2) == 0)
75 {
76 FilledRectangle.drawFilledRectangle(batch, position, Color.LightGreen, 0.99f);
77 }
78 else
79 {
80 FilledRectangle.drawFilledRectangle(batch, position, Color.White, 0.99f);
81 }
82 }
83
84 batch.DrawString(font, String.Format("Starting Funds.........${0:}", this.budget.money), new Vector2(x, bar_height * 1 + y), Color.Black);
85
86 batch.DrawString(font, String.Format("REVENUE", this.budget.upkeep), new Vector2(x, bar_height * 3 + y), Color.Black);
87 batch.DrawString(font, String.Format("Subsidy................${0:}", this.budget.upkeep), new Vector2(x, bar_height * 4 + y), Color.Black);
88
89 batch.DrawString(font, String.Format("EXPENSES", this.budget.upkeep), new Vector2(x, bar_height * 6 + y), Color.Black);
90 batch.DrawString(font, String.Format("Upkeep.................${0:}", this.budget.upkeep), new Vector2(x, bar_height * 7 + y), Color.Black);
91
92 batch.DrawString(font, String.Format("Ending Funds.........${0:}", this.budget.final_money), new Vector2(x, bar_height * 10 + y), Color.Black);
93
94 }
95 }
96 }
@@ -75,11 +75,13
75 private Queue<Node<DialogOption>> remainingDialog;
75 private Queue<Node<DialogOption>> remainingDialog;
76
76
77
77
78 private bool showGrid = true;
78 private bool showGrid;
79 private Grammar grammar;
79 private Grammar grammar;
80 private string output;
80 private string output;
81 private bool showSecond = true;
81 private bool showSecond = true;
82 private GraphicsDeviceManager gdm;
82 private GraphicsDeviceManager gdm;
83 private bool showBudget;
84 private BudgetWindow budgetWindow;
83
85
84 private static void Main(string[] args)
86 private static void Main(string[] args)
85 {
87 {
@@ -127,6 +129,8
127
129
128 showInitial = true;
130 showInitial = true;
129 messageIndex = 0;
131 messageIndex = 0;
132 showBudget = false;
133 showGrid = true;
130
134
131 this.Window.Title = "Isometric Park";
135 this.Window.Title = "Isometric Park";
132
136
@@ -134,7 +138,8
134
138
135 currentNode = DialogTrees.introTree;
139 currentNode = DialogTrees.introTree;
136
140
137
141
142
138
143
139 }
144 }
140
145
@@ -193,6 +198,9
193 //font = fontBakeResult.CreateSpriteFont(GraphicsDevice);
198 //font = fontBakeResult.CreateSpriteFont(GraphicsDevice);
194 monoFont = bakedMono.CreateSpriteFont(GraphicsDevice);
199 monoFont = bakedMono.CreateSpriteFont(GraphicsDevice);
195
200
201 this.budgetWindow = new BudgetWindow(new Budget { }, this.monoFont, 0, 0);
202
203
196 }
204 }
197
205
198 protected override void UnloadContent()
206 protected override void UnloadContent()
@@ -328,6 +336,11
328 this.showGrid = !this.showGrid;
336 this.showGrid = !this.showGrid;
329
337
330 }
338 }
339 if (keyboardCur.IsKeyDown(Keys.B) && keyboardPrev.IsKeyUp(Keys.B))
340 {
341 this.showBudget = !this.showBudget;
342
343 }
331 if (keyboardCur.IsKeyDown(Keys.C) && keyboardPrev.IsKeyUp(Keys.C))
344 if (keyboardCur.IsKeyDown(Keys.C) && keyboardPrev.IsKeyUp(Keys.C))
332 {
345 {
333 this.camera.Jump(Vector2.Zero);
346 this.camera.Jump(Vector2.Zero);
@@ -392,8 +405,15
392
405
393 #endregion input
406 #endregion input
394
407
408
409
395 this.simulation.update(gameTime.ElapsedGameTime);
410 this.simulation.update(gameTime.ElapsedGameTime);
396
411
412 if (this.showBudget)
413 {
414 this.budgetWindow.update(mouseCur, this.simulation.latestBudget);
415 }
416
397
417
398 if (!this.showInitial && this.remainingDialog.Count > 0)
418 if (!this.showInitial && this.remainingDialog.Count > 0)
399 {
419 {
@@ -789,10 +809,20
789
809
790 batch.DrawString(monoFont, header_left, new Vector2(1, 1), Color.Black, 0.0f, Vector2.Zero, 1.0f, SpriteEffects.None, 0.5f);
810 batch.DrawString(monoFont, header_left, new Vector2(1, 1), Color.Black, 0.0f, Vector2.Zero, 1.0f, SpriteEffects.None, 0.5f);
791 batch.DrawString(monoFont, header_middle, new Vector2(middle_start, 1), Color.Black, 0.0f, Vector2.Zero, 1.0f, SpriteEffects.None, 0.5f);
811 batch.DrawString(monoFont, header_middle, new Vector2(middle_start, 1), Color.Black, 0.0f, Vector2.Zero, 1.0f, SpriteEffects.None, 0.5f);
792 #endregion draw_header
812 #endregion draw_header
793
813
794
814
795 batch.End();
815 #region budget
816
817 if (this.showBudget)
818 {
819 budgetWindow.draw(batch);
820
821 }
822
823 #endregion budget
824
825 batch.End();
796
826
797 #region debug_window
827 #region debug_window
798 //Calcs for debug window:
828 //Calcs for debug window:
@@ -7,6 +7,8
7 public struct Budget
7 public struct Budget
8 {
8 {
9 public DateTime DateTime;
9 public DateTime DateTime;
10
11 //assets
10 public decimal money;
12 public decimal money;
11
13
12
14
@@ -17,6 +19,9
17 public decimal upkeep;
19 public decimal upkeep;
18
20
19
21
22 public decimal final_money;
23
24
20 //misc
25 //misc
21 public int trees;
26 public int trees;
22
27
@@ -183,12 +188,15
183 this.applyBudget(newBudget); ;
188 this.applyBudget(newBudget); ;
184 }
189 }
185
190
186 public void applyBudget(Budget budget)
191 public void applyBudget(Budget budget) ///hacky
187 {
192 {
188
193
189 this.money = budget.money
194 this.money = budget.money
190 - (budget.upkeep)
195 - (budget.upkeep)
191 + (budget.subsidy);
196 + (budget.subsidy);
197
198
199 budget.final_money = this.money;
192 }
200 }
193
201
194 public void update(TimeSpan deltaTime)
202 public void update(TimeSpan deltaTime)
@@ -19,6 +19,22
19
19
20 }
20 }
21
21
22 public static int Clamp(int val, int min, int max)
23 {
24 if(val > max)
25 {
26 return max;
27 }
28 else if (val < min)
29 {
30 return min;
31 }
32 else
33 {
34 return val;
35 }
36 }
37
22 protected float Decrement(float value, float delta)
38 protected float Decrement(float value, float delta)
23 {
39 {
24 float magnitude = Math.Abs(value);
40 float magnitude = Math.Abs(value);
@@ -47,6 +47,7
47 <Compile Include="Utils\MathUtils.cs" />
47 <Compile Include="Utils\MathUtils.cs" />
48 <Compile Include="Utils\Node.cs" />
48 <Compile Include="Utils\Node.cs" />
49 <Compile Include="Dialog.cs" />
49 <Compile Include="Dialog.cs" />
50 <Compile Include="BudgetWindow.cs" />
50 </ItemGroup>
51 </ItemGroup>
51 <ItemGroup>
52 <ItemGroup>
52 <ProjectReference Include="..\FNA\FNA.csproj">
53 <ProjectReference Include="..\FNA\FNA.csproj">
You need to be logged in to leave comments. Login now