"version": "2.0.0",
"tasks": [
{
- "label": "Run game",
+ "label": "Build game",
"type": "shell",
"options": {
"cwd": "${workspaceFolder}/run_tree"
},
"problemMatcher": "$onyx",
"command": "./run.sh",
+ "args": ["build"],
"group": {
"kind": "build",
"isDefault": true
}
+ },
+ {
+ "label": "run",
+ "type": "shell",
+ "options": {
+ "cwd": "${workspaceFolder}/run_tree"
+ },
+ "problemMatcher": "$onyx",
+ "command": "./run.sh",
+ "args": ["run"],
+ "dependsOn": "Build game",
}
]
}
\ No newline at end of file
-onyx run -V -I ../src build $@
+dest=game.wasm
+
+case "$1" in
+ build) shift; onyx -V -I ../src build -o $dest $@ ;;
+ run) onyxrun $dest ;;
+ *) onyx run -V -I ../src build $@ ;;
+esac
\ No newline at end of file
:beer
name="Beer"
-texture_path="./assets/images/spritesheet.png"
-texture_pos = 0 0
-texture_size = 16 16
+sprite.sheet="./assets/images/spritesheet.png"
+sprite.pos = 0 0
+sprite.size = 16 16
+sprite.color.r = 1
+sprite.color.g = 1
+sprite.color.b = 1
+sprite.color.a = 1
+:burger
+name="Burger"
+sprite.sheet="./assets/images/spritesheet.png"
+sprite.pos = 16 0
+sprite.size = 16 16
+sprite.color.r = 1
+sprite.color.g = 1
+sprite.color.b = 1
+sprite.color.a = 1
velocity.x = -0.0000
velocity.y = 0.0000
:PlayerComponent
-holding = 0
+holding = 150
:RenderComponent
layer = 10
color.r = 0.0000
color.b = 0.0000
color.a = 1.0000
+[Item_Entity]
+id = 150
+flags = 6
+size.x = 16
+size.y = 16
+:ItemComponent
+item = "burger"
\ No newline at end of file
consume_timeout: f32;
init :: (use this: ^PatronComponent) {
- order_item = "beer";
+ printf("{*}\n", ^item_store.items);
+ items := item_store.items.entries;
+ r := random.between(0, (items.count - 1));
+ order_item = items[r].key;
+ printf("{} {} {}\n", order_item, r, items.count);
}
added :: (use this: ^PatronComponent, entity: ^Entity) {
r.h -= 4;
item_data := item_store->get_item(order_item);
- texture, loaded := texture_lookup(item_data.texture_path);
-
- immediate_set_color(item_data.color);
- if !loaded {
- immediate_rectangle(r.x, r.y, 16, 16);
- } else {
- tp := item_data.texture_pos;
- ts := item_data.texture_size;
- immediate_subimage(^texture, r.x, r.y, r.w, r.h,
- tp.x, tp.y, ts.x, ts.y);
- }
+ item_data.sprite->render(r);
}
}
}
\ No newline at end of file
Item :: struct {
name: str;
- color := Color.{ 1, 1, 1 };
- texture_path : str;
- texture_pos := Vector2.{0, 0};
- texture_size := Vector2.{1, 1};
+ sprite : Sprite;
}
Item_Store :: struct {
return;
}
- immediate_set_color(item_data.color);
-
- texture, loaded := texture_lookup(item_data.texture_path);
- if !loaded {
- immediate_rectangle(r.x, r.y, r.w, r.h);
- } else {
- tp := item_data.texture_pos;
- ts := item_data.texture_size;
- // immediate_image(^texture, r.x, r.y, r.w, r.h);
- immediate_subimage(^texture, r.x, r.y, r.w, r.h,
- tp.x, tp.y, ts.x, ts.y);
- }
+ item_data.sprite->render(r);
}
}
}
main :: (args) => {
+ // random.set_seed(os.time());
+
debug_set_level(.Debug);
if !glfwInit() {
debug_log(.Critical, "Failed to initialize GLFW!");