Spaces:
Running
on
Zero
Running
on
Zero
import gradio as gr | |
# Default configuration template | |
default_config = { | |
'background': '/AutoGameBackgrounds/1stGameLoc123.png', | |
'inventory': [], | |
'skills': [], | |
'objectives': [], | |
'targets': [], | |
'story': [], | |
'actions': {} | |
} | |
# Helper functions to dynamically add items | |
def add_inventory_item(inventory_items, type, name, description): | |
new_item = {"type": type, "name": name, "description": description} | |
inventory_items.append(new_item) | |
return inventory_items | |
def add_skill(skills_items, branch, name, learned): | |
new_skill = {"branch": branch, "name": name, "learned": learned == 'True'} | |
skills_items.append(new_skill) | |
return skills_items | |
def add_objective(objectives_items, id, name, complete): | |
new_objective = {"id": id, "name": name, "complete": complete == 'True'} | |
objectives_items.append(new_objective) | |
return objectives_items | |
def add_target(targets_items, name, x, y, collisionType, collisiontext): | |
new_target = {"name": name, "x": int(x), "y": int(y), "collisionType": collisionType, "collisiontext": collisiontext} | |
targets_items.append(new_target) | |
return targets_items | |
with gr.Blocks() as demo: | |
gr.HTML("Companion Space for zerogpu workflow planning for a way to send a zip to the Basic Game Engine at the bottom of https://huggingface.co/spaces/KwabsHug/TestSvelteStatic") | |
gr.HTML("Some conderations for future integration: https://huggingface.co/spaces/dylanebert/3d-arena, https://github.com/fudan-generative-vision/hallo") | |
with gr.Tab("Config Creator"): | |
inventory_items = gr.State([]) | |
skills_items = gr.State([]) | |
objectives_items = gr.State([]) | |
targets_items = gr.State([]) | |
with gr.Tabs(): | |
with gr.TabItem("Inventory"): | |
inventory_type = gr.Textbox(label="Type") | |
inventory_name = gr.Textbox(label="Name") | |
inventory_description = gr.Textbox(label="Description") | |
add_inventory = gr.Button("Add Inventory Item") | |
inventory_textbox = gr.JSON(label="Inventory Items", value=[]) | |
with gr.TabItem("Skills"): | |
skills_branch = gr.Textbox(label="Branch") | |
skills_name = gr.Textbox(label="Name") | |
skills_learned = gr.Dropdown(choices=["True", "False"], label="Learned") | |
add_skill_button = gr.Button("Add Skill") | |
skills_textbox = gr.JSON(label="Skills", value=[]) | |
with gr.TabItem("Objectives"): | |
objectives_id = gr.Textbox(label="ID") | |
objectives_name = gr.Textbox(label="Name") | |
objectives_complete = gr.Dropdown(choices=["True", "False"], label="Complete") | |
add_objective_button = gr.Button("Add Objective") | |
objectives_textbox = gr.JSON(label="Objectives", value=[]) | |
with gr.TabItem("Targets"): | |
targets_name = gr.Textbox(label="Name") | |
targets_x = gr.Textbox(label="X Coordinate") | |
targets_y = gr.Textbox(label="Y Coordinate") | |
targets_collisionType = gr.Textbox(label="Collision Type") | |
targets_collisiontext = gr.Textbox(label="Collision Text") | |
add_target_button = gr.Button("Add Target") | |
targets_textbox = gr.JSON(label="Targets", value=[]) | |
config_output = gr.JSON(label="Updated Configuration") | |
#, outputs=config_output) | |
def aggregate_config(inventory, skills, objectives, targets): | |
config = default_config.copy() | |
config['inventory'] = inventory | |
config['skills'] = skills | |
config['objectives'] = objectives | |
config['targets'] = targets | |
return config | |
add_inventory.click(add_inventory_item, inputs=[inventory_items, inventory_type, inventory_name, inventory_description], outputs=inventory_textbox) | |
add_inventory.click(aggregate_config, inputs=[inventory_items, skills_items, objectives_items, targets_items], outputs=config_output) | |
add_skill_button.click(add_skill, inputs=[skills_items, skills_branch, skills_name, skills_learned], outputs=skills_textbox) | |
add_skill_button.click(aggregate_config, inputs=[inventory_items, skills_items, objectives_items, targets_items], outputs=config_output) | |
add_objective_button.click(add_objective, inputs=[objectives_items, objectives_id, objectives_name, objectives_complete], outputs=objectives_textbox) | |
add_objective_button.click(aggregate_config, inputs=[inventory_items, skills_items, objectives_items, targets_items], outputs=config_output) | |
add_target_button.click(add_target, inputs=[targets_items, targets_name, targets_x, targets_y, targets_collisionType, targets_collisiontext], outputs=targets_textbox) | |
add_target_button.click(aggregate_config, inputs=[inventory_items, skills_items, objectives_items, targets_items], outputs=config_output) | |
with gr.Tab("Other Considerations"): | |
gr.HTML("Useful Spaces and links") | |
demo.launch() | |