Example #1
0
File: main.py Project: iPazu/Slimy
 def loadEntities(self):
     startingPoint = (100, 0, 10)
     self.AIworld = AIWorld(render)
     self.collision = Collision(Monster.monster)
     #terrain, initialPos, slimeModelPath, floorPos, scale, lifePoint, volumicMass, movingSpeed, dt
     self.slime = Slime(self.terrain, startingPoint, "assets/models/slime.egg", 10, 10, 100, 0.01, 5, self.dt, "slime", self.collision) 
     self.spawn = Spawn([self.slime]+Monster.monster, self.terrain, self.AIworld, self.collision)
     self.spawn.spawn()
def CmdGiveMonster(mob, args):
    if not len(args):
        return

    mspawn = ' '.join(args)
    lowerSpawn = mspawn.lower()

    for monsterSpawn in mob.player.monsterSpawns:
        if monsterSpawn.spawn.lower() == lowerSpawn:
            mob.player.sendGameText(
                RPG_MSG_GAME_DENIED,
                "You already have the %s monster template.\\n" %
                monsterSpawn.spawn)
            return

    from spawn import Spawn
    try:
        con = Spawn._connection.getConnection()
        spawn = Spawn.get(
            con.execute(
                "SELECT id FROM spawn WHERE lower(name)=\"%s\" LIMIT 1;" %
                lowerSpawn).fetchone()[0])
        mspawn = spawn.name
    except:
        mob.player.sendGameText(RPG_MSG_GAME_DENIED,
                                "No such spawn %s.\\n" % mspawn)
        return

    from player import PlayerMonsterSpawn
    PlayerMonsterSpawn(player=mob.player, spawn=mspawn)
    mob.player.sendGameText(
        RPG_MSG_GAME_GAINED,
        "You now have the %s monster template.\\n" % mspawn)
def CmdGrantMonster(mob, args):
    if len(args) < 2:
        return

    pname = args[0]
    lowerPName = pname.lower()
    args = args[1:]

    mspawn = ' '.join(args)
    lowerSpawn = mspawn.lower()

    from player import Player
    try:
        con = Player._connection.getConnection()
        player = Player.get(
            con.execute(
                "SELECT id FROM player WHERE lower(public_name) = \"%s\" LIMIT 1;"
                % lowerPName).fetchone()[0])
        pname = player.publicName
    except:
        mob.player.sendGameText(RPG_MSG_GAME_DENIED,
                                "No player by public name %s.\\n" % pname)
        return

    if not player.party or not len(player.party.members):
        mob.player.sendGameText(RPG_MSG_GAME_DENIED,
                                "Player isn't logged in %s.\\n" % pname)
        return

    for monsterSpawn in player.monsterSpawns:
        if monsterSpawn.spawn.lower() == lowerSpawn:
            mob.player.sendGameText(
                RPG_MSG_GAME_DENIED,
                "%s already has the %s monster template.\\n" %
                (pname, monsterSpawn.spawn))
            return

    from spawn import Spawn
    try:
        con = Spawn._connection.getConnection()
        spawn = Spawn.get(
            con.execute(
                "SELECT id FROM spawn WHERE lower(name) = \"%s\" LIMIT 1;" %
                lowerSpawn).fetchone()[0])
        mspawn = spawn.name
    except:
        mob.player.sendGameText(RPG_MSG_GAME_DENIED,
                                "No such spawn %s.\\n" % mspawn)
        return

    from player import PlayerMonsterSpawn
    PlayerMonsterSpawn(player=player, spawn=mspawn)
    mob.player.sendGameText(
        RPG_MSG_GAME_GAINED,
        "You have granted %s the %s monster template.\\n" % (pname, mspawn))
    if player.zone:
        player.sendGameText(
            RPG_MSG_GAME_GAINED,
            "You now have the %s monster template.\\n" % mspawn)
Example #4
0
    def __init__(self, target, size=200):

        self.target = target
        self.size = size
        self.spawns = [Spawn(self.target) for x in range(size)]
        self.mating_pool = []
        self.generation = 0
        self.evolved = 0
        self.fitness = 0
