Tim Van Baak
3d664208b5
Add Season.First, replacing FIRST_TURN
2024-08-15 16:36:50 -07:00
Tim Van Baak
25d903d91a
Refactor Season into a value struct
...
This keeps the rich features of a Season type without requiring constant string parsing (as much) or going through World to do lookups to get the objects. Since seasons now have value equality instead of reference equality, it's easier to get access to whem when needed. They're still, fundamentally, sugar over a tuple.
2024-08-15 13:51:41 -07:00
Tim Van Baak
566d29e539
Add function to extract information from season keys
2024-08-15 08:51:17 -07:00
Tim Van Baak
4b2712e4bc
Reduce Power to string
2024-08-15 07:54:53 -07:00
Tim Van Baak
bfdf2d5636
Reduce Unit.Power to string
2024-08-15 07:37:05 -07:00
Tim Van Baak
abbe929122
Designation -> Key
2024-08-15 06:52:08 -07:00
Tim Van Baak
f2d3d5a583
Remove GetSeason(string)
2024-08-14 22:03:56 -07:00
Tim Van Baak
868022d34f
Convert World.Seasons to a dictionary
2024-08-14 22:00:22 -07:00
Tim Van Baak
2484d4f0fd
Get world serialization round trip kinda working
2024-08-14 21:12:58 -07:00
Tim Van Baak
a4002a1081
Serialize unit type as string
2024-08-14 18:53:36 -07:00
Tim Van Baak
8f5dc63833
Use unit designations for order history instead of references
2024-08-14 18:49:27 -07:00
Tim Van Baak
73d849e117
Working World roundtrip serialization
...
There are probably still reference equality issues here since Unit still has Season and Power objects. The test case builder also still works on reference equality in some places so the second part of adjudication is broken.
2024-08-14 09:51:18 -07:00
Tim Van Baak
31bd6a45cb
Define JSON serialization options on World
2024-08-14 09:16:53 -07:00
Tim Van Baak
5ad57465d8
Remove reference from Unit.Past
2024-08-14 09:06:05 -07:00
Tim Van Baak
885628900b
Remove Location reference from Unit
2024-08-14 09:06:05 -07:00
Tim Van Baak
e1772ce60b
Refactor away Unit.Province
2024-08-14 09:06:05 -07:00
Tim Van Baak
abaa7f7a92
Shift usage of Unit.Location to Unit.LocationId
...
This is in preparation for removing province and location references from Unit
2024-08-14 09:06:04 -07:00
Tim Van Baak
442015b942
Always name locations
2024-08-14 09:06:04 -07:00
Tim Van Baak
228ad53cca
Enable basic World serialization
2024-08-14 09:06:04 -07:00
Tim Van Baak
f1563b8f5f
Delete Season.Coord
2024-08-14 09:06:04 -07:00
Tim Van Baak
345d54f960
Refactor timelines and season creation logic into World
2024-08-14 09:06:04 -07:00
Tim Van Baak
58f877425a
Add more JsonIgnores
2024-08-14 09:06:04 -07:00
Tim Van Baak
2f4c8b2a38
Store order history by timeline designation instead of reference
2024-08-14 09:06:04 -07:00
Tim Van Baak
9606307e12
Update Season ctor
2024-08-14 09:06:04 -07:00
Tim Van Baak
87685ec744
Refactor season futures into World
2024-08-14 09:06:04 -07:00
Tim Van Baak
752a898123
Use a simpler override where available
2024-08-14 09:06:04 -07:00
Tim Van Baak
400263ea0b
Rename PastId back to Past
2024-08-14 09:06:04 -07:00
Tim Van Baak
5e5483367d
Remove Season.Past so all lookups go through World
2024-08-14 09:06:04 -07:00
Tim Van Baak
81c9aa4859
Move more timeline logic from Season to World
2024-08-14 09:06:04 -07:00
Tim Van Baak
fca8b77a21
Move GetAdjacentSeasons to PathFinder
2024-08-14 09:06:04 -07:00
Tim Van Baak
b756959b0a
Replace most uses of Season creators to World
2024-08-14 09:06:04 -07:00
Tim Van Baak
b887e01334
Eliminate RootSeason field
2024-08-14 09:06:04 -07:00
Tim Van Baak
421e84b559
Update timeline designator usage
...
Timelines are now identified by strings and come first in timeline-turn tuples.
2024-08-14 09:06:04 -07:00
Tim Van Baak
780ae8b948
Refactor timeline factory to generate string ids
...
The strings are immediately shimmed back to ints for now
2024-08-14 09:06:03 -07:00
Tim Van Baak
bd8e0da6b6
Refactor province and power information into Map
2024-08-14 09:04:56 -07:00
Jaculabilis
39c3aabe45
Implement AdvanceTimeline resolution
2022-11-08 16:25:47 -08:00
Jaculabilis
46c28a087c
Shorten string representations
...
The new format for representing timeline, province, and season is T-PRO@S. Hopefully this is easier to read than the PRO T:S format.
2022-11-06 20:27:28 -08:00
Jaculabilis
5e74ffc19f
Apply null-forgiving operator where relevant
2022-04-07 15:48:46 -07:00
Jaculabilis
9f5ecaa16a
Add province shortcuts to decrease verbosity
2022-03-30 12:52:57 -07:00
Jaculabilis
6948db29df
Save previous orders so time travel can re-adjudicate them
2022-03-29 20:40:19 -07:00
Jaculabilis
6a6810ef07
Add basic movement phase update tests
2022-03-29 17:16:00 -07:00
Jaculabilis
d4e68844c6
Simplify world updates and expose root season
2022-03-28 22:34:57 -07:00
Jaculabilis
aa9c9c548b
Enable hold strength across parallel worlds
2022-03-28 17:41:38 -07:00
Jaculabilis
d6d9102f05
Add model for retreating unit information
2022-03-24 07:25:51 -07:00
Jaculabilis
a162e6c7ef
Finish filling out the standard map
2022-03-23 11:17:02 -07:00
Jaculabilis
c50dbf6b46
Add movement order validation tests
2022-03-22 21:30:20 -07:00
Jaculabilis
70b004edab
Define ToString methods on the main models
2022-03-15 17:36:47 -07:00
Jaculabilis
b0a8100641
Refactor World to avoid double enumeration
...
If an enumerable that created objects were passed, it would duplicate the objects when re-enumerated, which breaks all the reference equality logic.
2022-03-15 15:43:37 -07:00
Jaculabilis
18c5435c96
Refactor map definitions into World
2022-03-15 14:52:08 -07:00
Jaculabilis
8a7e90b949
Add movement phase order validation logic
2022-03-15 12:24:29 -07:00