Ejemplo n.º 1
0
def countDown(self, number, task):
    if number == 5:
        print 5
        self.count_down = loadObject('5.png')
        self.count_down.setPos(0,0.1,0)
        self.count_down.setScale(configs.SCALE*0.1)
        self.count_down.setAlphaScale(1)
        taskMgr.doMethodLater(1, countDown, 'draw lines', extraArgs=[self, 4], appendTask=True) 
    if number == 4:
        self.count_down.removeNode()
        print 4
        self.count_down = loadObject('4.png')
        self.count_down.setPos(0,0.1,0)
        self.count_down.setScale(configs.SCALE*0.1)
        self.count_down.setAlphaScale(1)
        taskMgr.doMethodLater(1, countDown, 'draw lines', extraArgs=[self, 3], appendTask=True) 
    if number == 3:
        self.count_down.removeNode()
        self.count_down = loadObject('3.png')
        self.count_down.setPos(0,0.1,0)
        self.count_down.setScale(configs.SCALE*0.1)
        self.count_down.setAlphaScale(1)
        print 3
        taskMgr.doMethodLater(1, countDown, 'draw lines', extraArgs=[self, 2], appendTask=True) 
    if number == 2:
        self.count_down.removeNode()
        self.count_down = loadObject('2.png')
        self.count_down.setPos(0,0.1,0)
        self.count_down.setScale(configs.SCALE*0.1)
        self.count_down.setAlphaScale(1)
        print 2
        taskMgr.doMethodLater(1, countDown, 'draw lines', extraArgs=[self, 1], appendTask=True) 
    if number == 1:
        self.count_down.removeNode()
        self.count_down = loadObject('1.png')
        self.count_down.setPos(0,0.1,0)
        self.count_down.setScale(configs.SCALE*0.1)
        self.count_down.setAlphaScale(1)
        print 1
        for entity_id, entity in configs.ENTITIES.items():
            if entity['CATEGORY'] == 'player':
                entity['PLAYER_ID'].detachNode()
                entity['CIRCLE_NODE'].detachNode()
        taskMgr.doMethodLater(1, countDown, 'draw lines', extraArgs=[self, 0], appendTask=True) 
    if number == 0:
        print 0
        self.count_down.removeNode()
        for entity_id, entity in configs.ENTITIES.items():
            if entity['CATEGORY'] == 'player':
                configs.GAME_ONGOING = 1
                new_line, line_vertex, line_node = start_new_line(self, entity['NODE'].getX(), entity['NODE'].getZ(), entity['COLOR'])
                line_id = configs.ENTITY_ID
                configs.ENTITIES[configs.ENTITY_ID] = {'CATEGORY':'line', 'GEOM':new_line, 'VERTEX':line_vertex, 'NODE': line_node}
                configs.ENTITY_ID += 1
                entity["CURRENT_LINE"] = line_id
                draw_line(entity_id, start=True)     
                configs.NEXT_BONUS_TIME = globalClock.getFrameTime() + random.randint(3, 10)
                self.spawn_bonus = taskMgr.add(spawn_bonus, 'bonusSpawner', extraArgs=[self], appendTask=True)
    return task.done
Ejemplo n.º 2
0
def init_player(self, left_btn, right_btn, player_number ,pos=(0,0,0), heading=0):
    color = (configs.COLORS_MAP[player_number][0])

    nodePath = loadObject()
    nodePath.setPos(pos)
    nodePath.setScale(configs.SCALE*0.004)
    nodePath.setColor(color)

    p = ParticleEffect()
    p.loadConfig('textures/flare.ptf')
    p.start(parent = nodePath, renderParent = render)
    p0 = p.getParticlesList()[0]
    p0.emitter.setRadiateOrigin(Point3(0.05*cos(heading* pi/180), 0.0, 0.05*sin(heading* pi/180)))
    p.setPos(0,-1,0)
    # p.setBin("unsorted", 0)
    # p.setDepthTest(False)
    p.setTwoSided(True)

    text= TextNode('text') 
    text.setText(str("%s" % player_number))
    text.setTextColor(color)
    text.setAlign(TextNode.ACenter)
    # text.font = self.font
    text3d = NodePath(text) 
    text3d.setTwoSided(True)
    text3d.setPos(nodePath, -1,-3,-4)
    text3d.reparentTo(render)
    circle = loadObject(tex='circle.png')
    circle.reparentTo(render)
    circle.setPos(nodePath, 0,-2,0)
    text3d.setScale(0.13)
    circle.setScale(0.09)
    text3d.setColorScale(color)
    circle.setColorScale(color)


    new_line, line_vertex, line_node = start_new_line(self, pos[0], pos[2], color)
    line_id = configs.ENTITY_ID
    configs.ENTITIES[configs.ENTITY_ID] = {'CATEGORY':'line', 'GEOM':new_line, 'VERTEX':line_vertex, "NODE": line_node}
    configs.ENTITY_ID += 1
    speed = configs.FORWARD_SPEED
    right_angle = configs.FORCE_RIGHT_ANGLE_TURN
    # print left_btn
    # print right_btn
    self.accept(("%s" % left_btn),     player_controls, [configs.ENTITY_ID, 'TURN_LEFT', 1])
    self.accept(("%s-up" % left_btn),  player_controls, [configs.ENTITY_ID, 'TURN_LEFT', 0])
    self.accept(("%s" % right_btn),     player_controls, [configs.ENTITY_ID, 'TURN_RIGHT', 1])
    self.accept(("%s-up" % right_btn),  player_controls, [configs.ENTITY_ID, 'TURN_RIGHT', 0])

    configs.ENTITIES[configs.ENTITY_ID] = {'CATEGORY':'player','ALIVE':True, 'NODE':nodePath,'PARTICLE_PARENT':p, 'PARTICLE':p0, 
        'HEADING':heading, 'CURRENT_LINE':line_id, 'TICKNESS':configs.SCALE, 'TURN_LEFT':0, 'TURN_RIGHT':0, 'COLOR':color, 
        'PLAYER_ID':text3d, 'CIRCLE_NODE':circle, 'LEFT_ARMED':True, 'RIGHT_ARMED':True, 'PLAYER_NUMBER': player_number, 'SPEED':speed,
        'RIGHT_ANGLE_TURN':right_angle }
    configs.ENTITY_ID += 1
