Code: Select all
default itemlist = Items()
default eventlist = Events()
init -1 python:
class Items(renpy.store.object):
def __init__(self):
self.itemlist = set()
def get(self):
return self.itemlist
def add(self,x):
for i in self.itemlist:
if i.name == x.name:
return
self.itemlist.add(x)
def remove(self,x):
self.itemlist.remove(x)
x.disabled = True
self.itemlist.add(x)
def readd(self,x):
self.itemlist.add(x)
class Item(renpy.store.object):
def __init__(self,location,image,exit=False,x=0,y=0,dest=False,mouse="item",tooltip=False,sfx=False):
self.location = location #the location of the item, must always be included
self.image = image #the base image used
self.name = self.location + "." + self.image
self.exit = exit #for the exit buttons, since they are positioned different
self.x = x #xcenter/xalign
self.y = y #ycenter/yalign
self.dest = dest #the label to jump to
self.mouse = mouse #the mouse pointer, can be defined as "exit" or "item"
self.tooltip = tooltip #the tooltip text
self.sfx = sfx #the sound that plays when clicked
self.disabled = False
class Events(renpy.store.object):
def __init__(self):
self.eventlist = set()
def get(self):
return self.eventlist
def add(self,x):
for i in self.eventlist:
if i.name == x.name:
return
self.eventlist.add(x)
def remove(self,x):
self.eventlist.remove(x)
x.disabled = True
self.eventlist.add(x)
def readd(self,x):
self.eventlist.add(x)
class Event(renpy.store.object):
def __init__(self,story,scene,location=False,day=False,time=False,auto=False,item=False):
self.story = story
self.scene = scene
self.name = self.story + "." + self.scene
self.location = location
self.day = day
self.time = time
self.auto = auto
self.item = item
self.disabled = False
label event_loop:
python:
for event in eventlist.get():
if not event.disabled:
event_conditions = 0 #the total number of conditions for the event
event_met = 0 #the number of conditions met
if event.location:
event_conditions += 1
if event.location == locstring:
event_met += 1
if event.day:
event_conditions += 1
if event.day == day:
event_met += 1
if event.time:
event_conditions += 1
if event.time == time_of_day:
event_met += 1
if event_met and event_met == event_conditions:
if event.auto:
renpy.call(event.name)
eventlist.remove(event)
else:
itemlist.add(event.item)
eventlist.remove(event)
return
label setup_item:
python:
itemlist.add(Item("mc_living","kitchen",x=1223,y=376,dest="mc_kitchen",mouse="exit"))
label setup_event:
python:
eventlist.add(Event("party","beerminigame",location="mc_living",item=Item("mc_living","beers",x=502,y=404,dest="mc_living.beers")))