borger
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 2 Mar 2022 15:41:04 +0000 (09:41 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 2 Mar 2022 15:41:04 +0000 (09:41 -0600)
.vscode/tasks.json
run_tree/assets/images/spritesheet.png
run_tree/run.sh
run_tree/scenes/default.items
run_tree/scenes/quick_save_new.scene
src/entity/components/patron.onyx
src/entity/items.onyx
src/main.onyx

index 29e03a42d219e301b174385e30269a7abb58e7e4..c78e8902580ef4f5645e4e99c342f42f46c67389 100644 (file)
@@ -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
index 10caf54a575751116b3c6918780b27f0d3e6fd8e..170834d4669f652c03141492415243b6ba6040d3 100644 (file)
Binary files a/run_tree/assets/images/spritesheet.png and b/run_tree/assets/images/spritesheet.png differ
index a2db0837ff0be6a518baa61d14d0d8168e8631cd..4cdba56316695fc1e2ef5de8c13bed184a486276 100755 (executable)
@@ -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
index 461847a8701a98518db713881a2029648ba054f1..12c9b3c9afc79be5d1d3f5e444ef59aaebb50281 100644 (file)
@@ -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
 
index 97090ee41923c88f1c3866338bc3b61451ca6943..01a3580d89600c2dc7b4690750d428e8e39b39cd 100644 (file)
@@ -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
index bb94c8df539fdf979cfdfb11b9276d77e6605d67..fd2fb888b005892712ea7c18a9694a2c08987914 100644 (file)
@@ -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
index eebbf0a7cab06410e057fa7c7e9d5605e0fc6e53..dfa5d99f93f9442dc4bd15c7b739240196db5c96 100644 (file)
@@ -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);
     }
 }
 
index fa1abb93d1f3114dc50ad20c4cb5a819ae69f8d9..c464bb376475bdacbd61bdc34716fccef63dda17 100644 (file)
@@ -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!");