Ejemplo n.º 3
0
def init_ship(self, ship_model_path, player2=False):
    if player2 == True:
        pos = LPoint2(12, -8)
        category_bits = 0x0003
        mask_bits = (0x0001 | 0x0002)
    else:
        pos = LPoint2(-12, 8)
        category_bits = 0x0002
        mask_bits = (0x0001 | 0x0003)

    new_ship = loadObject(ship_model_path, scale=0.5)
    physic_debug, physic_body = new_physic_object(shape='box',
                                                  scale=0.5,
                                                  angular_dampning=5,
                                                  linear_dampning=0.1,
                                                  pos=pos,
                                                  category_bits=category_bits,
                                                  mask_bits=mask_bits)
    new_ship.reparentTo(render)
    new_ship.setTexRotate(TextureStage.getDefault(), 90)

    new_weapon = weapon()
    if player2 == True:
        shipname = "ship2"
        self.life_bar2 = loadObject(scale=0.5)
        self.life_bar2.setPos(-0.1, 0, 0.12)
        self.life_bar2.reparentTo(base.a2dBottomRight)
        self.life_bar2.setSz(0.005)
        self.energy_bar2 = loadObject(scale=0.5)
        self.energy_bar2.setPos(-0.1, 0, 0.215)
        self.energy_bar2.reparentTo(base.a2dBottomRight)
        self.energy_bar2.setSz(0.005)
    else:
        shipname = "ship"
        self.life_bar = loadObject(scale=0.5)
        self.life_bar.setPos(-0.1, 0, 0.12)
        self.life_bar.reparentTo(base.a2dBottomLeft)
        self.life_bar.setSz(0.005)
        self.energy_bar = loadObject(scale=0.5)
        self.energy_bar.setPos(-1, 0, 0.215)
        self.energy_bar.reparentTo(base.a2dBottomLeft)
        self.energy_bar.setSz(0.005)

    defines.ENTITIES[defines.ENTITY_ID] = {
        'CATEGORY': shipname,
        'E_FIELD_ENABLED': False,
        'NODE': new_ship,
        'PHYSIC_NODE': physic_debug,
        'BODY': physic_body,
        'SHIELD': 100.0,
        'ENERGY': 100.0,
        'WEAPON': new_weapon
    }
    defines.ENTITY_ID += 1
Ejemplo n.º 4
0
def add_shield(self, entity_id):
    pos = defines.ENTITIES[entity_id]['BODY'].position
    if defines.ENTITIES[entity_id]['CATEGORY'] == 'ship':
        category_bits = 0x0002
        mask_bits = (0x0001 | 0x0003)
    else:
        category_bits = 0x0003
        mask_bits = (0x0001 | 0x0002)
    physic_debug, physic_body = new_physic_object(shape='circle',
                                                  scale=1,
                                                  angular_dampning=0,
                                                  linear_dampning=0,
                                                  pos=pos,
                                                  category_bits=category_bits,
                                                  mask_bits=mask_bits,
                                                  den=0.0)
    # help(defines.world)
    defines.world.CreateRevoluteJoint(
        bodyA=defines.ENTITIES[entity_id]['BODY'], bodyB=physic_body)
    new_shield = loadObject('shield.png', scale=1)
    new_shield.setPos(physic_body.position.x, 55, physic_body.position.y)
    physic_body.linearVelocity.Set(
        defines.ENTITIES[entity_id]['BODY'].linearVelocity.x,
        defines.ENTITIES[entity_id]['BODY'].linearVelocity.y)
    physic_body.angularVelocity = defines.ENTITIES[entity_id][
        'BODY'].angularVelocity

    defines.ENTITIES[entity_id]['E_FIELD_BODY'] = physic_body
    defines.ENTITIES[entity_id]['E_FIELD_DEBUG_NODE'] = physic_debug
    defines.ENTITIES[entity_id]['E_FIELD_NODE'] = new_shield
