Example #1
0
 def __init__(self, x, y, size_factor):
     if size_factor > Asteroid.GetMaximumFactor():
         size_factor = Asteroid.GetMaximumFactor()
     r = Asteroid.GetActualRadius(size_factor)
     self.size_factor = size_factor
     df = Engine_reference().CurrentScene().difficultyFactor
     hp = 120 * size_factor
     if df > 2:  hp += hp*(df/25.0)
     BasicEntity.__init__(self, x, y, "images/asteroid%s.png" % (randint(1,3)), r, hp)
     self.group = Group.ASTEROIDS
     angle = random() * 2 * pi
     self.rotation_speed = 0
     if random() > 0.2: 
         self.rotation_speed = random()*pi - pi/2
     self.node.modifier().set_rotation( angle )
     self.has_splitted = False
     self.mass = 1000.0 + 100000000*size_factor
     self.collidedWithAsteroids = []
     self.diedFromPlanet = False
     self.turret = None
     if Asteroid.CheckChanceForTurret(size_factor):
         if df > 110:    df = 110.0
         cooldown = 2.7 - (size_factor/Asteroid.GetMaximumFactor()) - df/100 - random()*0.5
         speed = 80 + df
         power = 0.3 + random()*(size_factor/Asteroid.GetMaximumFactor())
         self.turret = Turret(self, "Ship", cooldown, speed, power, Color(1.0, 0.0, 0.3, 1.0))
Example #2
0
    def __init__(self, x, y, velocity, power, damage = 25.0, isFromPlayer=False):
        self.parent = None #game entity that "owns" this projectile
        self.power = power
        self.damage = damage * power
        self.original_damage = self.damage
        self.lifetime = 10.0 * power
        self.original_radius = Projectile.GetActualRadius(power)
        BasicEntity.__init__(self, x, y, "images/projectile.png", self.original_radius, self.damage)
        self.shape.set_hotspot( Vector2D(32.0, 32.0) )
        self.shape.set_size( Vector2D(64, 128) )  # original projectile.png size
        self.on_hit_events = []
        #self.tracking_target = None
        self.tracking_coefficient = 0.0

        self.rangeCheck = None

        self.isFromPlayer = isFromPlayer
        self.hitsFriendlyToParent = True
        self.hitsSameClassAsParent = True
        # scale:
        # base_radius <=> 0.5 (scale value)
        # 
        # radius <=> scale
        scale = self.radius * 0.20 / Projectile.base_radius
        self.node.modifier().set_scale( Vector2D(scale, scale) )
        self.node.modifier().set_rotation( -(velocity.Angle() + pi/2.0) )
        self.velocity = velocity
        self.value = 0
        self.life_hud.node.set_active(False)
Example #3
0
 def __init__(self, parent, life, starting_angle):
     self.parent = parent
     x = parent.GetPos().get_x()
     y = parent.GetPos().get_y()
     BasicEntity.__init__(self, x, y, "images/satellite.png", 10.0, life)
     self.orbit_angle = starting_angle
     self.angle_speed = pi/2.5  # angle speed in radians per second
     self.turret = Weapons.Turret(self, "Asteroid", 0.6, 170.0, 0.6, Color(0.0, 1.0, 0.1, 0.7))
     self.turret.hitsFriendlyToParent = False
     self.turret.hitsSameClassAsParent = False
Example #4
0
 def __init__(self, x, y, size_factor):
     self.size_factor = size_factor
     df = Engine_reference().CurrentScene().difficultyFactor
     r = 75.0 * size_factor
     hp = 600 * size_factor
     hp += hp*(df/100.0)
     BasicEntity.__init__(self, x, y, "images/planet%s.png" % (randint(1,5)), r, hp)
     self.has_splitted = False
     self.well = GravityWell(x, y, r)
     self.well.AddIDToIgnoreList(self.id)
     AddNewObjectToScene(self.well)
Example #5
0
    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)
Example #6
0
    def __init__(self, x, y, data):
        self.image_w = 420.0
        self.image_h = 830.0
        BasicEntity.__init__(self, x, y, "images/ship.png", 20.0, data.max_life, self.image_h/self.image_w)
        self.radius = (self.size*0.5).Length()
        self.node.set_zindex(1.0)
        self.graphic_node = Node()
        self.node.set_drawable(None)
        self.graphic_node.set_drawable(self.shape)
        self.graphic_node.set_zindex(1.0)
        self.node.AddChild(self.graphic_node)
        self.group = Group.SHIP
        self.acceleration = Vector2D(0.0, 0.0)
        self.data = data
        self.max_energy = self.data.max_energy
        self.energy = self.max_energy
        self.bonus_regen_counter = 0.0
        self.bonus_regen_threshold = 3.0
        self.speed = 400.0                  # |acceleration| in a given frame
        self.max_speed = 200.0              # max |velocity| ship can attain.

        #self.rangeCheck = RangeCheck(0, 0, 1024.0, "Asteroid")
        #self.rangeCheck.AttachToEntity(self)

        self.pulse_weapon = Weapons.Pulse()
        self.right_weapon = None
        self.pulse_weapon.Activate(self)
        #self.right_weapon.Activate(self)

        offset = self.size.get_y()/2.0
        self.life_hud.SetOffset(offset)

        self.energy_hud = BarUI(self, "energy", Color(0.0,0.0,1.0,1.0), offset+BAR_SIZE)
        self.hud_node.AddChild(self.energy_hud.node)

        self.charge_hud = BarUI(self.pulse_weapon, "charge_time", Color(1.0,1.0,0.0,1.0), -offset-2*BAR_SIZE)
        self.hud_node.AddChild(self.charge_hud.node)