def CmdSpawn(mob, args):
    try:
        # Check if there were coords supplied.
        if args[-1].endswith(']'):
            # Extract the coords argument.
            # It should look like this: [x.x y.y z.z].
            x = float(args[-3][1:])
            y = float(args[-2])
            z = float(args[-1][:-1])
            spawnName = ' '.join(args[:-3])

        # Otherwise take the immortals position.
        else:
            mypos = mob.simObject.position
            x = mypos[0]
            y = mypos[1]
            z = mypos[2]
            spawnName = ' '.join(args)

    except:
        mob.player.sendGameText(
            RPG_MSG_GAME_DENIED,
            "Invalid arguments to immortal spawn command. Syntax is '/imm spawn <spawn name> [x-coord y-coord z-coord]' where the coords with their '[]' brackets are optional.\\n"
        )
        return

    # Get the spawn.
    try:
        con = Spawn._connection.getConnection()
        spawn = Spawn.get(
            con.execute(
                "SELECT id FROM spawn WHERE lower(name)=lower(\"%s\") LIMIT 1;"
                % spawnName).fetchone()[0])
    except:
        mob.player.sendGameText(RPG_MSG_GAME_DENIED, \
            "Failure spawning %s, this spawn doesn't exist.\\n"%spawnName)
        return

    # Put the transform together.
    rot = mob.simObject.rotation
    transform = (x, y, z, rot[0], rot[1], rot[2], rot[3])

    # Spawn the desired mob.
    mob.zone.spawnMob(spawn, transform, -1)

    # Give feedback about the successful spawning.
    mob.player.sendGameText(RPG_MSG_GAME_GAINED, \
        "%s spawned at [%0.2f %0.2f %0.2f].\\n"%(spawnName,x,y,z))
def CmdGrantMonster(mob,args):
    if len(args) < 2:
        return
    
    pname = args[0]
    lowerPName = pname.lower()
    args = args[1:]
    
    mspawn = ' '.join(args)
    lowerSpawn = mspawn.lower()
    
    from player import Player
    try:
        con = Player._connection.getConnection()
        player = Player.get(con.execute("SELECT id FROM player WHERE lower(public_name) = \"%s\" LIMIT 1;"%lowerPName).fetchone()[0])
        pname = player.publicName
    except:
        mob.player.sendGameText(RPG_MSG_GAME_DENIED,"No player by public name %s.\\n"%pname)
        return

    if not player.party or not len(player.party.members):
        mob.player.sendGameText(RPG_MSG_GAME_DENIED,"Player isn't logged in %s.\\n"%pname)
        return

    for monsterSpawn in player.monsterSpawns:
        if monsterSpawn.spawn.lower() == lowerSpawn:
            mob.player.sendGameText(RPG_MSG_GAME_DENIED,"%s already has the %s monster template.\\n"%(pname,monsterSpawn.spawn))
            return
    
    from spawn import Spawn
    try:
        con = Spawn._connection.getConnection()
        spawn = Spawn.get(con.execute("SELECT id FROM spawn WHERE lower(name) = \"%s\" LIMIT 1;"%lowerSpawn).fetchone()[0])
        mspawn = spawn.name
    except:
        mob.player.sendGameText(RPG_MSG_GAME_DENIED,"No such spawn %s.\\n"%mspawn)
        return
    
    from player import PlayerMonsterSpawn
    PlayerMonsterSpawn(player=player,spawn=mspawn)
    mob.player.sendGameText(RPG_MSG_GAME_GAINED,"You have granted %s the %s monster template.\\n"%(pname,mspawn))
    if player.zone:
        player.sendGameText(RPG_MSG_GAME_GAINED,"You now have the %s monster template.\\n"%mspawn)
