{ "categories": [ { "uuid": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "title": "Task", "color": "569eff" } ], "stages": [ { "uuid": "94333de9-ebf5-4f38-b95b-9477f4bb9dde", "title": "Backlog", "tasks": [ "854c7e1e-7521-4bcd-83ff-bb3fecec3142", "4e2ca8d1-84e1-4913-ad8f-834007d52160", "dd822d14-88e5-4790-808e-7d2cf7f79133", "784d5cd3-333a-40a9-b35f-3d0c73f00761", "9d7ecbc4-db2a-4d09-9f40-ceed3cf98c00" ] }, { "uuid": "211e4050-31cd-4425-a2ba-8ca56b4764cd", "title": "Todo", "tasks": [ "55ac73b8-4378-4b58-bf3c-33f64590c804", "dcdef6be-39f9-44b3-a892-b74afe880909" ] }, { "uuid": "fab8a81b-7ca9-4026-96bb-ed66ea58ef2e", "title": "Doing", "tasks": [ "f8073eb2-8786-47b7-b63f-fa70c3f7115a", "ba3c1f0c-1d34-431a-9e42-f80f8d8159a4" ] }, { "uuid": "0d743057-955a-473a-8123-a3f805505d5d", "title": "Done", "tasks": [ "caf459e5-bb88-47dd-bf15-254a3d70c30f", "21bc19f1-ee3c-4bbb-ab9a-07ec6123a823", "d93a31cd-d475-4c5a-87fc-983174b2594f", "0dd511cd-592c-4334-afd8-c511bd36b7d0", "6942c45a-53a4-484f-9885-4f249cb4572b", "a4dd35ae-dc8e-42a3-9044-bf1cb1af281a", "7883d015-f065-4b18-a2ab-e2a0daa9dc81", "1c3b9543-cb67-431d-bf71-c8753e816776", "d9cebd68-792e-4d01-a916-7df5f128b4a8", "eee1990e-f957-4499-84b6-e68003fcb78e", "4ab36c89-a377-4f25-86a1-ac276aadf4a2", "cde44fb1-3fdf-4ea0-8267-d28d894e4e7d" ] } ], "tasks": [ { "uuid": "eee1990e-f957-4499-84b6-e68003fcb78e", "title": "Implement YAML-based Recipe System & Static RecipeManager", "description": "Description: Move all recipe definitions out of hardcoded scripts and into a centralized recipes.yaml file. Create a static RecipeManager class to load this file at startup and handle recipe lookups (including handling symmetry so that combining A + B is the same as B + A).", "category": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "steps": [ { "details": "Create recipes.yaml with structures for combining, cooking, augmenting, chopping, and rolling.", "done": false }, { "details": " Create static RecipeManager that parses the YAML on game start.", "done": false }, { "details": "Implement RecipeManager.getCombination(item_a, item_b) which returns the resulting product regardless of input order (symmetry).", "done": false }, { "details": "Implement lookup helper functions for other recipe types (e.g., get_cooking_recipe(item_id)).", "done": false } ] }, { "uuid": "854c7e1e-7521-4bcd-83ff-bb3fecec3142", "title": "Create Interactive Counter Stations (Chopping, Rolling, etc.)", "description": "Description: Implement a base Counter class (and/or specific station child classes like ChopCounter, RollCounter) that interact with the player. These stations should query the RecipeManager to see if the placed item can be processed and require a \"work\" threshold to be met via hand gestures (action inputs) before converting the item.", "category": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "steps": [ { "details": "Station detects placed FoodItem.", "done": false }, { "details": "Station queries RecipeManager to check if a valid recipe exists for the interaction type (e.g., Chopping).", "done": false }, { "details": "Implement a \"work\" accumulator that increases when the player performs hand gestures/inputs.", "done": false }, { "details": "Item converts into the recipe output once accumulated work reaches the required threshold (e.g., work: 50 for lettuce).", "done": false } ] }, { "uuid": "4ab36c89-a377-4f25-86a1-ac276aadf4a2", "title": "Implement Plate Container System & Dynamic Combination Logic", "description": "Description: Create a Plate item that acts as a dynamic container holding a list of FoodItems. Expand the combination logic so plates can accept specific items (e.g., adding Chips to a plate with a Hamburger to make a combo, or adding Cheese to a hamburger on a plate to toggle its has_cheese attribute).", "category": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "steps": [ { "details": "Plate class holds a list of FoodItems.", "done": true }, { "details": "Implement logic for adding items to the plate, checking if the plate's current contents can legally accept the incoming item.", "done": true } ] }, { "uuid": "cde44fb1-3fdf-4ea0-8267-d28d894e4e7d", "title": "Implement Dirty Plates", "description": "Description: Add a state to plates to handle the cleaning loop. Plates should become \"dirty\" after being cleared by a customer. Dirty plates must be cleaned at a Sink station before they can be used again.", "category": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "steps": [ { "details": "Add is_dirty boolean property to Plate.", "done": false }, { "details": "Processing a dirty plate in the Sink resets is_dirty to false and makes it usable again.", "done": false } ] }, { "uuid": "d9cebd68-792e-4d01-a916-7df5f128b4a8", "title": "Implement Multiplayer Synchronization (Network Architecture)", "description": "Establish the client-server (or P2P) networking model for the game. Focus on syncing critical game state: physics objects (FoodItems), player actions (gestures/work progress), and station states (Chopping progress).", "category": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "steps": [ { "details": "Choose a networking model (e.g., Server-Authoritative or Peer-to-Peer).", "done": false }, { "details": "Implement basic state synchronization for FoodItems (Position, Rotation, and state changes like is_dirty).", "done": false }, { "details": "Synchronize player gesture/work progress across all clients (so players see the same progress bar on stations).", "done": false }, { "details": "Ensure \"Authority\" logic: Determine who owns the RecipeManager data and how conflicts are handled (e.g., if two players try to grab the same item).", "done": false }, { "details": "Test latency handling for high-frequency inputs like the \"wave arms\" gesture.", "done": false } ] }, { "uuid": "4e2ca8d1-84e1-4913-ad8f-834007d52160", "title": "Containers support augmentation", "description": "For example, adding cheese top a Hamburger.\nburger.cheese = true\n\nA plate with a burger need to support adding cheese where the container looks for the first meal or side that accepts the cheese", "category": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "steps": [] }, { "uuid": "a4dd35ae-dc8e-42a3-9044-bf1cb1af281a", "title": "Sink Station", "description": "", "category": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "steps": [] }, { "uuid": "dd822d14-88e5-4790-808e-7d2cf7f79133", "title": "Decide how to do gestures", "description": "\n- Pop1 style \n- Ghost tools appear as you get close\n- Physical", "category": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "steps": [] }, { "uuid": "784d5cd3-333a-40a9-b35f-3d0c73f00761", "title": "Plate rak", "description": "See if we can use the Container.gd to do this.\nWe could possible change it to support extracting items if that is enabled.", "category": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "steps": [] }, { "uuid": "1c3b9543-cb67-431d-bf71-c8753e816776", "title": "Table Station (customer)", "description": "Asks for a Meal and consumes it when given, making plate dirty", "category": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "steps": [ { "details": "Recipe manager exposes list of meal", "done": false }, { "details": "Table picks a meal to request and sinals it visually", "done": false }, { "details": "Table consumes meal making plate diry", "done": false }, { "details": "Table angry if not meal in set time", "done": false } ] }, { "uuid": "21bc19f1-ee3c-4bbb-ab9a-07ec6123a823", "title": "Visual indicator Hob", "description": "", "category": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "steps": [] }, { "uuid": "d93a31cd-d475-4c5a-87fc-983174b2594f", "title": "Visual indicator Sink", "description": "", "category": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "steps": [] }, { "uuid": "6942c45a-53a4-484f-9885-4f249cb4572b", "title": "Stations progress bar", "description": "", "category": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "steps": [] }, { "uuid": "f8073eb2-8786-47b7-b63f-fa70c3f7115a", "title": "Game over screen / effect with restart button", "description": "", "category": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "steps": [] }, { "uuid": "55ac73b8-4378-4b58-bf3c-33f64590c804", "title": "Restart / game reset button", "description": "", "category": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "steps": [] }, { "uuid": "9d7ecbc4-db2a-4d09-9f40-ceed3cf98c00", "title": "Add test that a hob can chain cook", "description": "", "category": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "steps": [] }, { "uuid": "0dd511cd-592c-4334-afd8-c511bd36b7d0", "title": "Plates should snap onto Meals in a station", "description": "Trowing a plate onto a hamburger on a hob should result in a plated hamburger", "category": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "steps": [] }, { "uuid": "7883d015-f065-4b18-a2ab-e2a0daa9dc81", "title": "Snap_zones should abosrb any item in range", "description": "", "category": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "steps": [] }, { "uuid": "caf459e5-bb88-47dd-bf15-254a3d70c30f", "title": "Station Snap_zones should cover the whole station", "description": "", "category": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "steps": [] }, { "uuid": "ba3c1f0c-1d34-431a-9e42-f80f8d8159a4", "title": "QueueController", "description": "- A customer is a simple goto point object. has queue_patience float\n- A customer is spawned in street, told to move to QueueController Area\n- A QueueController tracks the entered customer and tells it to take a queue position \n- A QueueController displays a progress bar above door of queue_patience of the customer in the Area3D with the least patience.\n- On new table available, QueueController tells front customer in queue to sit at table\n\n", "category": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "steps": [] }, { "uuid": "dcdef6be-39f9-44b3-a892-b74afe880909", "title": "Customer Pathfinder", "description": "- A customer is a simple goto point object. has queue_patience float\n- A customer is spawned in street, told to move to QueueController Area\n- A QueueController tracks the entered customer and tells it to take a queue position \n- A QueueController displays a progress bar above door of queue_patience of the customer in the Area3D with the least patience.\n- On new table available, QueueController tells front customer in queue to sit at table\n\n", "category": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "steps": [] } ], "layout": { "columns": [ [ "94333de9-ebf5-4f38-b95b-9477f4bb9dde" ], [ "211e4050-31cd-4425-a2ba-8ca56b4764cd" ], [ "fab8a81b-7ca9-4026-96bb-ed66ea58ef2e" ], [ "0d743057-955a-473a-8123-a3f805505d5d" ] ] } }