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)
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)
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)
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
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)
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 GetMultiShotSpreadThreshold(): screenSize = Engine_reference().video_manager().video_size() l = min(screenSize.get_x(), screenSize.get_y()) return l * 0.5