Example #1
0
    def __init__(self):
        self.itemID = 0
        self.switchState = True
        self.iAktion = "E"
        self.altIPos = [0, 0]
        self.switchCam = False
        self.kampf = Battle.Kampf()
        self.itemDa = False
        self.keyMap = {
            "left": 0,
            "right": 0,
            "forward": 0,
            "cam-left": 0,
            "cam-right": 0
        }
        base.win.setClearColor(Vec4(0, 0, 0, 1))

        self.environ = loader.loadModel("models/world")
        self.environ.reparentTo(render)
        self.environ.setPos(0, 0, 0)

        self.spieler = Players.Player(Actor("models/box.x"))
        self.spieler.actor.reparentTo(render)
        spielerStartPos = (-107.575, 26.6066, -0.490075)
        self.spieler.actor.setPos(spielerStartPos)
        self.textObjectSpieler = OnscreenText(
            text=self.spieler.name + ":  " + str(self.spieler.energie) + "/" +
            str(self.spieler.maxenergie) + " HP",
            pos=(-0.90, -0.98),
            scale=0.07,
            fg=(1, 0, 0, 1))

        # Erstellt Gegner

        self.gegnerStartPos = ([
            (-39.1143569946, 25.1781406403, -0.136657714844),
            (-102.375793457, -30.6321983337, 0.0),
            (-56.927986145, -34.6329650879, -0.16748046875),
            (-79.6673126221, 30.8231620789, 2.89721679688),
            (-4.37648868561, 30.5158863068, 2.18450927734),
            (22.6527004242, 4.99837779999, 3.11364746094),
            (-23.8257598877, -7.87773084641, 1.36920166016),
            (-80.6140823364, 19.5769443512, 4.70764160156),
            (-75.0773696899, -15.2991075516, 6.24676513672)
        ])

        gegnerPos = random.choice(self.gegnerStartPos)
        self.gegnerErstellen(gegnerPos)
        self.textObjectGegner = OnscreenText(
            text=str(self.gegner.name) + ": " + str(self.gegner.energie) +
            "/" + str(self.gegner.maxenergie) + " HP",
            pos=(0.90, -0.98),
            scale=0.07,
            fg=(1, 0, 0, 1))

        self.floater = NodePath(PandaNode("floater"))
        self.floater.reparentTo(render)

        self.item = None

        # Handling der Usereingaben für Bewegung

        self.accept("escape", sys.exit)
        self.accept("arrow_left", self.setKey, ["left", 1])
        self.accept("arrow_right", self.setKey, ["right", 1])
        self.accept("arrow_up", self.setKey, ["forward", 1])
        self.accept("a", self.setKey, ["cam-left", 1])
        self.accept("s", self.setKey, ["cam-right", 1])
        self.accept("i", self.setKey, ["inventar", 1])
        self.accept("arrow_left-up", self.setKey, ["left", 0])
        self.accept("arrow_right-up", self.setKey, ["right", 0])
        self.accept("arrow_up-up", self.setKey, ["forward", 0])
        self.accept("a-up", self.setKey, ["cam-left", 0])
        self.accept("s-up", self.setKey, ["cam-right", 0])

        self.accept("e", self.iAktionsHandler, ["e"])
        self.accept("v", self.iAktionsHandler, ["v"])
        self.accept("w", self.iAktionsHandler, ["w"])

        taskMgr.add(self.move, "moveTask")
        taskMgr.add(self.erkenneKampf, "Kampferkennung")
        taskMgr.add(self.screentexts, "Screentexte")

        # Menü erstellen

        self.createMenu()

        # Kameraeinstellungen

        base.disableMouse()
        base.camera.setPos(self.spieler.actor.getX(),
                           self.spieler.actor.getY() + 10, 2)

        self.collisionInit()

        self.setAI()

        # Licht
        ambientLight = AmbientLight("ambientLight")
        ambientLight.setColor(Vec4(.3, .3, .3, 1))
        directionalLight = DirectionalLight("directionalLight")
        directionalLight.setDirection(Vec3(-5, -5, -5))
        directionalLight.setColor(Vec4(1, 1, 1, 1))
        directionalLight.setSpecularColor(Vec4(1, 1, 1, 1))
        render.setLight(render.attachNewNode(ambientLight))
        render.setLight(render.attachNewNode(directionalLight))

        # Hintergrund (Himmel)

        self.setupSkySphere()