From: Brendan Hansen Date: Wed, 2 Mar 2022 15:41:04 +0000 (-0600) Subject: borger X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=30404ea0f5cc57bfc3d02d9c54f9518e7f2f59c5;p=bar-game.git borger --- diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 29e03a4..c78e890 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -4,17 +4,29 @@ "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 diff --git a/run_tree/assets/images/spritesheet.png b/run_tree/assets/images/spritesheet.png index 10caf54..170834d 100644 Binary files a/run_tree/assets/images/spritesheet.png and b/run_tree/assets/images/spritesheet.png differ diff --git a/run_tree/run.sh b/run_tree/run.sh index a2db083..4cdba56 100755 --- a/run_tree/run.sh +++ b/run_tree/run.sh @@ -1 +1,7 @@ -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 diff --git a/run_tree/scenes/default.items b/run_tree/scenes/default.items index 461847a..12c9b3c 100644 --- a/run_tree/scenes/default.items +++ b/run_tree/scenes/default.items @@ -1,7 +1,20 @@ :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 diff --git a/run_tree/scenes/quick_save_new.scene b/run_tree/scenes/quick_save_new.scene index 97090ee..01a3580 100644 --- a/run_tree/scenes/quick_save_new.scene +++ b/run_tree/scenes/quick_save_new.scene @@ -439,7 +439,7 @@ facing = 3 velocity.x = -0.0000 velocity.y = 0.0000 :PlayerComponent -holding = 0 +holding = 150 :RenderComponent layer = 10 color.r = 0.0000 @@ -447,3 +447,10 @@ color.g = 1.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 diff --git a/src/entity/components/patron.onyx b/src/entity/components/patron.onyx index bb94c8d..fd2fb88 100644 --- a/src/entity/components/patron.onyx +++ b/src/entity/components/patron.onyx @@ -20,7 +20,11 @@ PatronComponent :: struct { 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) { @@ -145,17 +149,7 @@ PatronComponent :: struct { 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 diff --git a/src/entity/items.onyx b/src/entity/items.onyx index eebbf0a..dfa5d99 100644 --- a/src/entity/items.onyx +++ b/src/entity/items.onyx @@ -5,10 +5,7 @@ use package core 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 { @@ -112,18 +109,7 @@ item_store_get_item :: (use this: ^Item_Store, id: str) -> ^Item { 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); } } diff --git a/src/main.onyx b/src/main.onyx index fa1abb9..c464bb3 100644 --- a/src/main.onyx +++ b/src/main.onyx @@ -141,6 +141,8 @@ create_window :: () => { } main :: (args) => { + // random.set_seed(os.time()); + debug_set_level(.Debug); if !glfwInit() { debug_log(.Critical, "Failed to initialize GLFW!");