Files
pytomb/ActionModul.py
2022-05-13 07:51:28 +02:00

283 lines
9.2 KiB
Python

import logging
class ActionModul:
def isBlank(self,str):
if str and len(str.strip()) == 0:
return True
return False
def __init__(self, world):
self.world = world
def warte(self):
print('Du wartest')
def inventar(self):
self.world.stdscr.addstr(12,0,'Du besitzt folgende Gegenstände:')
zeile=13
for itemid in self.world.inventar:
item = self.world.inventar[itemid]
self.world.stdscr.addstr(zeile,0,item.name)
zeile = zeile +1
def klettere(self, parsedCommand):
item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand)
if item != None:
if item.id == self.world.ITEM_RANKGITTER:
self.rauf()
else:
self.setFehler('Das sehe ich hier nicht.')
def oeffne(self,parsedCommand):
item = self.world.findItemImInventarOderAktuellerRaum(parsedCommand.gegenstand);
logging.debug(f'öffne RaumId= {self.world.aktuellerRaum.id}')
logging.debug(f'öffne Item= {item}')
if item != None:
logging.debug(f'öffne ItemId= {item.id}')
if item.id == self.world.ITEM_TRUHE:
logging.debug('öffne Truhe')
schluessel = self.world.findItemImInventarById(self.world.ITEM_KLEINER_SCHLUESSEL)
if schluessel != None:
item.zustand = item.OFFEN
seil = self.world.findItemById(self.world.ITEM_SEIL)
seil.sichtbar = True
self.world.aktuellerRaum.gegenstaende[seil.id] = seil
schwert = self.world.findItemById(self.world.ITEM_SCHWERT)
schwert.sichtbar = True
self.world.aktuellerRaum.gegenstaende[schwert.id] = schwert
self.setFehler('Truhe ist jetzt offen')
else:
self.setFehler('Die Truhe ist verschlossen und dir fehlt der passende Schlüssel.')
elif item.id == self.world.ITEM_HAUSTUER:
if self.world.aktuellerRaum.id == self.world.RAUM_FLUR:
schluessel = self.world.findItemImInventarById(self.world.ITEM_HAUSTUERSCHLUESSEL)
logging.debug(f'öffne Haustür Schlüssel ist {schluessel}')
if schluessel != None:
item.zustand = item.OFFEN
self.setFehler('Die Haustür ist geöffnet und führt in den Garten.')
self.world.aktuellerRaum.ausgaenge[self.world.SUED] = self.world.RAUM_GARTEN
else:
logging.debug('öffne Haustür kein Haustürschlüssel')
self.setFehler('Die Tür ist verschlossen.')
def benutze(self, parsedCommand):
leiter = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand)
logging.debug(f'benutze(): Leiter is {leiter}')
if leiter != None:
if(self.world.aktuellerRaum.id == self.world.RAUM_ESSZIMMER):
logging.debug(f'aktuellerRaum ist {self.world.aktuellerRaum.id}')
self.rauf()
else:
self.setFehler('Eine Leiter sehe ich hier nicht.')
def verliere(self,parsedCommand):
item = self.world.findItemImInventar(parsedCommand.gegenstand);
logging.debug(f'verliere Item {item}')
if item != None:
del self.world.inventar[item.id]
if self.world.aktuellerRaum.id == self.world.RAUM_BACH:
if item.id == self.world.ITEM_PLANKE:
self.world.aktuellerRaum.ausgaenge[self.world.SUED] = self.world.RAUM_TEICH
self.setFehler('Du legst die Planke über den Bach und es ensteht eine Brücke über den Bach')
self.world.aktuellerRaum.items[item.id] = item
item.raumid = self.world.aktuellerRaum.id
else:
self.setFehler("Diesen Gegenstand besitzt du nicht.")
def setFehler(self,text):
self.world.fehler =text
def clearFehler(self):
self.world.fehler = ''
def stelle(self,parsedCommand):
item = self.world.findItemImInventar(parsedCommand.gegenstand);
if item != None:
logging.debug('stelle() item.id=' + str(item.id))
if item.id == self.world.ITEM_GLAS:
self.world.aktuellerRaum.ausgaenge[self.world.NORD] = '5'
self.verliere(parsedCommand)
self.world.printText('1')
else:
self.setFehler("Diesen Gegenstand besitzt du nicht.")
def untersucheAktuellenRaum(self, parsedCommand):
raum = self.world.sucheRaumName(parsedCommand.gegenstand)
logging.debug(f'raumId {raum.id}')
logging.debug(f'untersucheAktuellenRaum() {parsedCommand.gegenstand} in {self.world.aktuellerRaum.id}')
if raum.id == self.world.aktuellerRaum.id:
logging.debug(f'untersuche aktuellen Raum {raum.name}')
if raum.id == '5':
#Schlüssel im Keller sichtbar machen
logging.debug('mache Schlüssel sichtbar')
self.setFehler('Auf dem Boden findest du einen kleinen Schlüssel.')
schluessel = self.world.findRaumItemById(self.world.ITEM_KLEINER_SCHLUESSEL)
schluessel.sichtbar = True
def untersuche(self,parsedCommand):
logging.debug(f'untersuche() suche nach Gegenstand: {parsedCommand.gegenstand}')
if parsedCommand.gegenstand == None:
self.untersucheAktuellenRaum
return
item = self.world.findItemImInventarOderAktuellerRaum(parsedCommand.gegenstand)
if item != None:
if item.id == self.world.RAUM_SCHLAFZIMMER:
glas = self.world.findRaumItemById(self.world.ITEM_GLAS)
logging.debug(f'mache Gegenstand {glas.name} sichtbar')
glas.sichtbar = True
elif item.id == self.world.ITEM_BETT:
# Falltür sichtbar machen
self.world.aktuellerRaum.ausgaenge[self.world.RUNTER] = self.world.RAUM_KELLER
logging.debug('untersuche(): Keller ist jetzt zugänglich')
self.setFehler('Im Boden unter dem Bett findest du eine Falltür, die nach unten führt.')
elif item.id == self.world.ITEM_NACHTSCHRANK:
self.setFehler('In der Schublade findest du einen Schlüssel')
schluessel = self.world.findRaumItemById(self.world.ITEM_HAUSTUERSCHLUESSEL)
schluessel.sichtbar = True
elif item.id == self.world.ITEM_TEICH:
self.setFehler('Im Teich schwimmt ein kleiner Fish')
fisch = self.world.findItemInAktuellerRaum(self.world.ITEM_FISCH)
fisch.sichtbar = True
else:
logging.debug('Kein Item gefunden, suche nach Raum')
self.untersucheAktuellenRaum(parsedCommand)
def ziehe(self,parsedCommand):
item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand)
if item != None:
#alter Code!
if item.id == 8:
self.world.stdscr.addstr('Du ziehst den Hebel und es passiert.... nichts!')
else:
self.setFehler('Das sehe ich hier nicht.')
def fange(self, parsedCommand):
skip
def klettere(self, parsedCommand):
leiter = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand)
logging.debug(f'klettere(): Leiter is {leiter}')
if leiter != None:
if(self.world.aktuellerRaum.id == self.world.RAUM_ESSZIMMER):
logging.debug(f'aktuellerRaum ist {self.world.aktuellerRaum.id}')
self.rauf()
else:
self.setFehler('Eine Leiter sehe ich hier nicht.')
def nimm(self,parsedCommand):
item = self.world.findItemInAktuellerRaum(parsedCommand.gegenstand)
logging.debug(f'nimm: item == {item}')
if item != None:
if item.imobil:
text = self.world.msg[item.pickupmsg]
if self.isBlank(item.pickupmsg):
self.setFehler('Das kannst du nicht mitnehmen')
else:
text = self.world.msg[item.pickupmsg]
self.setFehler(text)
else:
del self.world.aktuellerRaum.items[item.id]
self.world.inventar[item.id] = item
logging.debug(f'nimm: RaumId== {self.world.aktuellerRaum.id}')
if self.world.aktuellerRaum.id == self.world.RAUM_BACH:
logging.debug(f'nimm: ItemId == {item.id}')
if item.id == self.world.ITEM_PLANKE:
logging.debug('nehme Planke am Bach')
self.world.aktuellerRaum.ausgaenge[self.world.SUED] = '-1'
else:
self.setFehler("diesen Gegenstand sehe ich hier nicht.")
def gehe(self,parsedCommand):
richtung = parsedCommand.gegenstand.lower()
logging.debug("gehe nach " + richtung)
if richtung == 'nord':
self.nord()
elif richtung == 'süd':
self.sued()
if richtung == 'west':
self.west()
if richtung == 'ost':
self.ost()
def geheNach(self,richtung):
logging.debug(f'geheNach() Richtung {richtung}')
raum = self.world.aktuellerRaum
if raum.ausgaenge[richtung]:
ausgang = raum.sucheRaumAusgang(richtung)
logging.debug(f'gefundener Ausgang: {ausgang}')
if ausgang != None:
raum = self.world.sucheRaum(ausgang)
else:
logging.warn('Keine AusgandId gefunde')
self.setFehler("In diese Richtung gibt's keine Ausgang!")
if raum != None:
self.world.aktuellerRaum = raum
else:
logging.debug('Kein Raum zur AusgangId')
self.setFehler("In diese Richtung gibt's keine Ausgang!")
else:
self.setFehler("In diese Richtung kannst du nicht gehen")
def nord(self):
self.geheNach(self.world.NORD)
def sued(self):
self.geheNach(self.world.SUED)
def west(self):
self.geheNach(self.world.WEST)
def ost(self):
self.geheNach(self.world.OST)
def rauf(self):
self.geheNach(self.world.RAUF)
def runter(self):
self.geheNach(self.world.RUNTER)
def about(self):
print("Tomb Version " + self.world.VERSION)
self.world.waitForCR
def raumaction(self):
raumid = self.world.aktuellerRaum.id
print('Raumaction für Raum: ' + raumid)