Zombies follow the player
This commit is contained in:
+1
-1
Submodule Toy updated: 75cb1dfa86...a00739f580
+16
-1
@@ -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
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user