Ejemplo n.º 5
0
def break_asteroid(self, entity_id):
    number = randint(2, 3)
    i = 0
    while i < number:
        asteroid = loadObject("asteroid%d.png" % (randint(1, 3)),
                              scale=defines.AST_INIT_SCALE / number,
                              pos=LPoint3(23, 23))
        physic_debug, physic_body = new_physic_object(
            shape='circle',
            scale=defines.AST_INIT_SCALE / number,
            pos=defines.ENTITIES[entity_id]['BODY'].position)

        physic_body.linearVelocity.Set(
            defines.ENTITIES[entity_id]['BODY'].linearVelocity.x,
            defines.ENTITIES[entity_id]['BODY'].linearVelocity.y)
        physic_body.angularVelocity = defines.ENTITIES[entity_id][
            'BODY'].angularVelocity

        f = physic_body.GetWorldVector(localVector=(randint(-5, 5),
                                                    randint(-5, 5)))
        p = physic_body.GetWorldPoint(localPoint=(0.0, 0))
        physic_body.ApplyLinearImpulse(f, p, True)

        defines.ENTITIES[defines.ENTITY_ID] = {
            'CATEGORY': "asteroid",
            'NODE': asteroid,
            'PHYSIC_NODE': physic_debug,
            'BODY': physic_body,
            'SHIELD': 20,
            'ENERGY': 0
        }
        defines.ENTITY_ID += 1

        i += 1
Ejemplo n.º 6
0
def spawn_bonus(self, task):
    time = globalClock.getFrameTime()
    if configs.NEXT_BONUS_TIME <= time:
        if configs.GAME_WON == True:
            return task.done
        if configs.FORCE_RIGHT_ANGLE_TURN == True:
            which_bonus = random.randint(1, 7)
        else:
            which_bonus = random.randint(0, 7)
        position = Vec3(random.uniform(-1.8, 1.8), random.uniform(-1, 1), 0)
        bonus = loadObject("bonus_%s.png" % which_bonus, scale=0.05, pos=position)
        bonus.setY(-0.01)
        me = random.randint(0,1)
        if me == 1:
            bonus.setColor(0,0,1,1)
        else:
            bonus.setColor(1,0,0,1)
        if which_bonus == 1 or  which_bonus == 2 or  which_bonus == 5:
            bonus.setColor(0,1,0,1)
        configs.ENTITIES[configs.ENTITY_ID] = {'CATEGORY':'bonus', 'NODE':bonus, "BONUS_ID":which_bonus, 'ME':me}
        configs.ENTITY_ID += 1
        
        delay = random.randint(3, 10)
        configs.NEXT_BONUS_TIME = time + delay
    return task.cont
Ejemplo n.º 7
0
def spawn_bonus(self, task):
    time = globalClock.getFrameTime()
    if configs.NEXT_BONUS_TIME <= time:
        if configs.GAME_WON == True:
            return task.done
        if configs.FORCE_RIGHT_ANGLE_TURN == True:
            which_bonus = random.randint(1, 7)
        else:
            which_bonus = random.randint(0, 7)
        position = Vec3(random.uniform(-1.8, 1.8), random.uniform(-1, 1), 0)
        bonus = loadObject("bonus_%s.png" % which_bonus,
                           scale=0.05,
                           pos=position)
        bonus.setY(-0.01)
        me = random.randint(0, 1)
        if me == 1:
            bonus.setColor(0, 0, 1, 1)
        else:
            bonus.setColor(1, 0, 0, 1)
        if which_bonus == 1 or which_bonus == 2 or which_bonus == 5:
            bonus.setColor(0, 1, 0, 1)
        configs.ENTITIES[configs.ENTITY_ID] = {
            'CATEGORY': 'bonus',
            'NODE': bonus,
            "BONUS_ID": which_bonus,
            'ME': me
        }
        configs.ENTITY_ID += 1

        delay = random.randint(3, 10)
        configs.NEXT_BONUS_TIME = time + delay
    return task.cont
Ejemplo n.º 8
0
def init_planet_logo(self, pos=LPoint3(0, 0)):
    planet = loadObject("planet0.png", scale=2, pos=LPoint3(0, 0))
    task = taskMgr.doMethodLater(0.5, animate_planet, 'animate planet', extraArgs=[planet, 0, defines.ENTITY_ID], appendTask=True)
    planet.reparentTo(render)
    planet.setPos(pos[0], 55, pos[1])
    defines.ENTITIES[defines.ENTITY_ID] = {'CATEGORY':'menu_planet','NODE':planet,'BUTTON': None, 'TASK': task}
    defines.ENTITY_ID += 1
Ejemplo n.º 9
0
def init_planet(self, pos=(0,0)):
    planet = loadObject("planet0.png", scale=2, pos=LPoint3(0, 0))
    physic_debug, physic_body = new_physic_object( shape='circle', 
                                                    scale=2, 
                                                    pos=pos,
                                                    den=400.0)

    task = taskMgr.doMethodLater(0.5, animate_planet, 'animate planet', extraArgs=[planet, 0, defines.ENTITY_ID], appendTask=True)
    defines.ENTITIES[defines.ENTITY_ID] = {'CATEGORY':"planet", 'NODE':planet, 
                'PHYSIC_NODE':physic_debug,'BODY':physic_body, 'SHIELD':999999, 'ENERGY':0, 'TASK': task}
    defines.ENTITY_ID += 1
