undar-lang/docs/project-syntax-example/src/common.ztl

69 lines
1.5 KiB
Plaintext

/**
* Camera .
*/
type Camera {
init(pos Vec3, look Vec3) {
this.setting = "CAMERA_PERSPECTIVE";
this.pov = 45.0;
this.up = (0.0, 1.0, 0.0);
this.pos = pos;
this.look = look;
}
}
/**
* Player .
*/
type Player {
init (username str, pos Vec3, color Color) {
this.server = Client("tcp://localhost:25565");
this.username = username;
this.pos = pos;
this.color = color;
this.camera = Camera(
(this.pos.x + 10.0,
this.pos.y + 10.0,
this.pos.z),
this.pos
);
}
login (password str) Player[] {
this.server.attach(this.username, password);
this.players = server.open("players");
return players.read();
}
logout() {
this.players.flush();
this.server.clunk();
}
update() {
if (key_down("right")) {
this.pos.x = this.pos.x + 0.2;
this.server.write(Command(this.username, KEY_RIGHT))
}
if (key_down("left")) {
this.pos.x = this.pos.x - 0.2;
this.server.write(Command(this.username, KEY_LEFT))
}
if (key_down("down")) {
this.pos.z = this.pos.z + 0.2;
this.server.write(Command(this.username, KEY_DOWN))
}
if (key_down("up")) {
this.pos.z = this.pos.z - 0.2;
this.server.write(Command(this.username, KEY_UP))
}
this.camera.sync();
}
}
const RED is [255, 0, 0];
const WHITE is [0, 0, 0];
const PURPLE is [255, 255, 0];