def CmdSpawn(mob, args):
    try:
        # Check if there were coords supplied.
        if args[-1].endswith(']'):
            # Extract the coords argument.
            # It should look like this: [x.x y.y z.z].
            x = float(args[-3][1:])
            y = float(args[-2])
            z = float(args[-1][:-1])
            spawnName = ' '.join(args[:-3])
        
        # Otherwise take the immortals position.
        else:
            mypos = mob.simObject.position
            x = mypos[0]
            y = mypos[1]
            z = mypos[2]
            spawnName = ' '.join(args)
    
    except:
        mob.player.sendGameText(RPG_MSG_GAME_DENIED,"Invalid arguments to immortal spawn command. Syntax is '/imm spawn <spawn name> [x-coord y-coord z-coord]' where the coords with their '[]' brackets are optional.\\n")
        return
    
    # Get the spawn.
    try:
        con = Spawn._connection.getConnection()
        spawn = Spawn.get(con.execute("SELECT id FROM spawn WHERE lower(name)=lower(\"%s\") LIMIT 1;"%spawnName).fetchone()[0])
    except:
        mob.player.sendGameText(RPG_MSG_GAME_DENIED, \
            "Failure spawning %s, this spawn doesn't exist.\\n"%spawnName)
        return
    
    # Put the transform together.
    rot = mob.simObject.rotation
    transform = (x,y,z,rot[0],rot[1],rot[2],rot[3])
    
    # Spawn the desired mob.
    mob.zone.spawnMob(spawn,transform,-1)
    
    # Give feedback about the successful spawning.
    mob.player.sendGameText(RPG_MSG_GAME_GAINED, \
        "%s spawned at [%0.2f %0.2f %0.2f].\\n"%(spawnName,x,y,z))
def CmdGiveMonster(mob,args):
    if not len(args):
        return
    
    mspawn = ' '.join(args)
    lowerSpawn = mspawn.lower()
    
    for monsterSpawn in mob.player.monsterSpawns:
        if monsterSpawn.spawn.lower() == lowerSpawn:
            mob.player.sendGameText(RPG_MSG_GAME_DENIED,"You already have the %s monster template.\\n"%monsterSpawn.spawn)
            return
    
    from spawn import Spawn
    try:
        con = Spawn._connection.getConnection()
        spawn = Spawn.get(con.execute("SELECT id FROM spawn WHERE lower(name)=\"%s\" LIMIT 1;"%lowerSpawn).fetchone()[0])
        mspawn = spawn.name
    except:
        mob.player.sendGameText(RPG_MSG_GAME_DENIED,"No such spawn %s.\\n"%mspawn)
        return
    
    from player import PlayerMonsterSpawn
    PlayerMonsterSpawn(player=mob.player,spawn=mspawn)
    mob.player.sendGameText(RPG_MSG_GAME_GAINED,"You now have the %s monster template.\\n"%mspawn)
Example #9
0
 def spawn_source(self,position, parent = None, color=None):
     new_spawn=Spawn(size, position, parent,color, self.invader)
     self.spawns.append(new_spawn)