Ejemplo n.º 10
0
def init_ship(self, ship_model_path, player2=False):
    if player2 == True:
        pos = LPoint2(12,-8)
        category_bits = 0x0003
        mask_bits = (0x0001 | 0x0002)
    else:
        pos = LPoint2(-12,8)
        category_bits = 0x0002
        mask_bits = (0x0001 | 0x0003)

    new_ship = loadObject(ship_model_path, scale=0.5)
    physic_debug, physic_body  = new_physic_object(shape='box', scale=0.5, 
                        angular_dampning=5, linear_dampning=0.1, pos=pos, 
                        category_bits=category_bits, mask_bits=mask_bits)
    new_ship.reparentTo(render)
    new_ship.setTexRotate(TextureStage.getDefault(), 90)

    new_weapon = weapon();
    if player2 == True:
        shipname = "ship2"
        self.life_bar2 = loadObject(scale=0.5)
        self.life_bar2.setPos(-0.1,0, 0.12)
        self.life_bar2.reparentTo(base.a2dBottomRight)
        self.life_bar2.setSz(0.005)
        self.energy_bar2 = loadObject(scale=0.5)
        self.energy_bar2.setPos(-0.1,0, 0.215)
        self.energy_bar2.reparentTo(base.a2dBottomRight)
        self.energy_bar2.setSz(0.005)
    else:
        shipname = "ship" 
        self.life_bar = loadObject(scale=0.5)
        self.life_bar.setPos(-0.1,0,0.12)
        self.life_bar.reparentTo(base.a2dBottomLeft)
        self.life_bar.setSz(0.005)
        self.energy_bar = loadObject(scale=0.5)
        self.energy_bar.setPos(-1,0,0.215)
        self.energy_bar.reparentTo(base.a2dBottomLeft)
        self.energy_bar.setSz(0.005)

    defines.ENTITIES[defines.ENTITY_ID] = {'CATEGORY':shipname,'E_FIELD_ENABLED': False, 'NODE':new_ship, 'PHYSIC_NODE':physic_debug, 'BODY':physic_body, 'SHIELD':100.0, 'ENERGY':100.0, 'WEAPON':new_weapon}
    defines.ENTITY_ID += 1
Ejemplo n.º 11
0
def spawnAsteroids(self, quantity):
    for i in range(quantity):
        asteroid = loadObject("asteroid%d.png" % (randint(1, 3)),
                              scale=defines.AST_INIT_SCALE, pos=LPoint3(23, 23))
        physic_debug, physic_body  = new_physic_object( shape='circle', 
                                                        scale=defines.AST_INIT_SCALE, 
                                                        pos=(randint(-20, 20), randint(-15, 15)))

        f = physic_body.GetWorldVector(localVector=( randint(-40,40), randint(-40,40) ))
        p = physic_body.GetWorldPoint(localPoint=(0.0, 0))
        physic_body.ApplyLinearImpulse(f, p, True)

        defines.ENTITIES[defines.ENTITY_ID] = {'CATEGORY':"asteroid", 'NODE':asteroid, 'PHYSIC_NODE':physic_debug,'BODY':physic_body, 'SHIELD':100, 'ENERGY':0}
        defines.ENTITY_ID += 1
Ejemplo n.º 12
0
def init_planet_logo(self, pos=LPoint3(0, 0)):
    planet = loadObject("planet0.png", scale=2, pos=LPoint3(0, 0))
    task = taskMgr.doMethodLater(0.5,
                                 animate_planet,
                                 'animate planet',
                                 extraArgs=[planet, 0, defines.ENTITY_ID],
                                 appendTask=True)
    planet.reparentTo(render)
    planet.setPos(pos[0], 55, pos[1])
    defines.ENTITIES[defines.ENTITY_ID] = {
        'CATEGORY': 'menu_planet',
        'NODE': planet,
        'BUTTON': None,
        'TASK': task
    }
    defines.ENTITY_ID += 1
