Zombies follow the player

This commit is contained in:
2026-05-30 20:36:06 +10:00
parent 7e1c589eab
commit 8502841e89
4 changed files with 24 additions and 3 deletions
+1 -1
Submodule Toy updated: 75cb1dfa86...a00739f580
+16 -1
View File
@@ -10,10 +10,25 @@ fn wander(actor: Opaque) {
actor.setX(actor.x + rand() % 5); actor.setX(actor.x + rand() % 5);
actor.setY(actor.y + rand() % 5); actor.setY(actor.y + rand() % 5);
if (playerRef.x > actor.x) {
actor.setX(actor.x + 1);
}
else {
actor.setX(actor.x - 1);
}
if (playerRef.y > actor.y) {
actor.setY(actor.y + 1);
}
else {
actor.setY(actor.y - 1);
}
counter++; counter++;
} }
//player controlled character //player controlled character
var playerRef: Opaque = null;
var playerMaxMotion: Int = 5; var playerMaxMotion: Int = 5;
var playerMotionX: Int = 0; var playerMotionX: Int = 0;
var playerMotionY: Int = 0; var playerMotionY: Int = 0;
@@ -57,7 +72,7 @@ fn onReady() {
//spawn the player //spawn the player
loadSprite("player", "assets/parvati.png", 32, 32); loadSprite("player", "assets/parvati.png", 32, 32);
spawnActorAt("player", playerOnFrame, 300, 300); playerRef = spawnActorAt("player", playerOnFrame, 300, 300);
} }
fn onFrame() { fn onFrame() {
+5 -1
View File
@@ -81,7 +81,7 @@ static void api_loadSprite(Toy_VM* vm, Toy_FunctionNative* self) {
} }
static void api_spawnActorAt(Toy_VM* vm, Toy_FunctionNative* self) { static void api_spawnActorAt(Toy_VM* vm, Toy_FunctionNative* self) {
//sprite, onStep, x, y -> void //sprite, onStep, x, y -> Opaque(Actor)
(void)self; (void)self;
//check for initialization //check for initialization
@@ -172,6 +172,10 @@ static void api_spawnActorAt(Toy_VM* vm, Toy_FunctionNative* self) {
.enabled = true, .enabled = true,
}; };
//leave the actor on the stack
Toy_Value value = TOY_OPAQUE_FROM_POINTER(newActorPtr);
Toy_pushStack(&vm->stack, value);
Toy_freeValue(spriteValue); Toy_freeValue(spriteValue);
Toy_freeValue(key); Toy_freeValue(key);
Toy_freeValue(step); Toy_freeValue(step);
+2
View File
@@ -19,6 +19,7 @@
// #include "bytecode_inspector.h" // #include "bytecode_inspector.h"
// #include "bucket_inspector.h" // #include "bucket_inspector.h"
#include "stack_inspector.h"
//utils //utils
unsigned char* readFile(char* path, int* size) { unsigned char* readFile(char* path, int* size) {
@@ -290,6 +291,7 @@ int main() {
freeActorAPI(&vm); freeActorAPI(&vm);
// inspect_bucket(&vm.memoryBucket); // inspect_bucket(&vm.memoryBucket);
inspect_stack(vm.stack);
Toy_freeVM(&vm); Toy_freeVM(&vm);
free(entryCode); free(entryCode);