diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -14,22 +14,25 @@ build-debug: stage: build script: + - dotnet restore isometric-park-fna-core.sln - dotnet build isometric-park-fna-core.sln -f netcoreapp3.1 - image: mcr.microsoft.com/dotnet/sdk:3.1-focal + image: mcr.microsoft.com/dotnet/sdk:3.1.415-focal build-release-windows: stage: build script: + - dotnet restore isometric-park-fna-core.sln - dotnet build isometric-park-fna-core.sln -f netcoreapp3.1 -c Release - image: mcr.microsoft.com/dotnet/sdk:3.1 + image: mcr.microsoft.com/dotnet/sdk:3.1.415 build-release: stage: build script: + - dotnet restore isometric-park-fna-core.sln - dotnet build isometric-park-fna-core.sln -f netcoreapp3.1 -c Release artifacts: paths: - screenshot.xwd expire_in: 1 week - image: mcr.microsoft.com/dotnet/sdk:3.1-focal + image: mcr.microsoft.com/dotnet/sdk:3.1.415-focal diff --git a/.hgignore b/.hgignore --- a/.hgignore +++ b/.hgignore @@ -29,6 +29,7 @@ isometric-park-fna/Content/images/crops/* isometric-park-fna/Content/Portraits/converted/* isometric-park-fna/Content/Portraits/crops/* +isometric-park-fna/Content/Pak64/split/* isometric-park-fna/DynamicLanguageRuntime.1.3.0/* isometric-park-fna/IronPython.2.7.11/ **.patch diff --git a/.vscode/launch.json b/.vscode/launch.json --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,6 +1,24 @@ { "version": "0.2.0", "configurations": [ + + + { + "name": "Launch with Core Debugger No Build", + "type": "coreclr", + "request": "launch", + // "preLaunchTask": "Build: Core Debug", + "program": "${workspaceFolder}/isometric-park-fna/bin/Debug/netcoreapp3.1/isometric-park-fna.dll", + "args": [], + "env": { + // "LD_LIBRARY_PATH": "${workspaceFolder}/isometric-park-fna/bin/Debug/netcoreapp3.1/lib64", + "LD_LIBRARY_PATH": "${workspaceFolder}/fnalibs/lib64", + "DYLD_LIBRARY_PATH": "${workspaceFolder}/fnalibs/osx" + }, + "cwd": "${workspaceFolder}/isometric-park-fna/bin/Debug/netcoreapp3.1", + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen" + }, { "name": "Launch with Core Debugger", "type": "coreclr", @@ -23,12 +41,19 @@ "name": "Attach LLDB to Running Process", "pid": "${command:pickMyProcess}" // use ${command:pickProcess} to pick other users' processes }, + + { + "type": "lldb", + "request": "attach", + "name": "Attach LLDB to Running Process", + "pid": "${command:pickMyProcess}" // use ${command:pickProcess} to pick other users' processes + }, { "name": "Attach .NET Core to Running Process", "type": "coreclr", "request": "attach", - "processId":"${command:pickMyProcess}" + "pid":"${command:pickMyProcess}" } ] } diff --git a/.vscode/tasks.json b/.vscode/tasks.json --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -137,7 +137,7 @@ "command": "dotnet", "args": [ "build", - "./isometric-park-fna-core.sln", + "./isometric-park-fna/isometric-park-fna-core.csproj", "-f", "netcoreapp3.1" ], @@ -175,7 +175,7 @@ "command": "dotnet", "args": [ "build", - "./isometric-park-fna-core.sln", + "./isometric-park-fna/isometric-park-fna-core.csproj", "--configuration", "Release", "-f", diff --git a/ImGui.NET/ImGui.NET.Core.csproj b/ImGui.NET/ImGui.NET.Core.csproj --- a/ImGui.NET/ImGui.NET.Core.csproj +++ b/ImGui.NET/ImGui.NET.Core.csproj @@ -21,7 +21,6 @@ - diff --git a/Makefile b/Makefile --- a/Makefile +++ b/Makefile @@ -26,6 +26,33 @@ #PIPELINE +##Paks + +##I do some dubious things here to adopt Make to a workflow that generates multiple output files per input file, which +##is not Make's strong suit. + +isometric-park-fna/Content/Pak64/split/%.png: isometric-park-fna/Content/Pak64/%.png + convert $< -transparent '#e7ffff' -crop 64x64 isometric-park-fna/Content/Pak64/split/$*"%02d.png" + cp isometric-park-fna/Content/Pak64/split/$*00.png $@ + +isometric-park-fna/Content/pak64_tileset.png: $(shell find -ipath "*isometric-park-fna/Content/Pak64/*.png" -and -not -ipath "*split*" | sed "s:Pak64/:Pak64/split/:" |sort) + rm $^ + montage isometric-park-fna/Content/Pak64/split/* -background transparent -tile 5 -geometry +0+0 -gravity north PNG8:$@ + touch $^ + + +pak: isometric-park-fna/Content/pak64_tileset.png + + +## Merged + +isometric-park-fna/Content/merged_tileset.png: isometric-park-fna/Content/pak64_tileset.png + montage isometric-park-fna/Content/part4_tileset.png $^ isometric-park-fna/Content/remos_trees2.png isometric-park-fna/Content/64x64_Objects_2.png isometric-park-fna/Content/rubberduck_parts_tower.png -background transparent -geometry +0+0 -tile 1x PNG:isometric-park-fna/Content/merged_tileset.png + +merged: isometric-park-fna/Content/merged_tileset.png + +##Portraits + isometric-park-fna/Content/Portraits/converted/%.png: isometric-park-fna/Content/Portraits/%.jpg convert $< -resize 500x500\> -dither FloydSteinberg -colors 8 -colorspace gray $@ diff --git a/README.mkd b/README.mkd --- a/README.mkd +++ b/README.mkd @@ -1,11 +1,12 @@ - # isometric-park-fna As the director of a small state park, your job is to balance conservation, leisure, and fiscal sustainability. Gameplay is still being added. -This is inspired by Maxis' Sim series of games, particularly SimSafari, and Chris Sawyer's Tycoon games. Its premise more closely resembles SimPark, but I never played it except for a demo. (Alternatively, watch [1990's Sim Games. SO GOOD!](https://www.youtube.com/watch?v=APFnM6DqtiA)) +This is inspired by Maxis' [Sim series of games](https://en.wikipedia.org/wiki/List_of_Sim_video_games), particularly SimSafari, and Chris Sawyer's [Tycoon games](http://www.chrissawyergames.com/info.htm). Its premise more closely resembles [SimPark](https://en.wikipedia.org/wiki/SimPark), but I never played it except for a demo. (Alternatively, watch [1990's Sim Games. SO GOOD!](https://www.youtube.com/watch?v=APFnM6DqtiA)) + +I rewrote the core of this game for Procjam 2020, but the majority of the game has been added since. I rewrote the core of this game for Procjam 2020, but the majority of the game has been added since. @@ -24,11 +25,21 @@ options aren't sufficient. Currently, there are no options for adjusting the difficulty beyond the settings -that appear on the initial selection. +that appear on the initial selection when you begin a game. + +## System Requirements ## + +The requirements are pretty modest. It runs pretty well on a 2010 MacBook Pro. Here's my estimated minimum: + +* ~2 Ghz Core 2 Duo or equivalent +* 2 GB of memory +* Nvidia GeForce 200 series + +If you have a more typical machine with, say, 8 GB of memory, an NVIDIA GeForce GTX, and an i5, you should have no trouble running the game. ## Relationship to past work ## -This game is a total rewrite of the original version in C#. I honestly like the original language and library more (Clojure and Quil), but Quil was starting to struggle with the amount of drawing, and I was hitting the limit of my optimization abilities and available information online. (Another drawback: I'm also giving up the browser version, unless people get XNA in the browser working.) +This game is a total rewrite of the [original version](https://actuallyalys.itch.io/isometric-park-working-title) in C#. I honestly like the original language and library more (Clojure and Quil), but Quil was starting to struggle with the amount of drawing, and I was hitting the limit of my optimization abilities and available information online. (Another drawback: I'm also giving up the browser version, unless people get FNA in the browser working.) ## Installing and Running ## @@ -37,7 +48,6 @@ * Windows and Linux users should be able to double-click the EXE and run it. * BSD users can try using [fbsd-fnaify](https://github.com/oshogbo/fbsd-fnaify), although I have yet to confirm it works with Isometric Park. (If you do try it, let me know!) - ## Developing ## To run from the command line, `make run`. @@ -54,7 +64,11 @@ 2. Removed the ImGui folder: `rm -r ImGui.NET/` 3. Copied `cp -r /tmp/ImGui.NET/src/ImGui.NET .` +### Architecture ### +This game uses an ECS structure, with significant parts of the simulation done in the `Simulation` class and some drawing in the `FNAGame` class. I use Encompass, which calls systems engines. It also adds messages, which last only one frame and are ideal for updates. + +I call engines that connect the ECS and non-ECS parts bridge engines. It works reasonably well, although I'm trying to add new code to the ECS rather than to the `Simulation` and `FNAGame` classes. ### File Structure ### @@ -67,8 +81,8 @@ │   ├── **bin** │   │   ├── **Debug** Debug version │   │   └── **Release** Release version -│   ├── *Camera.cs* -│   ├── *CellMap.cs* +│   ├── *Camera.cs* +│   ├── *CellMap.cs* │   ├── **Components** Components that store data on entities. │   ├── **Content** │   │   ├── **DejaVuSerif-BoldItalic.ttf** @@ -91,11 +105,11 @@ │   │   └── **typicons.ttf** │   ├── *DllMap.cs* (vendored) │   ├── *DrawVertDeclaration.cs* -│   ├── **Engines** Engines +│   ├── **Engines** Engines │   ├── *FilledRectangle.cs* Class for drawing a filled rectangle. │   ├── *FNAGame.cs* Primary game class. │   ├── **fnalibs** Compiled native libraries. -│   │   ├── **lib64** +│   │   ├── **lib64** │   │   ├── **osx** │   │   ├── **x64** │   │   └── **x86** @@ -146,22 +160,22 @@ ## Acknowledgements ## -Art: [Isometric 64x64 Outside Tileset by Yar](https://opengameart.org/content/isometric-64x64-outside-tileset), various images from the Library of Congress and USDA Forest Service +Art: [Isometric 64x64 Outside Tileset by Yar](https://opengameart.org/content/isometric-64x64-outside-tileset), [Peaceful](https://silivar.itch.io/isometric-asset-pack-peaceful) by Silivar various images from the Library of Congress and USDA Forest Service Libraries: [FNA](https://fna-xna.github.io/), [SpriteFontPlus](https://github.com/rds1983/SpriteFontPlus), [Tracery.Net](https://github.com/josh-perry/Tracery.Net), [ImGui.NET](http://imgui.net/), and [Encompass-cs](http://moonside.games/docs/encompass/) -Fonts: Droid Sans, [Iosevka](https://typeof.net/Iosevka/) by Belleve Invis, [Typicons](https://www.s-ings.com/typicons/) by Stephen Hutchings +Fonts: Droid Sans, [Iosevka](https://typeof.net/Iosevka/) by Belleve Invis, [Typicons](https://www.s-ings.com/typicons/) by Stephen Hutchings, [OCRA}(http://luc.devroye.org/fonts-48511.html) designed by American Type Founders and converted by Matthew Skala + +Sounds: Bell, hammering, and jackhammer sounds by InspectorJ; Switch clicking by qubodup -Sources for the procedural generation are documented in Sources.md. +Sources for the procedural generation are documented in Sources.md. -Watching Thin Matrix's [video devlogs](https://www.youtube.com/watch?v=90CZ7Q17sls&list=PLRIWtICgwaX1gcSZ8qj8Q473tz7PsNmpR) for Equilinox inspired me to press on. :) Despite some similarities, the design of this game wasn't really inspired by Equilinox. (I've also enjoyed Thoughtquake's [video devlogs](https://www.youtube.com/user/Thoughtquake/videos) for Cargo Defense and Cliff Harris' Democracy 4 [video devlogs](https://www.youtube.com/user/cliffski2/videos)) +Watching ThinMatrix's [video devlogs](https://www.youtube.com/watch?v=90CZ7Q17sls&list=PLRIWtICgwaX1gcSZ8qj8Q473tz7PsNmpR) for Equilinox and his subsequent games inspired me to press on. :) Despite some similarities, the design of this game wasn't really inspired by Equilinox. (I've also enjoyed Thoughtquake's [video devlogs](https://www.youtube.com/user/Thoughtquake/videos) and Cliff Harris' Democracy 4 [video devlogs](https://www.youtube.com/user/cliffski2/videos)). The original versions used art from the [Low Poly Forest Pack](https://devilsworkshop.itch.io/lowpoly-forest-pack) by [Devil's Work.Shop](https://devilsworkshop.itch.io/). (I had converted the models into isometric 2D images, using [this process.](https://www.youtube.com/watch?v=bk0PXMgZgQg)) ## License ## -© 2021 Alys S. Brooks +© 2022 Alys S. Brooks I haven't decided on a license. - - diff --git a/SpriteFontPlus/src/bin/FNA/Debug/net45/SpriteFontPlus.pdb b/SpriteFontPlus/src/bin/FNA/Debug/net45/SpriteFontPlus.pdb index c28f12d466cfb3bc224c8d1bc2b697d2ad9023ee..e1f634dac4f6bc5fd19e88023656807cfb3259ca GIT binary patch literal 59816 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 -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.csprojAssemblyReference.cache b/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.FNA.csprojAssemblyReference.cache index 4adad10267ecbc7883eab37f3a8d7416fba0b341..6c2f5434c5bebfca5f98f75a79ed71c2749c5a17 GIT binary patch literal 7726 zc%1E7YitzP6`tAmtikJ$gg^qxnvfL2de#npK)@lcjRD~Y!Hz)%v&`<^-JN(I%gn5e zQ2|E@NvIO2Ac>UxXd+c@rBotSRW<+GL_+DmRE?B2RISuXtx7ATCcmntiqiYd&a7uW zGd8AMDM%TKGvm4Ee)l`)o^#Kcg<%YlmIW9bK`XGLyOKuoS3Sx;ju+k_l@#!ghq7i0Y8Y{u8v^-3OaxDqVq>8 zG9{SPP4$&jeS5m3$|NmFvwB)1WmQj$I(=bKr8esCskVY5qz6a((pgbS50Gr7h`-F~ z&2;((@6}{Ir)u=Ash3!i72G@|Dkn_!mL>f)AQ*zFil|90s!Fw5B35*8t03-#xC`QL zh}97HK&*jS3vn;ReGu!Y2xHooC9`kKpq+UL!l10?L-gNNKu|(?Qr06nGE)z0#x&6a z1%(EAAP``iU_;b%YmD0_ulI@y4fDR&ujD%dvu-G=oV{qMT$O*I8LGY zYSoESbyLNvr$^|@b#-@a-`Yvqw`~t28kgmN&BF>(D#AzRIof{1nEA93zAUO zqq%ZL&~hc{^zRGg#3+3z^+`pJs+eWLh~?Bg$%H23Npc9AOQb_*g#;x=Eh=dtgGfIr63k7TJ?yxOcIG+ zvu28mfw5{+4wWq-zc6z4re!7*+Y=`ms)?>KT~IUY|X|Gy2( zDdi&k7L#@h$me1f9a(Ei+cL~^p;r+xj_aE zVC`hhpxsn9ISxl|5K4O>_PY4L>*W9Qdj9(xf69Wy5SD7K(H*8Txm26TjbP>|!~vHL z?>KF^Qg6c;z2%ldZ;)Z*Sbsy!u&1a@Ea+dk2`CdONrPtU3{Yse(%(a#R<82p@pIL^#p)m?wnx$EDn-}M~5?VtejJN;-o-+gmi ztyCllDAA3K6=@(9T6T-cq8VJ^VtnyNGQ+~tszz_3f}4rUWe$>Q5h_?dMlYzM zynSh1?50|(6fk6ed~roASb`8;Ir5s*Td&r83+C>(Q5uvSGS=B#BdR!Z+Wz|ER4A4q zPPq79aPob*p0DA^X&bCTv@2Ndks9r3M@hg}C^rM8lMu5m%FjC~pR1?*ZAVD}P=n~6 z#!_2qbk88Dtb-qvxH*VtTuje6nVzm^`W(IOYv}QQ4ttLl@GUc!Xj+9RuUEhod9o3k z+1J5@z>;O6zxn*o)hpLN{XYNP+leb*to-}+FP^?}@rC~cr=@3yUcYqzPj~$7jcXtO z;r&0p@lp4kt%2`0X*>Tt_v+cJf1YW%_(61Lbo2E`n=kz%eB&?ITi^S^Kd*n5KRUGH z^7}u2ebZz%^)^YZ|NOVT#-!Tz*U!!zdna-AwcdxlaS(B9CyWBbat&c7z(pI_! zezGfb_KuI^kFjW4k-{OS{tBagyFL4LQ~>*zy;$uhx_+T7m;J>ViJt2R-fyJ>d&|$OV1a5BjJl^fBupkjU6i>~RYMzcED| z5MdO(+pHf7%=bfPrDwl7?a=LcxXk|;@B-uLPvYE*h^zC?h%?L4v{jBmbM%i&T{*&U zgWO995%P6leH~b}zy?j34wlFX%8HmeW>Xuh!&fWQuvB9VCXJ t6^WT+gEW7u|1ZKOUUacK@5kyTC#zR%vo5#*F8Tpn@&aJ-0Mpo}{{nl;8+8Bx diff --git a/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.pdb b/SpriteFontPlus/src/obj/Debug/net45/SpriteFontPlus.pdb index c28f12d466cfb3bc224c8d1bc2b697d2ad9023ee..e1f634dac4f6bc5fd19e88023656807cfb3259ca GIT binary patch literal 59816 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 1.0.0", - "Microsoft.NETFramework.ReferenceAssemblies >= 1.0.0" - ], - ".NETStandard,Version=v2.0": [ - "FNA >= 1.0.0", - "NETStandard.Library >= 2.0.3" + "FNA >= 1.0.0" ] }, "packageFolders": { - "/home/alys/.nuget/packages/": {}, - "/usr/share/dotnet/sdk/NuGetFallbackFolder": {} + "/home/alys/.nuget/packages/": {} }, "project": { "version": "1.0.0", "restore": { - "projectUniqueName": "/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/SpriteFontPlus.FNA.Core.csproj", + "projectUniqueName": "/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/SpriteFontPlus.FNA.csproj", "projectName": "SpriteFontPlus", - "projectPath": "/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/SpriteFontPlus.FNA.Core.csproj", + "projectPath": "/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/SpriteFontPlus.FNA.csproj", "packagesPath": "/home/alys/.nuget/packages/", "outputPath": "/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/obj/", "projectStyle": "PackageReference", - "crossTargeting": true, - "fallbackFolders": [ - "/usr/share/dotnet/sdk/NuGetFallbackFolder" - ], "configFilePaths": [ - "/home/alys/.nuget/NuGet/NuGet.Config" + "/home/alys/.config/NuGet/NuGet.Config" ], "originalTargetFrameworks": [ - "net45", - "netstandard2.0" + "net45" ], "sources": { "https://api.nuget.org/v3/index.json": {} }, "frameworks": { "net45": { - "targetAlias": "net45", "projectReferences": { - "/home/alys/repos/isometric-park-fna/FNA/FNA.Core.csproj": { - "projectPath": "/home/alys/repos/isometric-park-fna/FNA/FNA.Core.csproj" - } - } - }, - "netstandard2.0": { - "targetAlias": "netstandard2.0", - "projectReferences": { - "/home/alys/repos/isometric-park-fna/FNA/FNA.Core.csproj": { - "projectPath": "/home/alys/repos/isometric-park-fna/FNA/FNA.Core.csproj" + "/home/alys/repos/isometric-park-fna/FNA/FNA.csproj": { + "projectPath": "/home/alys/repos/isometric-park-fna/FNA/FNA.csproj" } } } @@ -605,38 +63,7 @@ }, "frameworks": { "net45": { - "targetAlias": "net45", - "dependencies": { - "Microsoft.NETFramework.ReferenceAssemblies": { - "suppressParent": "All", - "target": "Package", - "version": "[1.0.0, )", - "autoReferenced": true - } - }, - "runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/5.0.403/RuntimeIdentifierGraph.json" - }, - "netstandard2.0": { - "targetAlias": "netstandard2.0", - "dependencies": { - "NETStandard.Library": { - "suppressParent": "All", - "target": "Package", - "version": "[2.0.3, )", - "autoReferenced": true - } - }, - "imports": [ - "net461", - "net462", - "net47", - "net471", - "net472", - "net48" - ], - "assetTargetFallback": true, - "warn": true, - "runtimeIdentifierGraphPath": "/usr/share/dotnet/sdk/5.0.403/RuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "/usr/lib/mono/msbuild/Current/bin/RuntimeIdentifierGraph.json" } } } diff --git a/SpriteFontPlus/src/obj/project.nuget.cache b/SpriteFontPlus/src/obj/project.nuget.cache --- a/SpriteFontPlus/src/obj/project.nuget.cache +++ b/SpriteFontPlus/src/obj/project.nuget.cache @@ -1,13 +1,8 @@ { "version": 2, - "dgSpecHash": "rrWB70esJdTf9dAMXa2E6SMBq+jD6SmvcvweYYuLu7Fwj06OkeGl84NRxKWhvOqoLVKcJnfxbh2rNXh6qwNWGg==", + "dgSpecHash": "tOnJ1OKHA9fVe0r0rF8SXkY/g6Dsae+u1nunMHJtIiHm2UrxMmZk6x6accdLrAYlwIjYkj7fcv/RHNfOBL/3Kg==", "success": true, - "projectFilePath": "/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/SpriteFontPlus.FNA.Core.csproj", - "expectedPackageFiles": [ - "/home/alys/.nuget/packages/microsoft.netcore.platforms/1.1.0/microsoft.netcore.platforms.1.1.0.nupkg.sha512", - "/home/alys/.nuget/packages/microsoft.netframework.referenceassemblies/1.0.0/microsoft.netframework.referenceassemblies.1.0.0.nupkg.sha512", - "/home/alys/.nuget/packages/microsoft.netframework.referenceassemblies.net45/1.0.0/microsoft.netframework.referenceassemblies.net45.1.0.0.nupkg.sha512", - "/home/alys/.nuget/packages/netstandard.library/2.0.3/netstandard.library.2.0.3.nupkg.sha512" - ], + "projectFilePath": "/home/alys/repos/isometric-park-fna/SpriteFontPlus/src/SpriteFontPlus.FNA.csproj", + "expectedPackageFiles": [], "logs": [] } \ No newline at end of file diff --git a/TODO.taskpaper b/TODO.taskpaper --- a/TODO.taskpaper +++ b/TODO.taskpaper @@ -35,8 +35,11 @@ Trees: - Add basic maintenance cost @milestone(1: Basic Money) @done(2021-01-27) - Add basic age simulation - - Add water @milestone(6: Trees and Tiles) + - Add water @milestone(6: Trees and Tiles) @done(2022-07-24) - Biodiversity @maybe @milestone(6: Trees and Tiles) + - Tree Types @done(2022-01-27) + - Grass? + - Biodiversity score? - Research agreements @maybe - Forest rangers allocatable as law enforcement? @maybe Have to think about thematic implications @@ -44,6 +47,21 @@ Seems like a good way to get started? Reduces cost of vandalism repair? - Sell Firewood? + - Preserve @milestone(6: Trees and Tiles) + - Add preserve tool @done(2021-02-17) + - Add bulldozer @done(2022-03-16) + - Adjust odds in preserve @done(2021-02-20) + - Dialog + - Assistant warns when a lot of the map has been made into preserve? + Maybe a lot made into preserve at once? + - Congratulations when reaching a majority @done(2022-12-14) + Maybe 75 percent + - Make them less easy to game + Right now they are free to add and remove, meaning you could make the whole map preserve until you need it for something else + One option: penalize if user switches them too early + Another option: charge nominal amount + Another option: benefits take time to accrue. Avoids punishment + Maybe a combination: benefits accrue after an area has been preserved for a while? Tourism ceases immediately. And you don't get offers to build on that land? Or fewer offers? Staff: - Ranger staffing? @maybe @milestone(1: Basic Money) - Staffing window @@ -54,6 +72,9 @@ - Employee training mechanic @maybe Leisure: - Add way to mark off area for leisure @milestone(7: Leisure) + Maybe add leisure items instead? + Or both? + - Add paths @milestone(7: Leisure) - Basic satisfaction @milestone(7: Leisure) - Set End games/outcomes: @@ -62,7 +83,7 @@ - Self-sufficient i.e., no need for subsidy May not be ending - - Forest mismanagement @milestone(5: Events) + - Forest mismanagement @milestone(5: Events) @done(2021-12-12) - Figure out threshold - High biodiversity? @maybe - High satisfaction @@ -83,7 +104,7 @@ Misc: - Assistant commentary @milestone(5: Events) Need to ensure it's not annoying - - Basic random events + - Basic random events - Tree planting campaign @done(2021-09-28) @milestone(5: Events) - Friends of the park fundraiser @done(2021-11-07) @milestone(5: Events) - Federal grant @done(2021-11-27) @milestone(5: Events) @@ -94,14 +115,21 @@ would probably have to animate - Disease - Photos for dialog? - - Graphs window + - Graphs window @done(2021-01-05) Could use ImPlot for this Structure: - - Add modes + - Add modes - Refactor stuff out of FNAGame At this point, virtually everything in FNAGame is setting up key Engines or doing drawing - Saving @prototyped @milestone(4: Beginning) + - Options are duplicated in too many places: + - Replace Options with OptionComponent? + - Put Options in OptionMessage? + - Remove Options from Encompass? + Options don't seem like a great fit for th ECS model. + - OptionsWindow should use two Options instances instead of recreating each field. + Adding an option requires adding variabls - Encompass @maybe @done(2021-04-03) Currently thinking about a hybrid model where the Simulation class receives a lot of the events from Encompass. so things like Events, Contracts, and Research agreements are handled by Encompass. Perhaps Input, too? - Ensure library loads @@ -144,7 +172,40 @@ - Additional in-game menu - Save - Save & Quit + - Fix selection + Selections require two components to really work, which is messy and doesn't really fit. A Selection without some sort of associated selection that describes what's selected doesn't really work + - Turn tools into classes? + Creating a shallow hierarchy seems a little nicer than the current setup. +Music and Audio: + Sound Effects: + - Generic click sound (push button) @done(2022-05-09) + - Cheer/boo crowd sound effect + This is a sorta easter egg and a reference to SimCity + - Explosion effect (for bulldozer) + +Performance: + Issues: + - Seeing up to 32 ms in update on framework-release? @done(2022-05-16) + - Drawing very large areas is very slow. @done(2022-05-16) + Sorta fixed + - Slows to a halt (~7fps) when drawing many preserve squares. + Drawing each tile individually is very silly when it's just a (big) square anyway. + For edges: Using a dictionary with counts doesn't work either. (~5 fps) Nor using sets. + Instead need to do the fill and edge-drawing as large regions. + - Draw slows down after merely leaving it running @done(2022-11-14) + Debug issue; could be faster but basically solved + Structural improvements: + - Button to clear/thin debug buffers? + Take every nth to reduce counters to past 100 measurements + - Disable some timing code in release mode? + Needs some way to enable it. + - Avoid redrawing tiles every time? + Draw tiles once into buffer + Instrumentation: + - Time individual sections of update loop @done(2022-05-16) + - Time simulation @done(2022-05-16) + - Time each engine? Other features: Accessibility: - Verify contrast @@ -181,29 +242,54 @@ Internationalization: - Probably won't pay to translate or anything, but should consider setting up the structure @maybe @milestone(4: Beginning) If nothing else, might be useful for future projects. +Balance: + - Hard mode is impossible with current map size. + Upkeep is too much money. + Might be addressed by adding staff instead of fixed upkeep. Bugs: Graphics: - - Trees jump around when pressing show/hide grid + - Trees jump around when pressing show/hide grid @done(2022-01-23) - Grids sometimes overlap trees, including area overlays - - Trees sometimes + - Trees sometimes overlap each other @done(2022-01-23) + - Area overlays overlap trees @done(2022-01-24) - Sometimes framerate jumps to 180-200 fps. (Better than reverse, but kinda weird) - Graphics don't adjust for the resolution - Scroll area @done(2021-06-23) - Ingame Menu @done(2021-06-22) - Main Menu Simulation: + - Can keep playing after losing if you don't acknowledge the loss in the dialog + - Create preemption/priority system + Have to decide whether to have two levels: normal/preempting or a series of priorities - Expired areas can't be reused. @done(2021-08-07) + - Trees seem to spawn in lines. + Is it only spawning neighbor trees in one direction? Dialog: - Dialogs don't appear after + Crashes/Stability: + - News window crashes. + - Drawing error when clicking sometimes on main screen. @done(2022-04-27) + Tries to draw area? + - Crash when extending preserve past bottom. @done(2022-04-27) + - Segfault on quit (when it tries to dispose of the sound) or on playing sound on Linux + May be due to a quirk of my Linux setup + - Weird ImGui crash: + dotnet: /home/alys/repos/outside/ImGui.NET-nativebuild/cimgui/imgui/imgui.cpp:6293: bool ImGui::Begin(const char*, bool*, ImGuiWindowFlags): Assertion `name != __null && name[0] != '\0'' failed. + - Crashes after exiting a game. + Seems to be a draw issue (Batch hasn't begun.) + In Area renderer? + Also happens when you lose. + Unhandled exception: System.InvalidOperationException: Draw was called, but Begin has not yet been called. Begin must be called successfully before you can call Draw. + - No handler for Ink errors. + There really shouldn't be any way to run into an Ink error, but they will probably slip in. Misc: + - Starting a game after exiting a previous one doesn't really work, afaict + Also crases, but I suspect the crash isn't related. - Events may not be deleted - Exits are messy (does Encompass add threading?) @done(2021-11-28) - Appears to be fixed by using Game.Exit + Appears to be fixed by using Game.Exit [xcb] Unknown sequence number while appending request [xcb] Most likely this is a multi-threaded client and XInitThreads has not been called [xcb] Aborting, sorry about that. dotnet: ../../src/xcb_io.c:145: append_pending_request: Assertion `!xcb_xlib_unknown_seq_number' failed. Aborted (core dumped) - - Segfault on quit (when it tries to dispose of the sound) or on playing sound on Linux - May be due to a quirk of my Linux setup - diff --git a/isometric-park-fna-core.sln b/isometric-park-fna-core.sln --- a/isometric-park-fna-core.sln +++ b/isometric-park-fna-core.sln @@ -5,10 +5,6 @@ MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "isometric-park-fna-core", "isometric-park-fna\isometric-park-fna-core.csproj", "{4BA11D6F-B980-4E5B-99FE-729AD3D34A12}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ImPlot.NET", "ImPlot.NET\ImPlot.NET.csproj", "{50014300-51ED-4F7B-B72E-16BE29FBAE95}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ImGui.NET.Core", "ImGui.NET\ImGui.NET.Core.csproj", "{E7AB4506-A404-4BE8-AF71-5486AD9EBC71}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU diff --git a/isometric-park-fna.sln b/isometric-park-fna.sln --- a/isometric-park-fna.sln +++ b/isometric-park-fna.sln @@ -13,8 +13,6 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "encompass-cs", "encompass-cs\encompass-cs\encompass-cs.csproj", "{D0CCEB74-D8A8-446A-AFFC-2B043DAF1E5F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ImPlot.NET", "ImPlot.NET\ImPlot.NET.csproj", "{11118CB6-165C-4459-B5F4-54843206025E}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|anycpu = Debug|anycpu diff --git a/isometric-park-fna/CellMap.cs b/isometric-park-fna/CellMap.cs --- a/isometric-park-fna/CellMap.cs +++ b/isometric-park-fna/CellMap.cs @@ -1,18 +1,34 @@ -using System; +using System; using System.Collections.Generic; +using Microsoft.Xna.Framework; + namespace isometricparkfna { public class CellMap { public List> cells; + public List WaterCells; + + //Defaults; overridden by settings from FNAGame in practice: public int MapWidth = 50; public int MapHeight = 50; public int ZoneWidth = 10; public int ZoneHeight = 10; + + //These coefficients modify values I set based on the original 50x50 maps. + //Eventually I'll probably allow for multiple map sizes, so instead of changing those constants, + //I'm adding a multiplier based on the size of the map. + // + //What's the difference between these two multipliers? + //If you double the sides of the map, the linear multiplier is 2, + //but the area multiplier is 4 (2 x 2). + public int LinearMultiplier; + public int AreaMultiplier; + public int tree_count { get @@ -42,7 +58,6 @@ } } - public CellMap() { //TileMap(MapWidth, MapHeight); @@ -55,6 +70,12 @@ this.cells = new List>(); + //Cached: + this.WaterCells = new List(); + + this.LinearMultiplier = (int)(((this.MapWidth / 50) + (this.MapHeight / 50)) / 2); + this.AreaMultiplier = (int)((this.MapWidth * this.MapHeight) / (50 * 50)); + for (int i = 0; i < height; i++) { List newRow = new List(); @@ -74,7 +95,7 @@ { foreach (Cell cell in row) { - if (cell.hasTree) + if (cell.HasTree) { yield return cell; } @@ -88,7 +109,7 @@ { foreach (Cell cell in row) { - if (cell.hasTree) + if (cell.HasTree) { yield return cell; } @@ -112,7 +133,7 @@ return MathUtils.BetweenExclusive(x, 0, MapWidth - 1) && MathUtils.BetweenExclusive(y, 0, MapHeight - 1); } - private System.Collections.Generic.IEnumerable iterate_neighbors(int x, int y) + public System.Collections.Generic.IEnumerable iterate_neighbor_cells(int x, int y) { //iterates over neighbors (clockwise starting at noon/midnight) if (inBounds(x, y + 1)) @@ -149,12 +170,61 @@ } } + public System.Collections.Generic.IEnumerable<(int, int)> iterate_neighbor_cell_locations(int x, int y) + + { + //iterates over neighbors (clockwise starting at noon/midnight) + if (inBounds(x, y + 1)) + { + yield return (x - 1, y); + } + if (inBounds(x + 1, y + 1)) + { + yield return (x + 1, y + 1); + } + if (inBounds(x + 1, y)) + { + yield return (x + 1, y); + } + if (inBounds(x + 1, y - 1)) + { + yield return (x + 1, y - 1); + } + if (inBounds(x, y - 1)) + { + yield return (x, y - 1); + } + if (inBounds(x - 1, y-1)) + { + yield return (x - 1, y-1); + } + if (inBounds(x - 1, y)) + { + yield return (x - 1, y); + } + if (inBounds(x - 1, y + 1)) + { + yield return (x - 1, y+1); + } + } + + + public System.Collections.Generic.IEnumerable iterate_neighbors(int x, int y) + { + foreach (Cell neighbor in this.iterate_neighbor_cells(x, y)) + { + if (neighbor.HasTree) { + yield return neighbor; + } + } + } + private int countNeighbors(int x, int y) { int count = 0; - foreach (Cell neighbor in this.iterate_neighbors(x, y)) + foreach (Cell neighbor in this.iterate_neighbor_cells(x, y)) { - if (neighbor.hasTree) { + if (neighbor.HasTree) { count++; } } @@ -162,6 +232,17 @@ return count; } + public static Vector2 calculateMousegrid(Vector2 normalizedMousePos) + { + Vector2 adjust = new Vector2(Tile.TileSpriteWidth / 2, Tile.TileSpriteHeight); + Vector2 adjustedMousePos = normalizedMousePos - adjust; + + float boardx = ((adjustedMousePos.X / Tile.TileSpriteWidth) + (adjustedMousePos.Y / Tile.TileSpriteHeight)); + float boardy = ((adjustedMousePos.Y / Tile.TileSpriteHeight) - (adjustedMousePos.X / Tile.TileSpriteWidth)); + + return new Vector2((int)boardx, (int)boardy); + } + public System.Collections.Generic.IEnumerable iterate_cells_with_neighbors(int neighbors) { for (int i = 0; i < MapHeight; i++) @@ -175,44 +256,93 @@ } } } + } - + public System.Collections.Generic.IEnumerable<(int, int)> iterate_cell_locations_with_neighbors(int neighbors) + { + for (int i = 0; i < MapHeight; i++) + { + List newRow = new List(); + for (int j = 0; j < MapWidth; j++) + { + if (this.countNeighbors(i, j) >= neighbors) + { + yield return (i, j); + } + } + } } public enum CellStatus { Clear, LivingTree, - DeadTree + DeadTree, + Water + } + + public enum TreeType { + Oak, + GenericEvergreen, + GenericDeciduous, + GenericShrub } public class Cell { - // public Boolean _hasTree = false; - public CellStatus status { + public CellStatus Status { + get; + private set; + } + + public String StatusAdjective { + get { + return this.Status.ToString().Replace("Tree", ""); + } + } + + public TreeType Type { get; private set; } - public Boolean hasTree { + public String TypeName { + get { + return this.Type.ToString().Replace("Generic", ""); + } + } + + public Boolean HasTree { get { - return this.status == CellStatus.LivingTree; + return this.Status == CellStatus.LivingTree; + } + } + + public Boolean HasWater { + get { + return this.Status == CellStatus.Water; } } - public DateTime planted; + public DateTime Planted; - public void addTree(DateTime datetime) { - this.status = CellStatus.LivingTree; + public void AddTree(DateTime datetime, TreeType type) { + this.Status = CellStatus.LivingTree; - this.planted = datetime; + this.Planted = datetime; + + this.Type = type; } - public void removeTree() { - this.status = CellStatus.Clear; + public void AddWater() { + this.Status = CellStatus.Water; } - public void markTreeDead() { - this.status = CellStatus.DeadTree; + public void RemoveTree() { + this.Status = CellStatus.Clear; + } + + public void MarkTreeDead() { + this.Status = CellStatus.DeadTree; } } } diff --git a/isometric-park-fna/Components/AreaComponent.cs b/isometric-park-fna/Components/AreaComponent.cs --- a/isometric-park-fna/Components/AreaComponent.cs +++ b/isometric-park-fna/Components/AreaComponent.cs @@ -1,4 +1,3 @@ - using Microsoft.Xna.Framework; using Encompass; @@ -7,5 +6,6 @@ public struct AreaComponent : IComponent { public Vector2[] squares; + public Tool Tool; } } diff --git a/isometric-park-fna/Components/BudgetLineComponent.cs b/isometric-park-fna/Components/BudgetLineComponent.cs --- a/isometric-park-fna/Components/BudgetLineComponent.cs +++ b/isometric-park-fna/Components/BudgetLineComponent.cs @@ -5,7 +5,6 @@ public struct BudgetLineComponent : IComponent { - public string category; public decimal amount; } diff --git a/isometric-park-fna/Components/CursorComponent.cs b/isometric-park-fna/Components/CursorComponent.cs new file mode 100644 --- /dev/null +++ b/isometric-park-fna/Components/CursorComponent.cs @@ -0,0 +1,11 @@ +using Microsoft.Xna.Framework; + +using Encompass; + +namespace isometricparkfna.Components { + + public struct CursorComponent : IComponent { + public Vector2 position; + public int size; + } +} diff --git a/isometric-park-fna/Components/OptionsComponent.cs b/isometric-park-fna/Components/OptionsComponent.cs --- a/isometric-park-fna/Components/OptionsComponent.cs +++ b/isometric-park-fna/Components/OptionsComponent.cs @@ -4,6 +4,8 @@ public struct OptionsComponent : IComponent { public ProfanityLevel ProfanitySetting; + public float SoundEffectVolume; + public bool SoundEffectMuted; } } diff --git a/isometric-park-fna/Components/PointComponent.cs b/isometric-park-fna/Components/PointComponent.cs new file mode 100644 --- /dev/null +++ b/isometric-park-fna/Components/PointComponent.cs @@ -0,0 +1,11 @@ +using Microsoft.Xna.Framework; + +using Encompass; + +namespace isometricparkfna.Components { + + public struct PointComponent : IComponent { + public Vector2 Square; + public Tool Tool; + } +} diff --git a/isometric-park-fna/Components/PreserveComponent.cs b/isometric-park-fna/Components/PreserveComponent.cs new file mode 100644 --- /dev/null +++ b/isometric-park-fna/Components/PreserveComponent.cs @@ -0,0 +1,10 @@ + +using Encompass; +using System; + +namespace isometricparkfna.Components { + + public struct PreserveComponent : IComponent { + public DateTime date; + } +} diff --git a/isometric-park-fna/Components/SelectedComponent.cs b/isometric-park-fna/Components/SelectedComponent.cs --- a/isometric-park-fna/Components/SelectedComponent.cs +++ b/isometric-park-fna/Components/SelectedComponent.cs @@ -3,7 +3,15 @@ namespace isometricparkfna.Components { + public enum SelectionType { + None, + Window, //Selected in a window + Area, //Selecting an area + Tool //Selecting a tool + } + public struct SelectedComponent : IComponent { public bool selected; + public SelectionType Type; } -} \ No newline at end of file +} diff --git a/isometric-park-fna/Components/StructureComponent.cs b/isometric-park-fna/Components/StructureComponent.cs new file mode 100644 --- /dev/null +++ b/isometric-park-fna/Components/StructureComponent.cs @@ -0,0 +1,17 @@ + +using Encompass; + +using isometricparkfna.Messages; + +namespace isometricparkfna.Components { + public enum Structure + { + None, + Tower + } + + public struct StructureComponent : IComponent { + public Structure Structure; + // public DateTime Placed; + } +} diff --git a/isometric-park-fna/Components/ToggleToolComponents.cs b/isometric-park-fna/Components/ToggleToolComponents.cs new file mode 100644 --- /dev/null +++ b/isometric-park-fna/Components/ToggleToolComponents.cs @@ -0,0 +1,19 @@ +using Encompass; + +using isometricparkfna.Messages; + +namespace isometricparkfna.Components { + + public enum Tool + { + None, + Preserve, + Dezone, + Tower, + Bulldozer + } + + public struct ToolComponent : IComponent { + public Tool Tool; + } +} diff --git a/isometric-park-fna/Content/64x64_Objects.png b/isometric-park-fna/Content/64x64_Objects.png new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b78f4caf024dfde1de84ed9852d2abb9bcd6fa10 GIT binary patch literal 35820 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 diff --git a/isometric-park-fna/Content/Bell.wav b/isometric-park-fna/Content/Bell.wav new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5cb7b9e3c0e4ae89e0769450bc17d3076e15e7ab GIT binary patch literal 325004 zc$`c*1ymH>_jk6)T^g3|PC-CW!UD0y4s20BySuSFKE>{C5JeQlLNGv5rMq*fWn=Dt z=Kaoh&Yv^qoi}f8z1w$*j0g*h>EglUfs=+tFI#J+4FD8yV8|nYST!C9Kn(NetesQW z$%Fs@N0Em^9xhpV|ESjR~$P!7>BT{%_A<>5&s704wrpPWI;Hu_R!&goqO% z;y}P0|2tt2odGNW`T$r1co1NBg6Iig^WVAGe|sD9m4SC9bi4>;Ujh>VVE^CR55SJB z%y|gehY-sCM1TQ=$p6-002i`%0|+JS|MvX}oiM^;7!iiqdjpIi?4|B1&LGrgl65*+=Mbz&fZ>F~RDv~`Z2pHeiLBv-R}{gT zPQFGG85k~0h_s8y;Yvbh6QQ|`U@N$_2>Sm%T_E)D5ozOy!XFZm?h^`k z2-tIgO8|F?T^}YUL*>+L1ef|o_pkB^5c0T##O>= zA6d5%6z1eI;rN7zcZ%Ho98u1Ba;ft~hMh!dC&(s=-0K;@RwCQ~Y_W-4fkC`YXkH?R zXUYCN5$qb_c#aTxMr61}VsRw2Y!&kc-?Q z#2Lx26UZ9`>+yeInb)@jAfD`Rlf$D#hm3c9BcgsH!ekIhz7tZZ1f_x~=Qq*JPja0+ zqLW^tfm(8xzeMbI;!z56Q(cOcgio<|?;@fq3FW_p`v-s&fHZ)2#L7PjM@HH*B10m% zcpQN_PpA4mpBAczeFY!z{pjpX$qq0BJ)0gweyNj4n-zW_=AUIDx( zq!^Bwgz`HgQWDX_3xarr$Z-BY#WL#3AqpuV=y^n>Dx%eTauGQ|H9#9c4L}b-Gl9t` zuMFfLg8PZ6k&&kr;0u6^XuFwE&iM}}lK_;FR}RIJQlnV18Wc;dgm7W_mI4$J6EN0M zr$7Qw3_ufAa|wJoF$cp135piQ-d#>aDj+&!h%-UKqgeejC^v`?F_Y&1LkXHs*n_~U2 zotTD^t(Yh?pPV28v!Pf4LMZlX#uTe_Mi@p;CkmuY0VPUcu2TolNH!&erjn?_h+