Ejemplo n.º 13
0
    def fire(self, panda3dworld, entity_id):
        now = globalClock.getRealTime()
        if now - self.last_time_fired < self.reload_time:
            if defines.ENTITIES[entity_id]['CATEGORY'] == 'ship':
                panda3dworld.keys["fire"] = 0
            elif defines.ENTITIES[entity_id]['CATEGORY'] == 'ship2':
                panda3dworld.keys["p2fire"] = 0
        else:
            self.last_time_fired = now
            new_bullet = loadObject("bullet.png", scale=0.2)
            pos = defines.ENTITIES[entity_id]["BODY"].position
            angle = 360 - defines.ENTITIES[entity_id]["NODE"].getR() 
            pos_x = pos.x + 0.5 * cos(angle* pi/180)
            pos_y = pos.y + 0.5 * sin(angle* pi/180)

            if defines.ENTITIES[entity_id]['CATEGORY'] == 'ship':
                category_bits = 0x0002
                mask_bits = (0x0001 | 0x0003)
            elif defines.ENTITIES[entity_id]['CATEGORY'] == 'ship2':
                category_bits = 0x0003
                mask_bits = (0x0001 | 0x0002)

            physic_debug, physic_body  = new_physic_object(shape='box', scale=0.2, is_a_bullet=True, pos=(pos_x,pos_y), 
                                                        category_bits=category_bits, mask_bits=mask_bits, den=self.bullet_density)
            # physic_debug.reparentTo(new_bullet)

            new_bullet.setPos(physic_body.position.x, 55, physic_body.position.y)
            physic_body.linearVelocity.Set(defines.ENTITIES[entity_id]['BODY'].linearVelocity.x, defines.ENTITIES[entity_id]['BODY'].linearVelocity.y)
            physic_body.angularVelocity = defines.ENTITIES[entity_id]['BODY'].angularVelocity

            f = physic_body.GetWorldVector(localVector=( self.bullet_speed * cos(angle* pi/180), self.bullet_speed * sin(angle* pi/180)))
            p = physic_body.GetWorldPoint(localPoint=(0.0, 0))
            physic_body.ApplyLinearImpulse(f, p, True)


            sound = base.loader.loadSfx("sounds/fire.ogg")
            sound.setVolume(0.5)
            sound.play()

            defines.ENTITIES[defines.ENTITY_ID] = {'CATEGORY':"bullet", 'EXPIRE': now + 3, 'NODE':new_bullet, 'PHYSIC_NODE':physic_debug ,'BODY':physic_body, 'SHIELD':0, 'ENERGY':0}
            defines.ENTITY_ID += 1
            defines.ENTITIES[entity_id]['ENERGY'] -= 20
            if defines.ENTITIES[entity_id]['CATEGORY'] == 'ship':
                panda3dworld.keys["fire"] = 0
            elif defines.ENTITIES[entity_id]['CATEGORY'] == 'ship2':
                panda3dworld.keys["p2fire"] = 0
Ejemplo n.º 14
0
def init_planet(self, pos=(0, 0)):
    planet = loadObject("planet0.png", scale=2, pos=LPoint3(0, 0))
    physic_debug, physic_body = new_physic_object(shape='circle',
                                                  scale=2,
                                                  pos=pos,
                                                  den=400.0)

    task = taskMgr.doMethodLater(0.5,
                                 animate_planet,
                                 'animate planet',
                                 extraArgs=[planet, 0, defines.ENTITY_ID],
                                 appendTask=True)
    defines.ENTITIES[defines.ENTITY_ID] = {
        'CATEGORY': "planet",
        'NODE': planet,
        'PHYSIC_NODE': physic_debug,
        'BODY': physic_body,
        'SHIELD': 999999,
        'ENERGY': 0,
        'TASK': task
    }
    defines.ENTITY_ID += 1
Ejemplo n.º 15
0
def break_asteroid(self, entity_id):
    number = randint(2, 3)
    i = 0
    while i < number:
        asteroid = loadObject("asteroid%d.png" % (randint(1, 3)),
                              scale=defines.AST_INIT_SCALE/number, pos=LPoint3(23, 23))
        physic_debug, physic_body  = new_physic_object( shape='circle', 
                                                        scale=defines.AST_INIT_SCALE/number, 
                                                        pos=defines.ENTITIES[entity_id]['BODY'].position)
      

        physic_body.linearVelocity.Set(defines.ENTITIES[entity_id]['BODY'].linearVelocity.x, defines.ENTITIES[entity_id]['BODY'].linearVelocity.y)
        physic_body.angularVelocity = defines.ENTITIES[entity_id]['BODY'].angularVelocity

        f = physic_body.GetWorldVector(localVector=( randint(-5,5), randint(-5,5) ))
        p = physic_body.GetWorldPoint(localPoint=(0.0, 0))
        physic_body.ApplyLinearImpulse(f, p, True)

        defines.ENTITIES[defines.ENTITY_ID] = {'CATEGORY':"asteroid", 'NODE':asteroid, 'PHYSIC_NODE':physic_debug,'BODY':physic_body, 'SHIELD':20, 'ENERGY':0}
        defines.ENTITY_ID += 1

        i += 1
Ejemplo n.º 16
0
def add_shield(self, entity_id):
    pos = defines.ENTITIES[entity_id]['BODY'].position
    if defines.ENTITIES[entity_id]['CATEGORY'] == 'ship':
        category_bits = 0x0002
        mask_bits = (0x0001 | 0x0003)
    else:
        category_bits = 0x0003
        mask_bits = (0x0001 | 0x0002)
    physic_debug, physic_body  = new_physic_object(shape='circle', scale=1, 
                        angular_dampning=0, linear_dampning=0, pos=pos, 
                        category_bits=category_bits, mask_bits=mask_bits, den=0.0)
    # help(defines.world)
    defines.world.CreateRevoluteJoint(
            bodyA=defines.ENTITIES[entity_id]['BODY'],
            bodyB=physic_body
        )
    new_shield = loadObject('shield.png', scale=1)
    new_shield.setPos(physic_body.position.x, 55, physic_body.position.y)
    physic_body.linearVelocity.Set(defines.ENTITIES[entity_id]['BODY'].linearVelocity.x, defines.ENTITIES[entity_id]['BODY'].linearVelocity.y)
    physic_body.angularVelocity = defines.ENTITIES[entity_id]['BODY'].angularVelocity

    defines.ENTITIES[entity_id]['E_FIELD_BODY'] = physic_body
    defines.ENTITIES[entity_id]['E_FIELD_DEBUG_NODE'] = physic_debug
    defines.ENTITIES[entity_id]['E_FIELD_NODE'] = new_shield
