spawning patrons at the entry way
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 2 Mar 2022 03:09:18 +0000 (21:09 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 2 Mar 2022 03:09:18 +0000 (21:09 -0600)
run_tree/scenes/quick_save_new.scene
src/entity/components/patron.onyx
src/game.onyx

index 8c8df206afb9d697a8d08a5ebc03d1eea274d6a6..45034deec5d2e978cb748cc3f00ab5cbf1b5e256 100644 (file)
@@ -82,57 +82,6 @@ color.g = 1.0000
 color.b = 1.0000
 color.a = 1.0000
 
-[Tap]
-id = 18
-flags = 3
-pos.x = 208.0000
-pos.y = 32.0000
-size.x = 32.0000
-size.y = 32.0000
-:RenderComponent
-layer = 0
-color.r = 1.0000
-color.g = 1.0000
-color.b = 1.0000
-color.a = 1.0000
-:DispenserComponent
-item = "beer"
-max_timeout = 2.0000
-
-[Tap]
-id = 19
-flags = 3
-pos.x = 176.0000
-pos.y = 32.0000
-size.x = 32.0000
-size.y = 32.0000
-:RenderComponent
-layer = 0
-color.r = 1.0000
-color.g = 1.0000
-color.b = 1.0000
-color.a = 1.0000
-:DispenserComponent
-item = "beer"
-max_timeout = 2.0000
-
-[Tap]
-id = 20
-flags = 3
-pos.x = 144.0000
-pos.y = 32.0000
-size.x = 32.0000
-size.y = 32.0000
-:RenderComponent
-layer = 0
-color.r = 1.0000
-color.g = 1.0000
-color.b = 1.0000
-color.a = 1.0000
-:DispenserComponent
-item = "beer"
-max_timeout = 2.0000
-
 [Wall]
 id = 25
 flags = 2
@@ -190,7 +139,7 @@ color.b = 1.0000
 color.a = 1.0000
 :FurnitureComponent
 furniture_type = 0
-taken = true
+taken = false
 sprite.sheet = "./assets/images/spritesheet.png"
 sprite.pos.x = 32.0000
 sprite.pos.y = 32.0000
@@ -268,7 +217,7 @@ color.b = 1.0000
 color.a = 1.0000
 :FurnitureComponent
 furniture_type = 0
-taken = true
+taken = false
 sprite.sheet = "./assets/images/spritesheet.png"
 sprite.pos.x = 32.0000
 sprite.pos.y = 32.0000
@@ -331,6 +280,162 @@ sprite.color.g = 1.0000
 sprite.color.b = 1.0000
 sprite.color.a = 1.0000
 
+[Furniture]
+id = 55
+flags = 2
+pos.x = 536.0000
+pos.y = 256.0000
+size.x = 16.0000
+size.y = 32.0000
+:RenderComponent
+layer = 0
+color.r = 1.0000
+color.g = 1.0000
+color.b = 1.0000
+color.a = 1.0000
+:FurnitureComponent
+furniture_type = 0
+taken = false
+sprite.sheet = "./assets/images/spritesheet.png"
+sprite.pos.x = 32.0000
+sprite.pos.y = 32.0000
+sprite.size.x = 16.0000
+sprite.size.y = 32.0000
+sprite.color.r = 1.0000
+sprite.color.g = 1.0000
+sprite.color.b = 1.0000
+sprite.color.a = 1.0000
+
+[Furniture]
+id = 54
+flags = 2
+pos.x = 584.0000
+pos.y = 256.0000
+size.x = 16.0000
+size.y = 32.0000
+:RenderComponent
+layer = 0
+color.r = 1.0000
+color.g = 1.0000
+color.b = 1.0000
+color.a = 1.0000
+:FurnitureComponent
+furniture_type = 0
+taken = false
+sprite.sheet = "./assets/images/spritesheet.png"
+sprite.pos.x = 48.0000
+sprite.pos.y = 32.0000
+sprite.size.x = -16.0000
+sprite.size.y = 32.0000
+sprite.color.r = 1.0000
+sprite.color.g = 1.0000
+sprite.color.b = 1.0000
+sprite.color.a = 1.0000
+
+[Furniture]
+id = 53
+flags = 2
+pos.x = 560.0000
+pos.y = 256.0000
+size.x = 32.0000
+size.y = 32.0000
+:RenderComponent
+layer = 0
+color.r = 1.0000
+color.g = 1.0000
+color.b = 1.0000
+color.a = 1.0000
+:FurnitureComponent
+furniture_type = 1
+taken = false
+sprite.sheet = "./assets/images/spritesheet.png"
+sprite.pos.x = 48.0000
+sprite.pos.y = 32.0000
+sprite.size.x = 32.0000
+sprite.size.y = 32.0000
+sprite.color.r = 1.0000
+sprite.color.g = 1.0000
+sprite.color.b = 1.0000
+sprite.color.a = 1.0000
+
+[Furniture]
+id = 52
+flags = 2
+pos.x = 536.0000
+pos.y = 336.0000
+size.x = 16.0000
+size.y = 32.0000
+:RenderComponent
+layer = 0
+color.r = 1.0000
+color.g = 1.0000
+color.b = 1.0000
+color.a = 1.0000
+:FurnitureComponent
+furniture_type = 0
+taken = false
+sprite.sheet = "./assets/images/spritesheet.png"
+sprite.pos.x = 32.0000
+sprite.pos.y = 32.0000
+sprite.size.x = 16.0000
+sprite.size.y = 32.0000
+sprite.color.r = 1.0000
+sprite.color.g = 1.0000
+sprite.color.b = 1.0000
+sprite.color.a = 1.0000
+
+[Furniture]
+id = 51
+flags = 2
+pos.x = 584.0000
+pos.y = 336.0000
+size.x = 16.0000
+size.y = 32.0000
+:RenderComponent
+layer = 0
+color.r = 1.0000
+color.g = 1.0000
+color.b = 1.0000
+color.a = 1.0000
+:FurnitureComponent
+furniture_type = 0
+taken = false
+sprite.sheet = "./assets/images/spritesheet.png"
+sprite.pos.x = 48.0000
+sprite.pos.y = 32.0000
+sprite.size.x = -16.0000
+sprite.size.y = 32.0000
+sprite.color.r = 1.0000
+sprite.color.g = 1.0000
+sprite.color.b = 1.0000
+sprite.color.a = 1.0000
+
+[Furniture]
+id = 50
+flags = 2
+pos.x = 560.0000
+pos.y = 336.0000
+size.x = 32.0000
+size.y = 32.0000
+:RenderComponent
+layer = 0
+color.r = 1.0000
+color.g = 1.0000
+color.b = 1.0000
+color.a = 1.0000
+:FurnitureComponent
+furniture_type = 1
+taken = false
+sprite.sheet = "./assets/images/spritesheet.png"
+sprite.pos.x = 48.0000
+sprite.pos.y = 32.0000
+sprite.size.x = 32.0000
+sprite.size.y = 32.0000
+sprite.color.r = 1.0000
+sprite.color.g = 1.0000
+sprite.color.b = 1.0000
+sprite.color.a = 1.0000
+
 [Wall]
 id = 35
 flags = 2
@@ -390,24 +495,3 @@ color.a = 1.0000
 item = "beer"
 max_timeout = 2.0000
 
-[Patron]
-id = 22
-flags = 3
-pos.x = 319.2968
-pos.y = 422.7386
-size.x = 16.0000
-size.y = 32.0000
-:RenderComponent
-layer = 5
-color.r = 1.0000
-color.g = 0.0000
-color.b = 0.0000
-color.a = 1.0000
-:PatronComponent
-state = 0
-seat = 30
-order_item = "beer"
-order_show_animation = 0.0000
-holding = 0
-consume_timeout = 0.0000
-
index 90d54ef65519ab54a7e9659690a5360b4bf1d6e5..87b4d828a07cd4a2d840da03f7794ca2f74763e3 100644 (file)
@@ -45,6 +45,11 @@ PatronComponent :: struct {
                         break;
                     }
                 }
+
+                if seat == Entity_Nothing {
+                    state = .Leaving;
+                    return;
+                }
             }
 
             seat_entity := scene->get(seat);
index 30994197c4455b972c521e54be2b44c7b1a883d8..5a6a959804b580475ac0f46877586d619edb759f 100644 (file)
@@ -15,6 +15,8 @@ scene_canvas: Canvas;
 
 Spritesheet: Texture;
 
+patron_spawn_timeout := 5.0f;
+
 game_init :: () {
     Audio_Manager.init();
 
@@ -54,6 +56,15 @@ game_update :: (dt: f32) {
     }
 
     scene->update(dt);
+    patron_spawn_timeout -= dt;
+    if patron_spawn_timeout < 0 {
+        patron_spawn_timeout = random.float(5, 10);
+
+        patron := scene->create_from_schematic("Patron");
+        patron.pos = .{ 420, 600 };
+        patron.size = .{ 16, 32 };
+        scene->add(patron);
+    }
 }
 
 game_draw :: () {