Files
pytomb/World.py
2022-04-27 08:25:18 +02:00

218 lines
5.4 KiB
Python

import WorldParser
import ParsedCommand
import ActionModul
import curses
from curses import wrapper
import logging
from os import system, name
class World:
def clearScreen(self):
self.stdscr.clear()
def printText(self,textid):
self.clearScreen()
self.stdscr.addstr(1,0,self.texte[textid].name)
self.waitForCR()
self.printRaum()
def waitForCR(self):
self.stdscr.addstr(0,0,'Taste für Weiter',curses.color_pair(1))
self.stdscr.getch()
def printRaum(self):
raum = self.aktuellerRaum
self.clearScreen()
if self.fehler != None and self.fehler != '':
self.stdscr.addstr(self.fehler,curses.color_pair(1))
self.stdscr.addstr(3,0,'aktueller Raum: ' + raum.name,curses.color_pair(3))
self.stdscr.addstr(4,0,raum.beschreibung)
self.stdscr.addstr(7,0,'Gegenstände: ' + str(raum.labelsGegenstaende()),curses.color_pair(2))
self.stdscr.addstr(8,0,'Personen: ' + str(raum.labelsPersonen()),curses.color_pair(2))
aus = raum.ausgaenge
self.stdscr.addstr(9,0,'mögliche Richtungen: ')
r = []
if aus[self.NORD] != '-1':
r.append('Norden')
if aus[self.OST] != '-1':
r.append('Osten')
if aus[self.WEST] != '-1':
r.append('Westen')
if aus[self.SUED] != '-1':
r.append('Süden')
if aus[self.RAUF] != '-1':
r.append('Rauf')
if aus[self.RUNTER] != '-1':
r.append('Runter')
richtungen =''
ixri = 0
win = curses.newwin(7,35,7,85)
win.box()
win.addstr('Ausgänge:')
for ri in r:
richtungen = richtungen + ri
win.addstr(ixri+1,1,ri)
if ixri +1 < len(r):
richtungen = richtungen + ', '
ixri = ixri +1
self.stdscr.addstr(9,22,richtungen)
self.stdscr.refresh()
win.refresh()
def sucheRaum(self,id):
for raumid in self.raumliste:
raum = self.raumliste[raumid]
if raum.id == id:
return raum
return None
def sucheRaumName(self,name):
for raumid in self.raumliste:
raum = self.raumliste[raumid]
if raum.name.lower() == name.lower():
return raum
return None
def findItemImInventarOderAktuellerRaum(self,itemname):
item = self.findItemImInventar(itemname)
if item == None:
item = self.findIteminAktuellerRaum(itemname)
return item
def findIteminAktuellerRaum(self,itemname):
raum = self.aktuellerRaum
for itemid in raum.items:
item = raum.items[itemid]
logging.debug('raum.id=' + raum.id)
logging.debug('item.raumid=' + item.raumid)
logging.debug('findItemInAktuellerRaum() ' + itemname + '-' + item.name)
if item.raumid == raum.id and item.name.lower() == itemname.lower():
return item
return None
def findRaumItemById(self,id):
raum = self.aktuellerRaum
for itemid in raum.items:
item = raum.items[itemid]
logging.debug('findRaumItemById() ' + id + '-' + item.id)
if item.raumid == raum.id and item.id == id:
return item
return None
def findItemImInventar(self,itemname):
for itemid in self.inventar:
if self.inventar[itemid].name.lower() == itemname.lower():
return self.inventar[itemid]
return None
def findItemImInventarById(self,id):
for itemid in self.inventar:
if self.inventar[itemid].id == id:
return self.inventar[itemid]
return None
def ermittleBefehlId(self,befehl):
for id in self.befehle:
name = self.befehle[id].name
if name == befehl:
return id
return None
def findAdjektiv(self,adjektiv):
skip
def removeSortouts(self,words,parsedCommand):
w = []
for word in words:
if word in self.adjektive:
if word == adj.name:
parsedCommand.adjektiv = adj
if word not in self.sortouts:
w.append(word)
return w
def parseInput(self,input):
words = input.split(' ')
parsedCommand = ParsedCommand.ParsedCommand()
words = self.removeSortouts(words,parsedCommand)
befehlid = self.ermittleBefehlId(words[0])
if befehlid != None:
befehl = self.befehle[befehlid]
parsedCommand.commandid = befehl.id
parsedCommand.key = befehl.key
if len(words) > 1:
parsedCommand.gegenstand = words[1]
if len(words) > 2:
parsedCommand.gegenstand2 = words[2]
return parsedCommand
def __init__(self):
self.raumliste = {}
self.msg = {}
self.personen = {}
self.bewegungen = {}
self.gegenstaende = {}
self.adjektive = {}
self.befehle = {}
self.inventar = {}
self.objekte = {}
self.sortouts = []
self.texte = {}
self.aktuellerRaum = None
self.parsedCommand = None
self.NOEXIT = '-1'
self.NORD = '0'
self.OST = '1'
self.SUED = '2'
self.WEST = '3'
self.RAUF = '4'
self.RUNTER = '5'
self.VERSION = '0.5'
self.ITEM_TISCH = '1'
self.ITEM_LEITER = '2'
self.ITEM_TRUHE = '3'
self.ITEM_PFLANZE = '4'
self.ITEM_HAUSTUER = '5'
self.ITEM_GLAS = '6'
self.ITEM_BETT = '7'
self.ITEM_NACHTSCHRANK = '8'
self.ITEM_KLEINER_SCHLUESSEL = '9'
self.ITEM_JACKE = '10'
self.ITEM_SCHWERT = '11'
self.ITEM_SEIL = '12'
self.ITEM_HAUSTUERSCHLUESSEL = '13'
# Räume
self.RAUM_ESSZIMMER = '1'
self.RAUM_DACHBODEN = '2'
self.RAUM_FLUR = '3'
self.RAUM_SCHLAFZIMMER = '4'
self.RAUM_KELLER = '5'
self.fehler = ''
parser = WorldParser.WorldParser(self)
parser.parseWorld('world.xml')