Ejemplo n.º 17
0
def spawnAsteroids(self, quantity):
    for i in range(quantity):
        asteroid = loadObject("asteroid%d.png" % (randint(1, 3)),
                              scale=defines.AST_INIT_SCALE,
                              pos=LPoint3(23, 23))
        physic_debug, physic_body = new_physic_object(
            shape='circle',
            scale=defines.AST_INIT_SCALE,
            pos=(randint(-20, 20), randint(-15, 15)))

        f = physic_body.GetWorldVector(localVector=(randint(-40, 40),
                                                    randint(-40, 40)))
        p = physic_body.GetWorldPoint(localPoint=(0.0, 0))
        physic_body.ApplyLinearImpulse(f, p, True)

        defines.ENTITIES[defines.ENTITY_ID] = {
            'CATEGORY': "asteroid",
            'NODE': asteroid,
            'PHYSIC_NODE': physic_debug,
            'BODY': physic_body,
            'SHIELD': 100,
            'ENERGY': 0
        }
        defines.ENTITY_ID += 1
Ejemplo n.º 18
0
    def __init__(self):
        ShowBase.__init__(self)

        self.enableParticles()
        # self.setFrameRateMeter(True)
        wp = WindowProperties()
        wp.setSize(1280, 720)
        wp.setFullscreen(False)
        self.win.requestProperties(wp)
        self.disableMouse()
        self.camLens.setNear(0.01)
        # Load the background starfield.
        # self.font = loader.loadFont('textures/inconsolata.egg')

        self.setBackgroundColor((0, 0, 0, 1))
        self.cameraPivot = render.attachNewNode("CameraPivot")
        self.cameraArm = self.cameraPivot.attachNewNode("CameraArm")
        self.cameraArm.setPos(self.cameraArm, 0,-4.1,0)
        self.camera.reparentTo(self.cameraArm)
        # self.camera.lookAt(self.cameraPivot)
        # self.keys = {   "turnLeft": 0, 
        #                 "turnRight": 0,
        #             }
        # PStatClient.connect()
        # Other keys events set the appropriate value in our key dictionary
        base.buttonThrowers[0].node().setKeystrokeEvent('keystroke')

        render.setAntialias(AntialiasAttrib.MAuto)

        configs.PANDA3D = self
        self.accept('f6', self.changeCamera)
        self.accept('keystroke', self.getKeys)
        self.accept('escape', self.set_esc, [1])
        self.accept('escape-up', self.set_esc, [0])
        
        configs.COLLISION_MAP = [[[0,0,0] for x in range(825)] for x in range(1385)] 
        # init_menu(self)
        # self.gameTask = taskMgr.add(self.menuLoop, "gameLoop")
        self.gameBoard = loadObject()
        self.gameBoard.setColor(0.3,0.3,0.3,0.5)
        self.gameBoard.setScale(1)
        self.gameBoard.setSx(1.8)
        self.gameBoard.setPos(0,0.02,0)
        self.border = loader.loadModel("models/border")
        self.border.reparentTo(render)
        self.border.setPos(0,0,0)
        self.border.setPos(0,0,0)
        self.border.setP(90)
        self.border.setScale(0.0028)
        self.border.setSz(0.001)
        self.border.setSx(0.00282)
        self.border.setSy(0.00279)
        self.border.setTransparency(TransparencyAttrib.MAlpha)
        self.border.setColorScale(0, 1, 0, 1.0)

        self.hover_circle = loadObject(tex='circle.png')
        self.hover_circle.hide()

        init_bonus_tasks(self)

        # display_shader = Shader.load(Shader.SL_GLSL, vertex="shaders/display_shader.vert", fragment="shaders/display_shader.frag")
        # self.render.set_shader(display_shader)

        self.init_menu()
