- Jun 16, 2018
- 415
- 748
This is what I'm currently using, but it would require creating a new screen for every location.
Code:
############ The "middleman" screen, I'd rather get rid of this ############
screen locitemsDisplay():
if location == "Kitchen":
use loc0itemsDisplay
if location == "DiningRoom":
use loc1itemsDisplay
##I'd rather have one instance of this that dynamically relays the inventory of the current location##
## Creating an identical inventory screen for every location works, but it is seems inefficient ##
screen loc0itemsDisplay():
frame:
area (1440, 0, 480, 1080)
add Solid ("#121212")
viewport:
draggable True
mousewheel True
vbox:
for item in Kitchen.items: ## Loop location inventory ##
button: ## Inventory items represented by buttons##
action [item.action]
frame:
background Solid("#121212")
foreground None
xsize 480
ysize 108
text [item.itemName]:
align (0.5,0.5)
size 25
hover_color "#9d4620"
Code:
## What my test classes look like ##
init python:
class Inventory():
def __init__(self, items):
self.items = items
def add_item(self, item):
self.items.append(item)
def remove_item(self, item):
self.items.remove(item)
class InventoryItem():
def __init__(self, itemName, action):
self.itemName = itemName
self.action = action
###$ Kitchen.add_item(lemons) ####
##$ Kitchen.remove_item(lemons) ##
class LOCATION():
def __init__(self, locName):
self.locName = locName
Locations = []
Code:
######### Instance examples ############################
default location = "Kitchen"
default Kitchen = Inventory([])
default DiningRoom = Inventory([])
define lemons = InventoryItem("Lemons", NullAction())
define watch = InventoryItem("Watch", NullAction())
define phone = InventoryItem("Phone", NullAction())
define shoes = InventoryItem("Shoes", NullAction())
label InitialiseVariables:
$ Locations.append(LOCATION("Kitchen"))#0
$ Locations.append(LOCATION("DiningRoom"))#1
#################################################################