Commit Graph

311 Commits

Author SHA1 Message Date
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
0cdd81189c implement function to trace left jump, thereby completing 'build-graph.sml' (and fix a bug in trace-jump.sml where a left-tracing function mistakenly made a tail call to a right-tracing function) 2025-01-31 00:35:36 +00:00
70f04c2e92 implement function in build-graph.sml to trace path of right jump to detect reachable platforms (different from deciding how enemy should move to next platform in trace-jump.sml) 2025-01-31 00:18:17 +00:00
2103a8e8ac implement quad tree folder for building graph horizontally (but still need to trace the left/right paths) 2025-01-30 13:25:39 +00:00
bbb957f016 get path-finding.sml to use function in build-graph.sml to find reachable platforms, and remove now-dead code from path-finding.sml 2025-01-30 13:06:32 +00:00
755e5da7f7 fix bug in bin-vec.sml 'deleteMin' function: we previously deleted two elements, but we are supposed to delete one, and now this is fixed 2025-01-30 12:55:36 +00:00
29389d3561 try coding a level 2025-01-30 08:34:38 +00:00
859414035d when tracing left jump, consider the enemy's 'x' coordinate to be the leftmost point of the enemy 2025-01-30 08:21:15 +00:00
73b4e607ae delete function to getPlatformBelowPlayer because it is no longer need now that player stores platID (but still keep function to get platform below enemy as that is still useful) 2025-01-30 00:11:01 +00:00
2446f3ea14 in trace-jump.sml, begin descent depending on enemy's size 2025-01-29 23:51:02 +00:00
d55126b52a implement left jump/left drop tracing in trace-jump.sml, and verified that it works 2025-01-29 23:04:28 +00:00
89abab31ab implement function to trace drop (while moving right) 2025-01-29 19:35:40 +00:00
97a638b54d from TraceJump.traceRightJumpAscent function, check (after we have reached ascent and if we have still not found nextPlatID in path) if we can find nextPlatID if we trace the descent path after having reached the ascent 2025-01-29 19:24:03 +00:00
fac7a81767 trace path we can (move right + jump) using quad tree, as it is easier to implement than a pure math based approach 2025-01-29 19:12:24 +00:00