Example #10
0
File: main.py Project: iPazu/Slimy
class MyApp(ShowBase):

    def __init__(self):
        self.debug = False
        ShowBase.__init__(self)
        self.accept("escape",sys.exit)

        # the dt should depend on the framerate
        self.dt = 0.25
        """try:
            self.database = Database()
            self.ranking = self.database.getRankingFromDatabase()
        except:
            pass"""
        self.musicManager.setConcurrentSoundLimit(2)

        #initiate game state
        self.state = 'Menu'
        self.terrain = Terrain(1024)
        """try:
            self.classement = Classement(self.ranking) 
            self.classement.hideMenu()
        except:
            pass"""
        self.menu = Menu()
        self.loadStartMenu()

        if(self.debug == False):
            self.disableMouse()
        
    def loadStartMenu(self):
        self.accept("Menu-Start-Parkour", self.loadGame)
        self.accept("Menu-Start-World", self.loadGame)
        self.accept("Menu-Start-Ranking", self.loadRankingMenu)

        self.menu.showStartMenu()
        self.show_cursor()

    def exitStartMenu(self):
        self.ignore("Menu-Start-Ranking")
        self.ignore("Menu-Start-World")
        self.ignore("Menu-Start-Parkour")
        self.menu.hideStartMenu()

    def loadGameOverMenu(self,score):
        self.gameover = Gameover(score)
        taskMgr.doMethodLater(5, self.restartGame,'timer')
        self.show_cursor()

    def loadRankingMenu(self):
        self.accept("Menu-Ranking-Return", self.exitRankingMenu)
        self.exitStartMenu()
        self.classement.showMenu()
        
        self.show_cursor()

    def exitRankingMenu(self):
        print("hidding ranking menu")
        self.ignore("Menu-Ranking-Return")
        self.classement.hideMenu()
        self.loadStartMenu()
        
    def loadGame(self):
        self.exitStartMenu()
        print("Loading game")
        self.state = 'Loading'
        
        if(self.debug == False):
            self.hide_cursor
        self.setLights()

        self.terrain.load()
        self.hud = Hud()
        self.hud.show()
        self.loadEntities()

        #positionate the camera
        if(self.debug == False):
            self.camera.lookAt(self.slime.model)
        # Load Skybox
        Skybox(self.render)

        #register events
        self.ydelta = 300
        self.zdelta = 60
        self.accept("wheel_up", self.camzoom,[True])
        self.accept("wheel_down", self.camzoom,[False])

        #register tasks
        self.task_mgr.add(self.mainLoop, "MainTask")
        if(self.debug == False):
            self.task_mgr.add(self.updateCamera, "CameraTask")
        self.startGame()

    def startGame(self):
        print("Starting game")
        #Load music
        self.music = base.loader.loadMusic("assets/sounds/hytale-ost-kweebec-village.mp3")
        self.music.play()
        self.music.setVolume(0.1)

        self.setFrameRateMeter(True)
        self.state = 'Game'
        
        #init console
        """
        self.userConsole = pc.Console()
        commands = {"restart":self.__init__,
                    "teleport": self.slime.teleport,
                    "color": self.slime.setColor,
                    "stop": self.endGame
                    }
        self.userConsole.create(commands,app=self)
        """
        
    def endGame(self):
        self.state = 'Finished'
        print("SCORE : "+str(Monster.score))
        self.music.stop()
        self.loadGameOverMenu(Monster.score)
        today = date.today()
        name = getpass.getuser()
        """try:
            self.database.insertValues(name.capitalize(),Monster.score,today.strftime("%d/%m/%Y"))
        except:
            pass"""

    def restartGame(self,task):
        os.execl(sys.executable, sys.executable, *sys.argv)

    def loadEntities(self):
        startingPoint = (100, 0, 10)
        self.AIworld = AIWorld(render)
        self.collision = Collision(Monster.monster)
        #terrain, initialPos, slimeModelPath, floorPos, scale, lifePoint, volumicMass, movingSpeed, dt
        self.slime = Slime(self.terrain, startingPoint, "assets/models/slime.egg", 10, 10, 100, 0.01, 5, self.dt, "slime", self.collision) 
        self.spawn = Spawn([self.slime]+Monster.monster, self.terrain, self.AIworld, self.collision)
        self.spawn.spawn()

    def setLights(self):
        sun = DirectionalLight("sun")
        sun.setColor((1, 1, 0.9, 1))
        sun.setScene(render)
        self.sunNp = render.attachNewNode(sun)
        self.sunNp.setPos(-10, -10, 30)
        self.sunNp.lookAt(0,0,0)
        render.setLight(self.sunNp)
    
        alight = AmbientLight('alight')
        alight.setColor((0.35, 0.35, 0.35, 1))
        alnp = render.attachNewNode(alight)
        render.setLight(alnp)

    def mainLoop(self,task):
        if(self.state == "Finished"):
            return
        if(self.slime.lifePoint <= 0 or self.slime.scale >= 1000):
            self.endGame()
        self.AIworld.update()
        self.spawn.spawn()
        for e in [self.slime]+Monster.monster:
            e.update()
        self.hud.setLifeBarValue(self.slime.lifePoint)
        self.hud.setScore(Monster.score)
        return task.cont

    def camzoom(self,decrease):
        if(decrease):
            self.ydelta-=5
            self.zdelta-=1
        else:
            self.ydelta+=5
            self.zdelta+=1

    def updateCamera(self,task):
        if(self.state != 'Game'):
            return
        self.cam.setPos(self.slime.pos.getX(),self.slime.pos.getY()-self.ydelta,self.slime.pos.getZ()+self.zdelta)
        #print("x:"+str(self.camera.getX()-self.slime.pos.getX())+" y:"+str(self.camera.getY()-self.slime.pos.getY())+" z:"+str(self.camera.getZ()))
        #print(self.cam.getHpr())
        self.cam.lookAt(self.slime.model)
        return task.cont
    
    def hide_cursor(self):
        props = WindowProperties()
        props.setCursorHidden(True)
        self.win.requestProperties(props)

    def show_cursor(self):
        """set the Cursor visible again"""
        props = WindowProperties()
        props.setCursorHidden(False)        
        self.win.requestProperties(props)
