## scope
-[ ] Bullet shooter
+[ ] Ant simulator
+[ ] Cellular automata
+
+## Game field
+
+[ ] 20x20 map with a set spawn for player and enemy
+[ ] Load map with pre-determined tiles
+[ ] Each tile can have a graphic
+ - a controlling player (0: nobody or 1: player, 2: enemy, 3-255: wild insects) (display as tile that animates)
+ - a number of ants (0-255)
+ when there is food nearby (tile next to ants) it is collected
+ and new ants spawn
+ - amount of food (regenerates 0-255) (display as tile)
+ - if no food is nearby some ants die
+ - if food is nearby ants spawn and food is collected
+ - food tiles cannot be occupied, only collected from
+ - flags
+ - special tile type: e.g. hive
+[ ] The field tiles are updated every frame (up to a set amount, start in top left and go down)
+[ ] only one action may be active at a time (e.g. spread, attack etc)
+ actions may be animated (e.g. attack shows a sword sprite)
+[ ] when the cursor hovers over a tile show info about it in window (e.g. ant number, food number, controlling actor)
+
+
+
+## Actors
+
+[ ] Player
+[ ] Player controls a cursor
+[ ] enemy
+[ ] Enemy performs actions based on a map script
+[ ] Each player has a spawn rate of ants based on food collected
+[ ] if a player loses their hive they lose
+
+Possible actions:
+[ ] gather food (clears tile)
+[ ] spread to tile
+ if spreading to an empty tile all nearby tiles lose some population
+ and it moves to the new tile.
+ if spreading to an enemy controlled tile the populations fight
+ whoever has more units nearby wins. if tiles get cleared because of this
+ they become empty. (display attack animation on map)
+[ ] actions can only be performed when the player controls an adjacent tile
+[ ] select actions from a menu when clicking on a tile
-## Randomness
-
-
-## Weapons
-
-## Inventory
-[ ] Stackable upgrade items
-[ ] Each time has an inventory slot, an enable bit as well as a stack count
-[ ] Each stack increases the overall effect
-[ ] Items can be consumed to get temporary buffs (e.g. hp, ammo etc)
-[ ] Each item type has a callback per stat that the stat functions call if unit is player type
-
-## Mechanics
-
-[ ] shootable doors and walls
-[ ] remove stats -> only leave hp and def
-
-## animations
-
-[x] make table for each actor type where animations can be looked up
- e.g. idle for each, walk left, walk right, walk up, walk down, attack etc
-
-## movement
-
-[ ] rework movement to be pixel instead of tile based
-[ ] each actor has 8 collision points that get checked every frame
-[ ] multi-directional movement -> handle collision for each cardinal direction
-[ ] when a collision occured -> movement/2 and try again to get as close as possible until movement is 0
-[ ] player can turn with direction keys
-[ ] if shoot is pressed turning is disabled and the direction is held
-
-## actors:
-
-[ ] actors have a specific collision box
-[ ] actors update code is based on type
-
-## map
-
-[ ] maps are vertical levels
-[ ] each map can have many map objects
-[ ] map objects are based on the current page
-[ ] objec types:
- - wall (collision rectangle)
- - shootable wall (takes damage)
- - enemy spwaner (spwans n enemies of a specific type)
- - enemies always spawn slightly off screen and walk in once a spwaner is triggered
-[ ] scrolling is only possible up. moving back cannot be done
-[ ] maps can run code when objects are loaded based on type
-
-## sate machine
-
-[ ] rework state machine to only consist of a sub pointer that can be changed with a call