Ejemplo n.º 19
0
def init_player(self,
                left_btn,
                right_btn,
                player_number,
                pos=(0, 0, 0),
                heading=0):
    color = (configs.COLORS_MAP[player_number][0])

    nodePath = loadObject()
    nodePath.setPos(pos)
    nodePath.setScale(configs.SCALE * 0.004)
    nodePath.setColor(color)

    p = ParticleEffect()
    p.loadConfig('textures/flare.ptf')
    p.start(parent=nodePath, renderParent=render)
    p0 = p.getParticlesList()[0]
    p0.emitter.setRadiateOrigin(
        Point3(0.05 * cos(heading * pi / 180), 0.0,
               0.05 * sin(heading * pi / 180)))
    p.setPos(0, -1, 0)
    # p.setBin("unsorted", 0)
    # p.setDepthTest(False)
    p.setTwoSided(True)

    text = TextNode('text')
    text.setText(str("%s" % player_number))
    text.setTextColor(color)
    text.setAlign(TextNode.ACenter)
    # text.font = self.font
    text3d = NodePath(text)
    text3d.setTwoSided(True)
    text3d.setPos(nodePath, -1, -3, -4)
    text3d.reparentTo(render)
    circle = loadObject(tex='circle.png')
    circle.reparentTo(render)
    circle.setPos(nodePath, 0, -2, 0)
    text3d.setScale(0.13)
    circle.setScale(0.09)
    text3d.setColorScale(color)
    circle.setColorScale(color)

    new_line, line_vertex, line_node = start_new_line(self, pos[0], pos[2],
                                                      color)
    line_id = configs.ENTITY_ID
    configs.ENTITIES[configs.ENTITY_ID] = {
        'CATEGORY': 'line',
        'GEOM': new_line,
        'VERTEX': line_vertex,
        "NODE": line_node
    }
    configs.ENTITY_ID += 1
    speed = configs.FORWARD_SPEED
    right_angle = configs.FORCE_RIGHT_ANGLE_TURN
    # print left_btn
    # print right_btn
    self.accept(("%s" % left_btn), player_controls,
                [configs.ENTITY_ID, 'TURN_LEFT', 1])
    self.accept(("%s-up" % left_btn), player_controls,
                [configs.ENTITY_ID, 'TURN_LEFT', 0])
    self.accept(("%s" % right_btn), player_controls,
                [configs.ENTITY_ID, 'TURN_RIGHT', 1])
    self.accept(("%s-up" % right_btn), player_controls,
                [configs.ENTITY_ID, 'TURN_RIGHT', 0])

    configs.ENTITIES[configs.ENTITY_ID] = {
        'CATEGORY': 'player',
        'ALIVE': True,
        'NODE': nodePath,
        'PARTICLE_PARENT': p,
        'PARTICLE': p0,
        'HEADING': heading,
        'CURRENT_LINE': line_id,
        'TICKNESS': configs.SCALE,
        'TURN_LEFT': 0,
        'TURN_RIGHT': 0,
        'COLOR': color,
        'PLAYER_ID': text3d,
        'CIRCLE_NODE': circle,
        'LEFT_ARMED': True,
        'RIGHT_ARMED': True,
        'PLAYER_NUMBER': player_number,
        'SPEED': speed,
        'RIGHT_ANGLE_TURN': right_angle
    }
    configs.ENTITY_ID += 1
Ejemplo n.º 20
0
    def __init__(self):
        ShowBase.__init__(self)

        # self.setFrameRateMeter(True)
        wp = WindowProperties()
        wp.setSize(1280, 720)
        wp.setFullscreen(False)
        self.win.requestProperties(wp)
        self.disableMouse()

        # Load the background starfield.
        self.setBackgroundColor((0, 0, 0, 1))

        self.font = loader.loadFont('textures/inconsolata.egg')

        self.bg = loadObject("star_field.png", scale=73, depth=200,
                             transparency=False)
        self.bg.setTag('back_ground', '1')
        self.bg.setSx(73*16/9)
        # Load the ship and set its initial velocity. Create a ship entity

        self.keys = {   "turnLeft": 0, 
                        "turnRight": 0,
                        "accel": 0, 
                        "fire": 0,
                        "laser": 0,
                        "e_to_s": 0, 
                        "s_to_e": 0,
                        "cloak": 0,
                        "p2turnLeft": 0, 
                        "p2turnRight": 0,
                        "p2accel": 0, 
                        "p2fire": 0,
                        "p2laser": 0,
                        "e_to_s2": 0, 
                        "s_to_e2": 0,
                        "cloak2": 0,
                        "toggle_debug": 0,
                        "e_field": 0,
                        "e_field2": 0,
                        "mouse_l": 0,
                    }

        self.accept("escape", sys.exit)  # Escape quits
        # Other keys events set the appropriate value in our key dictionary
        self.accept("a",     self.setKey, ["turnLeft", 1])
        self.accept("a-up",  self.setKey, ["turnLeft", 0])
        self.accept("d",    self.setKey, ["turnRight", 1])
        self.accept("d-up", self.setKey, ["turnRight", 0])
        self.accept("w",       self.setKey, ["accel", 1])
        self.accept("w-up",    self.setKey, ["accel", 0])
        self.accept("f",       self.setKey, ["fire", 1])
        self.accept("f-up",    self.setKey, ["fire", 0])
        self.accept("h",       self.setKey, ["laser", 1])
        self.accept("h-up",    self.setKey, ["laser", 0])
        self.accept("r",          self.setKey, ["e_to_s", 1])
        self.accept("r-up",          self.setKey, ["e_to_s", 0])
        self.accept("t",          self.setKey, ["s_to_e", 1])
        self.accept("t-up",          self.setKey, ["s_to_e", 0])
        self.accept("s",              self.setKey, ["cloak", 1])
        self.accept("s-up",           self.setKey, ["cloak", 0])
        self.accept("g",              self.setKey, ["e_field", 1])
        self.accept("g-up",           self.setKey, ["e_field", 0])

        self.accept("arrow_left",     self.setKey, ["p2turnLeft", 1])
        self.accept("arrow_left-up",  self.setKey, ["p2turnLeft", 0])
        self.accept("arrow_right",    self.setKey, ["p2turnRight", 1])
        self.accept("arrow_right-up", self.setKey, ["p2turnRight", 0])
        self.accept("arrow_up",       self.setKey, ["p2accel", 1])
        self.accept("arrow_up-up",    self.setKey, ["p2accel", 0])

        # NUMPAD for p2
        self.accept("1",              self.setKey, ["p2fire", 1])
        self.accept("1-up",           self.setKey, ["p2fire", 0])
        self.accept("3",              self.setKey, ["p2laser", 1])
        self.accept("3-up",           self.setKey, ["p2laser", 0])
        self.accept("4",              self.setKey, ["e_to_s2", 1])
        self.accept("4-up",           self.setKey, ["e_to_s2", 0])
        self.accept("5",              self.setKey, ["s_to_e2", 1])
        self.accept("5-up",           self.setKey, ["s_to_e2", 0])
        self.accept("2",              self.setKey, ["e_field2", 1])
        self.accept("2-up",           self.setKey, ["e_field2", 0])
        # NO NUMPAD for p2
        self.accept("l",              self.setKey, ["p2fire", 1])
        self.accept("l-up",           self.setKey, ["p2fire", 0])
        self.accept("'",              self.setKey, ["p2laser", 1])
        self.accept("'-up",           self.setKey, ["p2laser", 0])
        self.accept("o",              self.setKey, ["e_to_s2", 1])
        self.accept("o-up",           self.setKey, ["e_to_s2", 0])
        self.accept("p",              self.setKey, ["s_to_e2", 1])
        self.accept("p-up",           self.setKey, ["s_to_e2", 0])
        self.accept(";",              self.setKey, ["e_field2", 1])
        self.accept(";-up",           self.setKey, ["e_field2", 0])


        self.accept("arrow_down",              self.setKey, ["cloak2", 1])
        self.accept("arrow_down-up",           self.setKey, ["cloak2", 0])

        self.accept("f1",             self.setKey, ["toggle_debug", 1])
        self.accept("mouse1",         self.setKey, ["mouse_l", 1])
        self.accept("mouse1-up",         self.setKey, ["mouse_l", 0])

        init_menu(self)
        self.gameTask = taskMgr.add(self.menuLoop, "gameLoop")