Example #11
0
    def __init__(self):

        self.tile_grid = [[
            9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
            9, 9, 9
        ],
                          [
                              9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1,
                              1, 1, 1, 1, 1, 1, 1, 1, 9
                          ],
                          [
                              9, 1, 1, 7, 7, 7, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1,
                              1, 1, 1, 6, 6, 6, 1, 1, 9
                          ],
                          [
                              9, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1,
                              1, 1, 1, 6, 6, 6, 1, 1, 9
                          ],
                          [
                              9, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1,
                              1, 1, 1, 6, 6, 6, 1, 1, 9
                          ],
                          [
                              9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1,
                              1, 1, 1, 1, 1, 1, 1, 1, 9
                          ],
                          [
                              9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1,
                              1, 1, 1, 1, 1, 1, 1, 1, 9
                          ],
                          [
                              9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 0, 2, 2, 1,
                              1, 1, 1, 1, 1, 1, 1, 1, 9
                          ],
                          [
                              9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1,
                              1, 1, 1, 1, 1, 1, 1, 1, 9
                          ],
                          [
                              9, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 2, 0, 3,
                              3, 3, 3, 3, 3, 3, 3, 3, 9
                          ],
                          [
                              9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1,
                              1, 1, 1, 1, 1, 1, 1, 1, 9
                          ],
                          [
                              9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 0, 2, 2, 1,
                              1, 1, 1, 1, 1, 1, 1, 1, 9
                          ],
                          [
                              9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1,
                              1, 1, 1, 1, 1, 1, 1, 1, 9
                          ],
                          [
                              9, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1,
                              1, 1, 1, 1, 1, 1, 1, 1, 9
                          ],
                          [
                              9, 1, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1,
                              1, 1, 1, 5, 5, 1, 1, 1, 9
                          ],
                          [
                              9, 1, 1, 8, 8, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1,
                              1, 1, 5, 5, 5, 5, 1, 1, 9
                          ],
                          [
                              9, 1, 1, 1, 8, 8, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1,
                              1, 5, 5, 5, 5, 5, 5, 1, 9
                          ],
                          [
                              9, 1, 1, 1, 1, 8, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1,
                              1, 1, 1, 1, 1, 1, 1, 1, 9
                          ],
                          [
                              9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
                              9, 9, 9, 9, 9, 9, 9, 9, 9
                          ]]

        map_dict = {
            9: Tile_Highgrass,
            8: Tile_Water,
            7: Tile_Tree,
            6: Tile_Farm,
            5: Tile_Mountain,
            3: Tile_Dirt,
            2: Tile_Wall,
            1: Tile_Grass,
            0: Tile_Door
        }

        self.border_tile = []

        for i in range(len(self.tile_grid)):
            for j in range(len(self.tile_grid[i])):
                self.tile_grid[i][j] = map_dict[self.tile_grid[i][j]]()
                if isinstance(self.tile_grid[i][j], Tile_Highgrass):
                    self.border_tile.append(self.tile_grid[i][j])

        castle_home = []
        for i in range(5):
            for j in range(5):
                castle_home.append(self.tile_grid[i + 7][j + 10])

        self.spawn = Spawn(self, self.tile_grid[0][12])
        self.castle = Castle(castle_home)

        self.particle_holder = ParticleHolder()

        self.set_move_values()