50 lines
1.0 KiB
Plaintext
50 lines
1.0 KiB
Plaintext
import standard;
|
|
import node;
|
|
|
|
var tilemap: opaque = null;
|
|
var player: opaque = null;
|
|
|
|
var collisionMap: [[bool]] = null; //cache this, since it won't change during a level
|
|
|
|
var stepCounter: int = 0;
|
|
var drawCounter: int = 0;
|
|
|
|
//lifecycle functions
|
|
fn onLoad(node: opaque) {
|
|
tilemap = node.loadChild("scripts:/gameplay/tilemap.toy");
|
|
player = node.loadChild("scripts:/gameplay/lejana.toy");
|
|
}
|
|
|
|
fn onInit(node: opaque) {
|
|
tilemap.callNodeFn("generateFromSeed", clock().hash(), 16, 16);
|
|
collisionMap = tilemap.callNodeFn("getCollisionMap");
|
|
}
|
|
|
|
fn onStep(node: opaque) {
|
|
if (++stepCounter >= 60) {
|
|
print "FPS: " + string drawCounter + " / 60";
|
|
stepCounter = 0;
|
|
drawCounter = 0;
|
|
}
|
|
}
|
|
|
|
fn onDraw(node: opaque) {
|
|
drawCounter++;
|
|
}
|
|
|
|
//utils - polyfills
|
|
fn loadChild(parent: opaque, fname: string) {
|
|
var child: opaque = loadNode(fname);
|
|
parent.pushNode(child);
|
|
return child;
|
|
}
|
|
|
|
//connective functions
|
|
fn getCollisionAt(node: opaque, x: int, y: int) {
|
|
if (collisionMap == null) {
|
|
return false;
|
|
}
|
|
|
|
return collisionMap[x][y];
|
|
}
|