HexCardsClient/field.wren
2021-05-23 16:20:37 +02:00

48 lines
No EOL
1.5 KiB
Text

import "luxe: world" for Prototype, Entity, Transform
import "utils/vec" for Vec
var Slots = [
[-1, 3, -2], [ 0, 2, -2], [ 1, 1, -2], [ 2, 0, -2], [ 3, -1, -2],
[-2, 3, -1], [-1, 2, -1], [ 0, 1, -1], [ 1, 0, -1], [ 2, -1, -1], [ 3, -2, -1],
[-3, 3, 0], [-2, 2, 0], [-1, 1, 0], [ 0, 0, 0], [ 1, -1, 0], [ 2, -2, 0], [ 3, -3, 0],
[-3, 2, 1], [-2, 1, 1], [-1, 0, 1], [ 0, -1, 1], [ 1, -2, 1], [ 2, -3, 1],
[-3, 1, 2], [-2, 0, 2], [-1, -1, 2], [ 0, -2, 2], [ 1, -3, 2]
]
var Hand = [
[-1, 2, -1], [ 0, 1, -1], [ 1, 0, -1], [ 2, -1, -1],
[-2, 2, 0], [-1, 1, 0], [ 0, 0, 0], [ 1, -1, 0], [ 2, -2, 0]
]
var x_angle = 1 * Num.tau / 12
var y_angle = 5 * Num.tau / 12
var z_angle = 9 * Num.tau / 12
var X_Dir = [x_angle.cos, x_angle.sin, 0]
var Y_Dir = [y_angle.cos, y_angle.sin, 0]
var Z_Dir = [z_angle.cos, z_angle.sin, 0]
class Field{
root{_root}
construct new(world){
_world = world
_root = Entity.create(world)
Transform.create(_root)
_slots = []
}
add_slot(slot: List /*of Num*/){
var pos = Vec.add(Vec.add(Vec.mul(slot.x, X_Dir), Vec.mul(slot.y, Y_Dir)), Vec.mul(slot.z, Z_Dir))
pos = Vec.mul(pos, 66)
var new_instance = Prototype.create(_world, "prototype/card", "card(%(slot.x), %(slot.y), %(slot.z))", pos, [0,0,0], [2,2,2])
Transform.link(new_instance, _root)
}
add_slots(slots: List /*of List of Num*/){
for(slot in slots){
add_slot(slot)
}
}
}