コード例 #1
0
ファイル: GameScene.py プロジェクト: uspgamedev/asteroids
 def SetAndShowSceneEndText(self, msgTag):
     if self.finishTextNode != None: return
     text = ResourceManager_CreateTextFromLanguageTag(msgTag)
     self.finishTextNode = Node(text)
     screenSize = Engine_reference().video_manager().video_size()
     x = (screenSize.get_x()/2.0) - (text.width()/2.0)
     y = (screenSize.get_y()/2.0) - (text.height()/2.0)
     self.finishTextNode.modifier().set_offset( Vector2D(x, y) )
     self.interface_node().AddChild(self.finishTextNode)
コード例 #2
0
ファイル: BarUI.py プロジェクト: uspgamedev/asteroids
 def UpdateSize(self, w, h):
     self.size.set_x(w)
     self.size.set_y(h)
     self.backShape.set_size(self.size)
     screenSize = Engine_reference().video_manager().video_size()
     x = self.node.modifier().offset().get_x()
     y = self.node.modifier().offset().get_y()
     if x + w > screenSize.get_x():
         x = screenSize.get_x() - w
     if y + h > screenSize.get_y():
         y = screenSize.get_y() - h
     if x < 0:   x = 0
     if y < 0:   y = 0
     self.SetPos(x,y)
コード例 #3
0
ファイル: GameScene.py プロジェクト: uspgamedev/asteroids
    def __init__(self):
        screenSize = Engine_reference().video_manager().video_size()
        rect = SolidRectangle(screenSize)
        rect.set_color( Color(0.5, 0.5, 0.5) )
        self.backNode = Node(rect)
        color = self.backNode.modifier().color()
        color.set_a(0.5)
        self.backNode.modifier().set_color(color)
        self.content_node().AddChild(self.backNode)

        text = ResourceManager_CreateTextFromLanguageTag("Pause")
        self.textNode = Node(text)
        x = (screenSize.get_x()/2.0) - (text.width()/2.0)
        y = (screenSize.get_y()/2.0) - (text.height()/2.0)
        self.textNode.modifier().set_offset( Vector2D(x, y) )
        self.interface_node().AddChild(self.textNode)
コード例 #4
0
ファイル: Weapons.py プロジェクト: uspgamedev/asteroids
 def Toggle(self, active, dt):
     energy_cost = self.energy_per_sec * dt
     if active and (not self.firing) and self.parent.energy >= 2*self.energy_per_sec:
         self.firing = True
         self.hole_pos = Engine_reference().input_manager().GetMousePosition()
         self.parent.TakeEnergy(self.energy_per_sec)
         self.blackhole = Gravity.Blackhole(self.hole_pos.get_x(), self.hole_pos.get_y(), 50.0, 0)
         self.blackhole.AddIDToIgnoreList(self.parent.id)
         beam = VisualBeam(self.parent, self.blackhole, 10, Color(0.1,0.3,0.3, 0.7))
         AddNewObjectToScene(beam)
         AddNewObjectToScene(self.blackhole)
         return True
     elif active and self.firing:
         if self.parent.energy < energy_cost:
             self.firing = False
             self.blackhole.Delete()
             self.blackhole = None
             return False
         self.parent.TakeEnergy(energy_cost)
         return True
     elif not active:
         if self.firing:
             self.blackhole.Delete()
             self.blackhole = None
         self.firing = False
     return False
コード例 #5
0
ファイル: Items.py プロジェクト: uspgamedev/asteroids
class PowerUp (BasicEntity):
    def __init__(self, x, y, texture_name, lifetime, effect, name, effectCreationFunc):
        r = 15.0
        BasicEntity.__init__(self, x, y, texture_name, r, 1)
        self.life_hud.node.set_active(False)
        self.max_velocity = 135.0

        self.lifespan = lifetime
        self.lifetime = lifetime
        self.effect = effect
        self.effect.creation_func = effectCreationFunc
        self.wasApplied = False
        self.blink_time = 0.0

        self.text = Engine_reference().text_manager().GetText(name)
        self.textNode = Node(self.text)
        self.textNode.modifier().set_offset( Vector2D(-self.text.width()/2.0, 0.0 ) ) # TODO: text hotspot!
        self.textNode.set_active(False)
        self.node.AddChild(self.textNode)

    def setupCollisionObject(self):
        self.collision_object = CollisionObject(getCollisionManager(), self)  #initialize collision object, second arg is passed to collisionlogic to handle collisions
        self.collision_object.InitializeCollisionClass("PowerUp")              # define the collision class
        self.collision_object.set_shape(self.geometry)                # set our shape
        self.collision_object.AddCollisionLogic("Entity", BasicColLogic(self) )
        self.collision_object.thisown = 0

    def Update(self, dt):
        if not self.wasApplied:
            BasicEntity.Update(self, dt)
        self.lifetime -= dt
        if self.lifetime < self.lifespan*0.15 and not self.wasApplied:
            self.blink_time += dt
            if self.blink_time > self.lifetime/self.lifespan:
                self.blink_time = 0.0
                self.node.set_active( not self.node.active() )
        if self.lifetime < 0:
            self.Delete()

    def HandleCollision(self, target):
        if target.CheckType("Ship") and not self.wasApplied:
            self.effect.SetTarget(target)
            target.ApplyEffect(self.effect)
            self.wasApplied = True
            self.lifetime = 3.0
            self.textNode.set_active(True)
            color = self.node.modifier().color()
            color.set_a(0.2)
            self.node.modifier().set_color(color)
            self.node.set_active(True)
コード例 #6
0
ファイル: Items.py プロジェクト: uspgamedev/asteroids
    def __init__(self, x, y, texture_name, lifetime, effect, name, effectCreationFunc):
        r = 15.0
        BasicEntity.__init__(self, x, y, texture_name, r, 1)
        self.life_hud.node.set_active(False)
        self.max_velocity = 135.0

        self.lifespan = lifetime
        self.lifetime = lifetime
        self.effect = effect
        self.effect.creation_func = effectCreationFunc
        self.wasApplied = False
        self.blink_time = 0.0

        self.text = Engine_reference().text_manager().GetText(name)
        self.textNode = Node(self.text)
        self.textNode.modifier().set_offset( Vector2D(-self.text.width()/2.0, 0.0 ) ) # TODO: text hotspot!
        self.textNode.set_active(False)
        self.node.AddChild(self.textNode)
コード例 #7
0
ファイル: Weapons.py プロジェクト: uspgamedev/asteroids
def GetMultiShotSpreadThreshold():
    screenSize = Engine_reference().video_manager().video_size()
    l = min(screenSize.get_x(), screenSize.get_y())
    return l * 0.5