diff --git a/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csprojAssemblyReference.cache b/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csprojAssemblyReference.cache index 385477544be552dd76b6ca205da1ec6ee0f95310..e4dfd2c966682d9662faf1c0854b1e6ae7f5f7b0 GIT binary patch literal 424 zc$|Gvu};G<5OqjWTEb8kCWf#_R-!6`B|;)ng#-vts*a#basjJujBIBp-^@RN4i~d5p0S7qn6w?m2k86^&L#b(UWaLbiMbW@C7%G$!#HwGpZ>vYcl;^mEIrciJaY1ZC^p7o)Wnd zZy30unXEw$Xc+TZ7)I0M@$x&}iXP-o&-=sqMM5?L2S=2I1SA(w>5o2|GI|ovy?fje Q3^LD~hvR3=Cu0(Q0;jWe*8l(j diff --git a/TODO.taskpaper b/TODO.taskpaper new file mode 100644 --- /dev/null +++ b/TODO.taskpaper @@ -0,0 +1,61 @@ + +Gameplay: + Money: + - Add basic subsidy @milestone(1: Basic Money) + - Balance sheet @milestone(1: Basic Money) + - + Logging: + - Add contract struct @milestone(3: Contracts) + - Add tree simulation @milestone(3: Contracts) + - Add contract generation @milestone(3: Contracts) + - Outline reserved areas @milestone(3: Contracts) + - + Trees: + - Add basic maintenance cost @milestone(1: Basic Money) + - Add basic age simulation + - Biodiversity @maybe + - Research agreements @maybe + - + Leisure: + - Add way to mark off area for leisure @milestone(4: Leisure) + - Basic satisfaction @milestone(4: Leisure) + - Set + End games/outcomes: + - Financial mismanagement @milestone(5: Events) + - Figure out threshold + - Self-sufficient + i.e., no need for subsidy + May not be ending + - Forest mismanagement @milestone(5: Events) + - Figure out threshold + - High biodiversity? @maybe + - High satisfaction + - Figure out how to differentiate this from forest health + - Hat Trick: Satisfaction, Forest Health, **and** Self-Sustaining + - Figure out extent that this should even be possible? + Thematically, maybe dubious? + On the other hand, could be something that requires luck + It's possible in SimSafari + - Research center @maybe + - + Misc: + - Assistant commentary @milestone(5: Events) + Need to ensure it's not annoying + Basic random events + - Tree planting campaign + - Fire + - Friends of the park fundraiser + +Structure: + - Add modes @milestone(5: Events) + - Refactor stuff out of FNAGame + - Saving +Other features: + Accessibility: + - Verify contrast + - Increase display size + - Turn off bad outcomes + Other QoL things: + - Adjust display size + - Toggle trees translucency + - Right click to center \ No newline at end of file diff --git a/isometric-park-fna/Camera.cs b/isometric-park-fna/Camera.cs --- a/isometric-park-fna/Camera.cs +++ b/isometric-park-fna/Camera.cs @@ -42,6 +42,10 @@ { this.position += change; } + public void Jump (Vector2 change) + { + this.position = change; + } public Matrix get_transformation(GraphicsDevice graphicsDevice) { diff --git a/isometric-park-fna/FNAGame.cs b/isometric-park-fna/FNAGame.cs --- a/isometric-park-fna/FNAGame.cs +++ b/isometric-park-fna/FNAGame.cs @@ -269,6 +269,7 @@ float pitch = 0.0f; float pan = 0.0f; + // Run game logic in here. Do NOT render anything here! KeyboardState keyboardCur = Keyboard.GetState(); @@ -321,6 +322,11 @@ this.showGrid = !this.showGrid; } + if (keyboardCur.IsKeyDown(Keys.C) && keyboardPrev.IsKeyUp(Keys.C)) + { + this.camera.Jump(Vector2.Zero); + + } if (keyboardCur.IsKeyDown(Keys.OemBackslash) && keyboardPrev.IsKeyUp(Keys.OemBackslash) && keyboardCur.IsKeyDown(Keys.LeftShift)) { sound.Play(volume, pitch, pan); @@ -351,6 +357,7 @@ MouseState mouseCur = Mouse.GetState(); + this.original_point = Vector2.Transform(new Vector2(mouseCur.X, mouseCur.Y), Matrix.Invert(camera.get_transformation(GraphicsDevice))); if (MathUtils.Between(mouseCur.X, 0, 50)) { @@ -369,6 +376,14 @@ { this.camera.Move(new Vector2(0, 4)); } + + if (mouseCur.RightButton == ButtonState.Pressed) + { + Vector2 cameraMiddle = this.camera.position + new Vector2(FNAGame.width / 2, FNAGame.height / 2); + Vector2 delta = this.camera.position - this.original_point; + this.camera.Jump(this.original_point); + } + #endregion input this.simulation.update(gameTime.ElapsedGameTime); @@ -403,7 +418,6 @@ base.Update(gameTime); - } @@ -677,15 +691,16 @@ OutlineSquare(this.mouseGrid.X, this.mouseGrid.Y, Color.Yellow, 1); } +#if DEBUG OutlineSquare(1, 1, Color.Red, 2); OutlineSquare(3, 1, Color.Blue, 2); OutlineSquare(5, 1, Color.Green, 2); OutlineSquare(7, 1, Color.Orange, 2); +#endif - - #endregion draw_cursor +#endregion draw_cursor /* for (int i = 0; i< 80; i++) @@ -707,7 +722,7 @@ } }//*/ - #region draw_trees +#region draw_trees for (int i = 0; i < this.simulation.map.MapHeight; i++) { for (int j = 0; j < this.simulation.map.MapWidth; j += 1) @@ -726,7 +741,7 @@ } } } - #endregion draw_trees +#endregion draw_trees drawTileAt(2, 2, 140, 2); drawTileAt(1, 1, 140, 2); @@ -734,7 +749,7 @@ batch.End(); - #region draw_header +#region draw_header batch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend, null, @@ -765,12 +780,12 @@ batch.DrawString(monoFont, header_left, new Vector2(1, 1), Color.Black, 0.0f, Vector2.Zero, 1.0f, SpriteEffects.None, 0.5f); batch.DrawString(monoFont, header_middle, new Vector2(middle_start, 1), Color.Black, 0.0f, Vector2.Zero, 1.0f, SpriteEffects.None, 0.5f); - #endregion draw_header +#endregion draw_header batch.End(); - #region debug_window +#region debug_window //Calcs for debug window: if ((this.frameCounter % 15) == 0) { @@ -795,7 +810,15 @@ var additionalInfo = new Dictionary(); - additionalInfo.Add("Tracery Test", this.output); + Vector2 cameraMiddle = this.camera.position + new Vector2(FNAGame.width / 2, FNAGame.height / 2); + var state = Mouse.GetState(); + Vector2 delta = this.camera.position - this.original_point; + + additionalInfo.Add("cameraMiddle", cameraMiddle.ToString()); + additionalInfo.Add("mouse ", String.Format("{0}, {1}", state.X, state.Y)); + additionalInfo.Add("mouse delta", delta.ToString()); + + additionalInfo.Add("Tracery Test", this.output); debugWindow.Layout(debugInfo, additionalInfo, ref show_another_window); //String[] messages = { "Message1", "Message2" }; @@ -814,7 +837,7 @@ _imGuiRenderer.AfterLayout(); - #endregion debug_window +#endregion debug_window stopWatch.Stop();