Ejemplo n.º 21
0
    def fire(self, panda3dworld, entity_id):
        now = globalClock.getRealTime()
        if now - self.last_time_fired < self.reload_time:
            if defines.ENTITIES[entity_id]["CATEGORY"] == "ship":
                panda3dworld.keys["fire"] = 0
            elif defines.ENTITIES[entity_id]["CATEGORY"] == "ship2":
                panda3dworld.keys["p2fire"] = 0
        else:
            self.last_time_fired = now
            new_bullet = loadObject("bullet.png", scale=0.2)
            pos = defines.ENTITIES[entity_id]["BODY"].position
            angle = 360 - defines.ENTITIES[entity_id]["NODE"].getR()
            pos_x = pos.x + 0.5 * cos(angle * pi / 180)
            pos_y = pos.y + 0.5 * sin(angle * pi / 180)

            if defines.ENTITIES[entity_id]["CATEGORY"] == "ship":
                category_bits = 0x0002
                mask_bits = 0x0001 | 0x0003
            elif defines.ENTITIES[entity_id]["CATEGORY"] == "ship2":
                category_bits = 0x0003
                mask_bits = 0x0001 | 0x0002

            physic_debug, physic_body = new_physic_object(
                shape="box",
                scale=0.2,
                is_a_bullet=True,
                pos=(pos_x, pos_y),
                category_bits=category_bits,
                mask_bits=mask_bits,
                den=self.bullet_density,
            )
            # physic_debug.reparentTo(new_bullet)

            new_bullet.setPos(physic_body.position.x, 55, physic_body.position.y)
            physic_body.linearVelocity.Set(
                defines.ENTITIES[entity_id]["BODY"].linearVelocity.x,
                defines.ENTITIES[entity_id]["BODY"].linearVelocity.y,
            )
            physic_body.angularVelocity = defines.ENTITIES[entity_id]["BODY"].angularVelocity

            f = physic_body.GetWorldVector(
                localVector=(self.bullet_speed * cos(angle * pi / 180), self.bullet_speed * sin(angle * pi / 180))
            )
            p = physic_body.GetWorldPoint(localPoint=(0.0, 0))
            physic_body.ApplyLinearImpulse(f, p, True)

            sound = base.loader.loadSfx("sounds/fire.ogg")
            sound.setVolume(0.5)
            sound.play()

            defines.ENTITIES[defines.ENTITY_ID] = {
                "CATEGORY": "bullet",
                "EXPIRE": now + 3,
                "NODE": new_bullet,
                "PHYSIC_NODE": physic_debug,
                "BODY": physic_body,
                "SHIELD": 0,
                "ENERGY": 0,
            }
            defines.ENTITY_ID += 1
            defines.ENTITIES[entity_id]["ENERGY"] -= 20
            if defines.ENTITIES[entity_id]["CATEGORY"] == "ship":
                panda3dworld.keys["fire"] = 0
            elif defines.ENTITIES[entity_id]["CATEGORY"] == "ship2":
                panda3dworld.keys["p2fire"] = 0