Commit Graph

224 Commits

Author SHA1 Message Date
0b9bdeceff update positions of falling enemies per frame (and filter them out too) 2025-02-15 02:17:01 +00:00
219b37053b add functionality for falling enemies to turn into player projectiles when attacked 2025-02-15 02:02:48 +00:00
b8934e3add add function to generate quad tree from falling enemies 2025-02-15 01:52:19 +00:00
e758a5a13c refactor falling_enemy to be contained in FallingEnemyMap, instead of a plain vector 2025-02-15 01:42:29 +00:00
5412a71d30 add code to make enemy fall when attacked by projectile (assuming health is enough) 2025-02-14 18:18:46 +00:00
c75e7bc33b add attacked enemies who are defeated to player's list of defeated_enemies, allowing them to be shot as projectiles 2025-02-14 13:15:45 +00:00
b239dfa04d add functionality to have enemies tract to player's attack 2025-02-14 12:59:22 +00:00
50b57b9ef9 a little refactoring (Player.runPhysicsAndInput function now does just that, instead of also checking for collisions with enemy) 2025-02-14 11:19:24 +00:00
e00db5d8a3 make enemies move per loop (calling update EnemyMap by calling EnemyBehaviour) 2025-02-14 10:43:27 +00:00
46a1836ae2 additional refactoring, moving player type into its own directory 2025-02-14 10:13:03 +00:00
d1e23b5455 refactor platform and wall type declarations out into platform.sml and wall.sml 2025-02-14 09:26:07 +00:00
93aebe5fa1 a bit of refactoring with regards to enemy's structures and files 2025-02-14 09:06:32 +00:00
93aae6dc1f remove dead code 2025-02-14 08:46:28 +00:00
c5cea8dcb3 partial refactoring so we use EnemyMap.t for collection of enemies 2025-02-13 13:36:30 +00:00
265c8db88a implement EnemyMap functor (todo: migrate from 'enemy vector' type to 'EnemyMap.t' type) 2025-02-13 12:14:50 +00:00
f1521acec1 refactor file order in preparation for adding GapMap for enemy 2025-02-13 11:24:44 +00:00
4c8b404c09 add code so that bat also moves vertically (in addition to previous horizontal movement) when updating enemy state 2025-02-12 00:25:55 +00:00
1dc3116b77 add fields to enemy which are relevant to bat's state 2025-02-11 23:54:13 +00:00
3db27a4107 cut time which bat rests for in half 2025-02-11 19:40:08 +00:00
d0d93780fb initial implementation of bat's update function (todo: make bat oscillate up and down while it also moves in x axis, and also code bat's collisions with player, adding to falling list if necessary, or being filtered by player's attack) 2025-02-11 19:38:02 +00:00
3202c67f47 begin adding variant for STRAIGHT_BAT enemy 2025-02-11 18:05:44 +00:00
534852c8bf don't make 'falling' enemies come back down (fall), but lift them up instead, filtered when reaching beyond the top of the world. It's a little more fluid with current physics for enemies to be 'spirited away' rather than fall. 2025-02-09 13:14:38 +00:00
4301e9ae38 add line-of-sight, so FOLLOW_SLIME will only follow player if player is in specific range of enemy (within 199 pixels currently). 2025-02-09 10:05:12 +00:00
07d31119a7 code functionality to filter out falling enemy from list if falling enemy is colliding with player 2025-02-08 11:05:58 +00:00
26870816db add code so that enemy gains a new projectile when attacking falling enemies, and also draw the falling enemies 2025-02-08 10:48:34 +00:00
51401231e1 update state of falling enemies per loop 2025-02-08 09:49:32 +00:00
38640b14a2 add falling_enemies type to game (these enemies can be picked up and thrown), and thread fallingEnemies through enemy.sml to set up scaffolding for them 2025-02-08 09:20:10 +00:00
1c105193e2 extract a couple of collision functions to a separate module for reuse 2025-02-08 08:39:04 +00:00
f9fe009d59 have patrol slime and follow slime also react to player's ChainEdge attack, and not only player's projectiles 2025-02-08 04:02:17 +00:00
23cf480dad reimplement enemy-filter loop (now enemy's reaction, and decision to possibly filter, is fully under enemy's control - physics, damage reaction, whether to filter or update enemy's state, etc.) 2025-02-08 01:05:39 +00:00
1be44335cb add asset for ChainEdge (attack) 2025-02-07 13:42:38 +00:00
7734496a8c remove some references to charging when/ife we don't need it, and also only trigger throw/attack on new button press (if held, throw/attack is not repeated) 2025-02-07 12:32:38 +00:00
283962c176 make length of main attack increase and decrease 2025-02-07 11:22:23 +00:00
f6cd818c42 display fieldVec which is more accurate to the attack's hitbox for now 2025-02-07 10:40:47 +00:00
35eab0f789 reimplement attack patches (todo: add an int to the MAIN_ATTACKING variant to make the attack grow past some limit, and a bool to indicate whether the attack should grow in length or shrink) 2025-02-07 09:10:10 +00:00
f5071a953b make sure playedr only checks collisions with enemy in the case that player was previously attacked 2025-02-06 17:42:45 +00:00
e1e20230d6 rip out player-enemy.sml and let player react to enemy collisions independently of enemy reaction to player 2025-02-06 17:37:48 +00:00
886e3a674d progress checking collisions of enemy inside functor instead 2025-02-06 09:53:31 +00:00
7142f5dc66 a little more deliberate about timing of when player's patches should be applied 2025-02-05 19:33:56 +00:00
e1e1228983 delete pointer quad tree because it is twice as slow to construct as the vector-based implementation 2025-02-01 10:11:32 +00:00
bf3f0b3927 done implementing pointer quad tree (next: benchmark the two) 2025-02-01 09:54:35 +00:00
28380957b3 start implementing new quad tree that only uses pointers (just to test performance between vector-using implementation and only-pointer-using implementation) 2025-02-01 09:44:22 +00:00
0a9ab389c2 fix bug in tracing left jump path: we should consider rightmost x coordinate from enemy (which we now do) 2025-02-01 01:33:26 +00:00
9e9675aaab decrease memory consumption of quad tree by refraining from storing bounding box metadata (except for the global root which stores the width and height) 2025-02-01 01:03:57 +00:00
73aeeb5301 remove timing print statements from game-type.sml 2025-01-31 06:26:09 +00:00
547b5bac97 use an immutable vector (always of length 4) for representing quad tree's internal nodes 2025-01-31 06:24:51 +00:00
76c5f9d662 change maxSize of quad tree's leaf nodes (from a max length of 3 to a max length of 9) 2025-01-31 06:01:02 +00:00
e23e2f0997 precompute graph to be used for dijkstra's algorithm, resulting in CPU usage that never exceed 7/home/humza/Downloads/sml/oh-my-stars/fcore/path-finding.sml with 5 enemies and eliminating lag 2025-01-31 04:32:53 +00:00
f3a0b2bc81 write code for new loop implementation of dijkstra's algorithm, which uses a precomputed graphy; however, this is not used yet as we need to add the graph to the game type first, and pass it along with other parameters, down to the path-finding.sml function 2025-01-31 04:10:58 +00:00
a24ada0f37 implement code for precomputing reachable platforms so it can be reused (but haven't modified implementation of Dijkstra's algorithm to use it, and haven't added it to game type yet) 2025-01-31 03:46:28 +00:00