Description:
Rudimentary game state.
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
@@ -30,8 +30,11 | |||||
|
30 | - Add tree simulation @milestone(3: Contracts) @done(2021-04-27) |
|
30 | - Add tree simulation @milestone(3: Contracts) @done(2021-04-27) |
|
31 | - Add contract generation @milestone(3: Contracts) @done(2021-04-12) |
|
31 | - Add contract generation @milestone(3: Contracts) @done(2021-04-12) |
|
32 | - Outline reserved areas @milestone(3: Contracts) @done(2021-04-09) |
|
32 | - Outline reserved areas @milestone(3: Contracts) @done(2021-04-09) |
|
33 | - Add company images @milestone(3: Contracts) @maybe |
|
33 | - Add company images @milestone(3: Contracts) @maybe @done(2021-05-21) |
|
|
34 | - Contracts should end | ||
|
|
35 | - | ||
|
34 | Trees: |
|
36 | Trees: |
|
|
37 | |||
|
35 | - Add basic maintenance cost @milestone(1: Basic Money) @done(2021-01-27) |
|
38 | - Add basic maintenance cost @milestone(1: Basic Money) @done(2021-01-27) |
|
36 | - Add basic age simulation |
|
39 | - Add basic age simulation |
|
37 | - Biodiversity @maybe |
|
40 | - Biodiversity @maybe |
@@ -164,6 +167,7 | |||||
|
164 | Bugs: |
|
167 | Bugs: |
|
165 | Graphics: |
|
168 | Graphics: |
|
166 | - Trees jump around when pressing show/hide grid |
|
169 | - Trees jump around when pressing show/hide grid |
|
|
170 | - Grids sometimes overlap trees. | ||
|
167 | - Trees sometimes |
|
171 | - Trees sometimes |
|
168 | - Sometimes framerate jumps to 180-200 fps. (Better than reverse, but kinda weird) |
|
172 | - Sometimes framerate jumps to 180-200 fps. (Better than reverse, but kinda weird) |
|
169 | Misc: |
|
173 | Misc: |
@@ -10,7 +10,8 | |||||
|
10 |
|
10 | ||
|
11 | [Receives(typeof(ToggleWindowTypeMessage), typeof(ToggleWindowMessage), |
|
11 | [Receives(typeof(ToggleWindowTypeMessage), typeof(ToggleWindowMessage), |
|
12 | typeof(ToggleVisibilityMessage))] |
|
12 | typeof(ToggleVisibilityMessage))] |
|
13 |
[Reads(typeof(AreaComponent) |
|
13 | [Reads(typeof(AreaComponent), |
|
|
14 | typeof(ContractStatusComponent))] | ||
|
14 | class GameBridgeEngine : Engine |
|
15 | class GameBridgeEngine : Engine |
|
15 | { |
|
16 | { |
|
16 |
|
17 | ||
@@ -58,11 +59,16 | |||||
|
58 | foreach (ref readonly var entity in ReadEntities<AreaComponent>()) |
|
59 | foreach (ref readonly var entity in ReadEntities<AreaComponent>()) |
|
59 | { |
|
60 | { |
|
60 | var areaComponent = GetComponent<AreaComponent>(entity); |
|
61 | var areaComponent = GetComponent<AreaComponent>(entity); |
|
|
62 | var contractStatusComponent = GetComponent<ContractStatusComponent>(entity); | ||
|
61 | foreach (var square in areaComponent.squares) |
|
63 | foreach (var square in areaComponent.squares) |
|
62 | { |
|
64 | { |
|
63 | if (game.mouseGrid == square) |
|
65 | if (game.mouseGrid == square) |
|
64 | { |
|
66 | { |
|
65 | game.in_zone = true; |
|
67 | game.in_zone = true; |
|
|
68 | if(contractStatusComponent.status == ContractStatus.Active) | ||
|
|
69 | { | ||
|
|
70 | game.in_active_zone = true; | ||
|
|
71 | } | ||
|
66 | } |
|
72 | } |
|
67 | } |
|
73 | } |
|
68 |
|
74 |
@@ -35,6 +35,7 | |||||
|
35 | private SpriteBatch batch; |
|
35 | private SpriteBatch batch; |
|
36 | private SoundEffect sound; |
|
36 | private SoundEffect sound; |
|
37 | private SpriteFont monoFont; |
|
37 | private SpriteFont monoFont; |
|
|
38 | private SpriteFont largeMonoFont; | ||
|
38 |
|
39 | ||
|
39 | private Camera camera = new Camera(new float[] { 0.25f, 0.5f, 1.0f, 2.0f, 4.0f }); |
|
40 | private Camera camera = new Camera(new float[] { 0.25f, 0.5f, 1.0f, 2.0f, 4.0f }); |
|
40 |
|
41 | ||
@@ -65,6 +66,9 | |||||
|
65 |
|
66 | ||
|
66 | //for now |
|
67 | //for now |
|
67 | public bool in_zone; |
|
68 | public bool in_zone; |
|
|
69 | public bool in_active_zone; | ||
|
|
70 | |||
|
|
71 | public bool isPlaying = false; | ||
|
68 |
|
72 | ||
|
69 | private ImGuiRenderer _imGuiRenderer; |
|
73 | private ImGuiRenderer _imGuiRenderer; |
|
70 | private DebugWindow debugWindow; |
|
74 | private DebugWindow debugWindow; |
@@ -305,6 +309,21 | |||||
|
305 | } |
|
309 | } |
|
306 | ); |
|
310 | ); |
|
307 |
|
311 | ||
|
|
312 | var bakedMonoLarge = TtfFontBaker.Bake(File.OpenRead(@"Content/iosevka-term-extendedmedium.ttf"), | ||
|
|
313 | 30, | ||
|
|
314 | 1024, | ||
|
|
315 | 1024, | ||
|
|
316 | new[] | ||
|
|
317 | { | ||
|
|
318 | CharacterRange.BasicLatin, | ||
|
|
319 | CharacterRange.Latin1Supplement, | ||
|
|
320 | CharacterRange.LatinExtendedA, | ||
|
|
321 | CharacterRange.Cyrillic, | ||
|
|
322 | CharacterRange.LatinExtendedB, | ||
|
|
323 | new CharacterRange((char) 0x00B7) | ||
|
|
324 | } | ||
|
|
325 | ); | ||
|
|
326 | |||
|
308 |
|
327 | ||
|
309 | this.output = grammar.Flatten("#greeting#"); |
|
328 | this.output = grammar.Flatten("#greeting#"); |
|
310 | var result = grammar.Flatten("#[assistantName:#assistantNames#][whatever:whatever]vars#"); |
|
329 | var result = grammar.Flatten("#[assistantName:#assistantNames#][whatever:whatever]vars#"); |
@@ -339,6 +358,7 | |||||
|
339 |
|
358 | ||
|
340 | //font = fontBakeResult.CreateSpriteFont(GraphicsDevice); |
|
359 | //font = fontBakeResult.CreateSpriteFont(GraphicsDevice); |
|
341 | monoFont = bakedMono.CreateSpriteFont(GraphicsDevice); |
|
360 | monoFont = bakedMono.CreateSpriteFont(GraphicsDevice); |
|
|
361 | largeMonoFont = bakedMonoLarge.CreateSpriteFont(GraphicsDevice); | ||
|
342 |
|
362 | ||
|
343 | this.budgetWindow = new BudgetWindow(new Budget { }, this.monoFont, 0, 0); |
|
363 | this.budgetWindow = new BudgetWindow(new Budget { }, this.monoFont, 0, 0); |
|
344 |
|
364 | ||
@@ -443,6 +463,10 | |||||
|
443 | { |
|
463 | { |
|
444 | sound.Play(volume, pitch, pan); |
|
464 | sound.Play(volume, pitch, pan); |
|
445 | } |
|
465 | } |
|
|
466 | if (keyboardCur.IsKeyDown(Keys.A) && keyboardPrev.IsKeyUp(Keys.A)) | ||
|
|
467 | { | ||
|
|
468 | this.isPlaying = !this.isPlaying; | ||
|
|
469 | } | ||
|
446 | #endregion misc_keys |
|
470 | #endregion misc_keys |
|
447 | // |
|
471 | // |
|
448 |
|
472 | ||
@@ -527,10 +551,15 | |||||
|
527 | frameCounter++; |
|
551 | frameCounter++; |
|
528 |
|
552 | ||
|
529 | string fps = string.Format("fps: {0}", frameRate); |
|
553 | string fps = string.Format("fps: {0}", frameRate); |
|
|
554 | bool has_tree = false; | ||
|
530 |
|
555 | ||
|
531 | Stopwatch stopWatch = new Stopwatch(); |
|
556 | Stopwatch stopWatch = new Stopwatch(); |
|
532 | stopWatch.Start(); |
|
557 | stopWatch.Start(); |
|
533 | GraphicsDevice.Clear(Color.CornflowerBlue); |
|
558 | GraphicsDevice.Clear(Color.CornflowerBlue); |
|
|
559 | |||
|
|
560 | _imGuiRenderer.BeforeLayout(gameTime); | ||
|
|
561 | if (this.isPlaying) | ||
|
|
562 | { | ||
|
534 | batch.Begin(SpriteSortMode.BackToFront, |
|
563 | batch.Begin(SpriteSortMode.BackToFront, |
|
535 | BlendState.AlphaBlend, |
|
564 | BlendState.AlphaBlend, |
|
536 | null, |
|
565 | null, |
@@ -728,7 +757,6 | |||||
|
728 | drawTileAt(3, 2, 140, 2); |
|
757 | drawTileAt(3, 2, 140, 2); |
|
729 | #endif |
|
758 | #endif |
|
730 |
|
759 | ||
|
731 | _imGuiRenderer.BeforeLayout(gameTime); |
|
||
|
732 | World.Draw(); |
|
760 | World.Draw(); |
|
733 | // _imGuiRenderer.AfterLayout(); |
|
761 | // _imGuiRenderer.AfterLayout(); |
|
734 | batch.End(); |
|
762 | batch.End(); |
@@ -741,7 +769,6 | |||||
|
741 | null, |
|
769 | null, |
|
742 | null); |
|
770 | null); |
|
743 |
|
771 | ||
|
744 | bool has_tree = false; |
|
||
|
745 | if (MathUtils.BetweenExclusive(this.mouseGrid.X, 0, this.squaresAcross) && MathUtils.BetweenExclusive(this.mouseGrid.Y, 0, this.squaresAcross)) |
|
772 | if (MathUtils.BetweenExclusive(this.mouseGrid.X, 0, this.squaresAcross) && MathUtils.BetweenExclusive(this.mouseGrid.Y, 0, this.squaresAcross)) |
|
746 | { |
|
773 | { |
|
747 | has_tree = this.simulation.map.cells[(int)this.mouseGrid.X][(int)this.mouseGrid.Y].hasTree; |
|
774 | has_tree = this.simulation.map.cells[(int)this.mouseGrid.X][(int)this.mouseGrid.Y].hasTree; |
@@ -753,7 +780,7 | |||||
|
753 | { |
|
780 | { |
|
754 | status_left = String.Format("{0:},{1:} {2} ({3})", this.mouseGrid.X, this.mouseGrid.Y, |
|
781 | status_left = String.Format("{0:},{1:} {2} ({3})", this.mouseGrid.X, this.mouseGrid.Y, |
|
755 | this.simulation.map.cells[(int)this.mouseGrid.X][(int)this.mouseGrid.Y].status, |
|
782 | this.simulation.map.cells[(int)this.mouseGrid.X][(int)this.mouseGrid.Y].status, |
|
756 | this.in_zone ? "Contracted" : "Unzoned" |
|
783 | this.in_active_zone ? "Contracted" : (this.in_zone ? "Proposed Contract": "Unzoned") |
|
757 | ); |
|
784 | ); |
|
758 | } |
|
785 | } |
|
759 |
|
786 | ||
@@ -792,6 +819,51 | |||||
|
792 |
|
819 | ||
|
793 | batch.End(); |
|
820 | batch.End(); |
|
794 |
|
821 | ||
|
|
822 | #region window | ||
|
|
823 | if (this.currentNode != null) | ||
|
|
824 | { | ||
|
|
825 | this.currentNode = DialogInterface.RenderDialog(ref this.showInitial, | ||
|
|
826 | ref this.simulation.paused, debugWindow.monoFont, this.currentNode); | ||
|
|
827 | } | ||
|
|
828 | |||
|
|
829 | if (this.showForest) | ||
|
|
830 | { | ||
|
|
831 | ForestWindow.Render(this.showForest, debugWindow.monoFont, this.simulation, this.imGuiWindowBridgeEngine); | ||
|
|
832 | } | ||
|
|
833 | |||
|
|
834 | if (this.showNews) | ||
|
|
835 | { | ||
|
|
836 | NewsWindow.Render(this.showNews, debugWindow.monoFont, this.simulation, this.imGuiWindowBridgeEngine); | ||
|
|
837 | } | ||
|
|
838 | |||
|
|
839 | bool quit = false; | ||
|
|
840 | Menu.Render(debugWindow.monoFont, FNAGame.width, this.imGuiWindowBridgeEngine, ref quit, ref this.simulation.paused, ref this.simulation.currentRate, ref this.showBudget, header_left); | ||
|
|
841 | |||
|
|
842 | if (quit) { | ||
|
|
843 | System.Environment.Exit(0); | ||
|
|
844 | } | ||
|
|
845 | |||
|
|
846 | } | ||
|
|
847 | else { | ||
|
|
848 | GraphicsDevice.Clear(Color.Teal); | ||
|
|
849 | batch.Begin(SpriteSortMode.BackToFront, | ||
|
|
850 | BlendState.AlphaBlend, | ||
|
|
851 | null, | ||
|
|
852 | null, | ||
|
|
853 | null, | ||
|
|
854 | null); | ||
|
|
855 | |||
|
|
856 | Vector2 middle_dimensions = monoFont.MeasureString("Isometric Park"); | ||
|
|
857 | float middle_start = (int)((FNAGame.width / 2) - (middle_dimensions.X / 2)); | ||
|
|
858 | |||
|
|
859 | batch.DrawString(largeMonoFont, "Isometric Park", | ||
|
|
860 | new Vector2(middle_start, 50), | ||
|
|
861 | Color.Black, 0.0f, Vector2.Zero, | ||
|
|
862 | 1.0f, SpriteEffects.None, 0.5f); | ||
|
|
863 | batch.End(); | ||
|
|
864 | } | ||
|
|
865 | #endregion | ||
|
|
866 | |||
|
795 |
|
867 | ||
|
796 | #region debug_window |
|
868 | #region debug_window |
|
797 | //Calcs for debug window: |
|
869 | //Calcs for debug window: |
@@ -859,29 +931,6 | |||||
|
859 | // new DialogOption{ response="Oh yeah, of course.", choice="..." }}; |
|
931 | // new DialogOption{ response="Oh yeah, of course.", choice="..." }}; |
|
860 |
|
932 | ||
|
861 |
|
933 | ||
|
862 | if (this.currentNode != null) |
|
||
|
863 | { |
|
||
|
864 | this.currentNode = DialogInterface.RenderDialog(ref this.showInitial, |
|
||
|
865 | ref this.simulation.paused, debugWindow.monoFont, this.currentNode); |
|
||
|
866 | } |
|
||
|
867 |
|
|||
|
868 | if (this.showForest) |
|
||
|
869 | { |
|
||
|
870 | ForestWindow.Render(this.showForest, debugWindow.monoFont, this.simulation, this.imGuiWindowBridgeEngine); |
|
||
|
871 | } |
|
||
|
872 |
|
|||
|
873 | if (this.showNews) |
|
||
|
874 | { |
|
||
|
875 | NewsWindow.Render(this.showNews, debugWindow.monoFont, this.simulation, this.imGuiWindowBridgeEngine); |
|
||
|
876 | } |
|
||
|
877 |
|
|||
|
878 | bool quit = false; |
|
||
|
879 | Menu.Render(debugWindow.monoFont, FNAGame.width, this.imGuiWindowBridgeEngine, ref quit, ref this.simulation.paused, ref this.simulation.currentRate, ref this.showBudget, header_left); |
|
||
|
880 |
|
|||
|
881 | if (quit) { |
|
||
|
882 | System.Environment.Exit(0); |
|
||
|
883 | } |
|
||
|
884 |
|
|||
|
885 |
|
934 | ||
|
886 | _imGuiRenderer.AfterLayout(); |
|
935 | _imGuiRenderer.AfterLayout(); |
|
887 |
|
936 |
You need to be logged in to leave comments.
Login now