{ "categories": [ { "uuid": "bf4ec62e-526e-4027-876f-0b22bd17f79a", "title": "Task", "color": "569eff" } ], "stages": [ { "uuid": "94333de9-ebf5-4f38-b95b-9477f4bb9dde", "title": "Todo", "tasks": [ "eee1990e-f957-4499-84b6-e68003fcb78e", "854c7e1e-7521-4bcd-83ff-bb3fecec3142", "4e2ca8d1-84e1-4913-ad8f-834007d52160", "a4dd35ae-dc8e-42a3-9044-bf1cb1af281a" ] }, { "uuid": "211e4050-31cd-4425-a2ba-8ca56b4764cd", "title": "Doing", "tasks": [ "d9cebd68-792e-4d01-a916-7df5f128b4a8", "cde44fb1-3fdf-4ea0-8267-d28d894e4e7d" ] }, { "uuid": "fab8a81b-7ca9-4026-96bb-ed66ea58ef2e", "title": "Done", "tasks": [ "4ab36c89-a377-4f25-86a1-ac276aadf4a2" ] } ], "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": [] } ], "layout": { "columns": [ [ "94333de9-ebf5-4f38-b95b-9477f4bb9dde" ], [ "211e4050-31cd-4425-a2ba-8ca56b4764cd" ], [ "fab8a81b-7ca9-4026-96bb-ed66ea58ef2e" ] ] } }