def enter(self):
        awesomeengine.get()
        e = awesomeengine.get()
        e.input_manager.set_input_map('edit')

        m = Entity('editor_mouse')
        c = Entity('editor_entity_chooser')
        b1 = Entity('editor_place_button')
        b2 = Entity('editor_select_button')
        b3 = Entity('editor_delete_button')
        b4 = Entity('editor_move_button')

        e.entity_manager.add(m, b1, b2, b3, b4, c)

        ce = Entity('editor_camera')

        if hasattr(e, 'save_xy'):
            ce.x = e.save_xy[0]
            ce.y = e.save_xy[1]

        e.entity_manager.add(ce)
        l = awesomeengine.layer.SimpleCroppedLayer('draw')
        bl = awesomeengine.layer.SimpleCroppedLayer('draw2')
        bbl = awesomeengine.layer.SimpleCroppedLayer('draw3')
        l2 = awesomeengine.layer.SolidBackgroundLayer((0, 0, 0, 255))
        l3 = awesomeengine.layer.GridLayer((75, 75, 0, 0), 200)

        cam = Camera(awesomeengine.get().renderer, ce, [l2, l3, bbl, bl, l],
                     [b1, b2, b3, b4, c])
        self.cams = [cam]

        if not hasattr(e, 'current_map'):
            load_map("1")
 def handle_event(self, event):
     if event.target == 'MODE':
         if event.action == 'edit':
             awesomeengine.get().change_mode('edit')
     elif awesomeengine.get().entity_manager.has_by_name(event.target):
         awesomeengine.get().entity_manager.get_by_name(
             event.target).handle('input', event.action, event.value)
    def handle_event(self, event):
        if event.target == 'MODE' and event.value == 1:
            if event.action == 'play':
                awesomeengine.get().change_mode('splash')

        if awesomeengine.get().entity_manager.has_by_name(event.target):
            awesomeengine.get().entity_manager.get_by_name(
                event.target).handle('input', event.action, event.value)
 def handle_event(self, event):
     e = awesomeengine.get()
     if event.target == 'MODE' and event.value == 1:
         if event.action == 'play':
             if hasattr(awesomeengine.get(), 'current_map'
                        ) and awesomeengine.get().current_map == '4':
                 e.change_mode('welcome')
             else:
                 e.change_mode('play')
    def leave(self):

        e = awesomeengine.get()
        for ent in self.entities:
            e.entity_manager.remove(ent)

        if not hasattr(e, 'current_map'):
            load_map("1")
        else:
            if awesomeengine.get().current_map != '4':
                load_map(str(int(awesomeengine.get().current_map) + 1))
Пример #6
0
    def leave(self):
        e = awesomeengine.get()

        for ent in self.entities:
            e.remove_entity(ent)

        sdl2hl.mixer.ALL_CHANNELS.halt()
def load_map(map_name):
    e = awesomeengine.get()

    un_load_map()

    e.entity_manager.add_from_map(map_name)
    e.entity_manager.commit_changes()

    if not e.entity_manager.has_by_name('player'):
        p = Entity('player')

        l = int(map_name) - 1

        p.max_health = p.max_health_level[l]
        p.health = p.max_health

        p.air_jumps = p.air_jumps_level[l]

        p.num_projectiles = p.num_projectiles_level[l]

        e.entity_manager.add(p)
        e.entity_manager.commit_changes()

    if e.entity_manager.has_by_name('map_start'):
        map_start = e.entity_manager.get_by_name('map_start')
        player = e.entity_manager.get_by_name('player')
        player.x = map_start.x
        player.y = map_start.y

    e.current_map = map_name
    def enter(self):
        un_load_map()

        e = awesomeengine.get()
        e.current_map = '0'
        e.input_manager.set_input_map('default')

        h = Entity('dead')
        c = Entity('welcome_camera')

        e.entity_manager.add(h, c)

        l = awesomeengine.layer.SimpleCroppedLayer('draw')

        cam = Camera(awesomeengine.get().renderer, c, [l], [])

        self.entities = [h, c]
        self.cams = [cam]
    def enter(self):
        e = awesomeengine.get()
        e.input_manager.set_input_map('default')

        e.current_map = '0'

        h = Entity('title')
        c = Entity('welcome_camera')

        e.entity_manager.add(h, c)

        l = awesomeengine.layer.SimpleCroppedLayer('draw')

        cam = Camera(awesomeengine.get().renderer, c, [l], [])

        self.entities = [h, c]
        self.cams = [cam]
        self.music = e.resource_manager.get('sound', 'Braveless_Journey_Part3')
        self.channel = self.music.play(loops=-1)
        self.channel.volume = MUSIC_VOLUME
    def enter(self):
        e = awesomeengine.get()
        e.input_manager.set_input_map('play')

        ce = Entity('play_camera')
        e.entity_manager.add(ce)
        l = awesomeengine.layer.SimpleCroppedLayer('draw')
        bl = awesomeengine.layer.SimpleCroppedLayer('draw2')
        bbl = awesomeengine.layer.SimpleCroppedLayer('draw3')
        l2 = awesomeengine.layer.SolidBackgroundLayer((0, 0, 0, 255))

        h = Entity('hearts')

        cam = Camera(awesomeengine.get().renderer, ce, [l2, bbl, bl, l], [h])
        self.cams = [cam]

        m = Entity('mouse')
        e.entity_manager.add(m, h)

        if not hasattr(e, 'current_map'):
            load_map("1")
Пример #11
0
def build_corner_graph():
    e = awesomeengine.get()

    corners = list(e.entity_manager.get_by_tag('corner'))

    for corner in corners:
        corner.next_corners = []
        for direction in map(vec2d.Vec2d, [(0,1), (1,0), (0,-1), (-1,0)]):
            found_corner = find_next_corner(corner, direction)
            if found_corner is not None:
                corner.next_corners.append(found_corner)
        if len(corner.next_corners) == 1:
            print (corner.x - 10)/ 20, (corner.y - 10)/20
Пример #12
0
    def enter(self):
        e = awesomeengine.get()

        welcome_cam_entity = e.add_entity('attract-cam')
        image = e.add_entity('title-image')

        self.entities = [welcome_cam_entity, image]

        camera = awesomeengine.Camera(
            e.renderer,
            welcome_cam_entity,
            layers=[awesomeengine.layer.SolidBackgroundLayer((100,100,100,255)), awesomeengine.layer.SimpleLayer('draw')])

        self.cameras = [camera]
Пример #13
0
    def update(self, dt):
        engine = awesomeengine.get()

        for e in engine.entity_manager.get_by_tag('always_update'):
            e.handle('update', dt)

        r = rectangle.from_entity(engine.entity_manager.get_by_name('update-rect'))
        for e in engine.entity_manager.get_in_area('update', r):
            e.handle('update', dt)

        velocity_iters = 6
        position_iters = 2
        engine.box2d_world.Step(dt, velocity_iters, position_iters)
        engine.box2d_world.ClearForces()
    def enter(self):
        un_load_map()

        e = awesomeengine.get()
        e.input_manager.set_input_map('default')

        s = Entity('splash_screens')

        if not hasattr(e, 'current_map'):
            s.image = s.screens[0]
        else:
            s.image = s.screens[int(e.current_map)]

        c = Entity('splash_camera')

        e.entity_manager.add(s, c)

        l = awesomeengine.layer.SimpleCroppedLayer('draw')

        cam = Camera(awesomeengine.get().renderer, c, [l], [])

        self.entities = [s, c]
        self.cams = [cam]

        if hasattr(self, 'channel'):
            self.channel.halt()
        if not hasattr(e, 'current_map'):
            self.music = e.resource_manager.get('sound',
                                                'Braveless_Journey_Part1')
        elif e.current_map == "1":
            self.music = e.resource_manager.get('sound',
                                                'Braveless_Journey_Part2')
        else:
            self.music = e.resource_manager.get('sound',
                                                'Braveless_Journey_Part3')
        self.channel = self.music.play(loops=-1)
        self.channel.volume = MUSIC_VOLUME
    def handle_event(self, event):
        e = awesomeengine.get()

        if event.target == 'MODE':
            if event.action == 'SAVE':
                e.entity_manager.save_to_map(e.current_map,
                                             lambda x: 'editable' in x.tags)
            if event.action == 'play':
                e.change_mode('play')
            if event.action.startswith('LOAD_'):
                _, map_name = event.action.split('_')
                load_map(map_name)
            if event.action == 'PRINT':
                mapprinter.print_map('/tmp/map.bmp')
        elif e.entity_manager.has_by_name(event.target):
            e.entity_manager.get_by_name(event.target).handle(
                'input', event.action, event.value)
def print_map(path):
    e = awesomeengine.get()
    entities = e.entity_manager.get_by_tag('editable')

    min_x = 0
    min_y = 0
    max_x = 0
    max_y = 0

    for entity in entities:
        for attr in ('x', 'y', 'width', 'height', 'colour'):
            if not hasattr(entity, attr):
                continue

        min_x = min(min_x, entity.x - entity.width / 2.0)
        min_y = min(min_y, entity.y - entity.width / 2.0)
        max_x = max(max_x, entity.x + entity.width / 2.0)
        max_y = max(max_y, entity.y + entity.height / 2.0)

    print min_x, min_y

    x_offset = -min_x
    y_offset = -min_y

    surface = sdl2hl.Surface(int(max_x + x_offset), int(max_y + y_offset), 32,
                             sdl2hl.PixelFormat.rgba8888)
    renderer = sdl2hl.Renderer.create_software_renderer(surface)
    renderer.draw_color = (0, 0, 0, 255)
    renderer.clear()

    for entity in entities:
        for attr in ('x', 'y', 'width', 'height', 'colour'):
            if not hasattr(entity, attr):
                continue

        renderer.draw_color = entity.colour

        screen_x = int((entity.x - entity.width / 2.0) + x_offset)
        screen_y = int(max_y - (entity.y + entity.height / 2.0))

        renderer.fill_rect(
            sdl2hl.Rect(screen_x, screen_y, int(entity.width),
                        int(entity.height)))

    renderer.present()
    surface.save_bmp(path)
def un_load_map():
    e = awesomeengine.get()

    if e.entity_manager.has_by_name('player'):
        player = e.entity_manager.get_by_name('player')
        e.entity_manager.remove(player)

    if e.entity_manager.has_by_name('selector'):
        selector = e.entity_manager.get_by_name('selector')
        e.entity_manager.remove(selector)

    for entity in e.entity_manager.get_by_tag('editable'):
        e.entity_manager.remove(entity)

    for entity in e.entity_manager.get_by_tag('kill_me'):
        e.entity_manager.remove(entity)

    e.entity_manager.commit_changes()
Пример #18
0
def find_next_corner(corner, dir):
    r = rectangle.from_entity(corner)

    current_tile = corner

    distance = 0
    while True:
        check_rect = rectangle.Rect(current_tile.x + dir.x * current_tile.width, current_tile.y + dir.y * current_tile.height, 2, 2)

        next_tiles = awesomeengine.get().entity_manager.get_in_area('road', check_rect)
        if len(next_tiles) > 0:
            distance += 1
            next_tile = next_tiles.pop()
            if 'corner' in next_tile.tags and distance > 1:
                return next_tile
            else:
                current_tile = next_tile
        else:
            return None
 def leave(self):
     e = awesomeengine.get()
     for ent in e.entity_manager.get_by_tag('editor'):
         e.entity_manager.remove(ent)
Пример #20
0
 def handle_event(self, event):
     if event.target == 'GAME':
         if event.action == 'play':
             awesomeengine.get().change_mode('game')
 def draw(self):
     for c in awesomeengine.get().entity_manager.get_by_tag('camera'):
         c.camera.render()
 def update(self, dt):
     for e in awesomeengine.get().entity_manager.get_by_tag('update'):
         e.handle('update', dt)
    def update(self, dt):
        for e in awesomeengine.get().entity_manager.get_by_tag('update'):
            e.handle('update', dt)
        awesomeengine.get().entity_manager.update_all_positions()

        if awesomeengine.get().entity_manager.get_by_name('player').supre_dead:
            awesomeengine.get().change_mode('splash')
        elif awesomeengine.get().entity_manager.get_by_name(
                'player').health <= 0:
            awesomeengine.get().change_mode('dead')

        if awesomeengine.get().entity_manager.has_by_name('map_finish'):
            map_end = awesomeengine.get().entity_manager.get_by_name(
                'map_finish')
            player = awesomeengine.get().entity_manager.get_by_name('player')
            if (abs(map_end.x - player.x) < 10) and (abs(map_end.y - player.y)
                                                     < 10):
                awesomeengine.get().change_mode('splash')
 def leave(self):
     e = awesomeengine.get()
     for ent in self.entities:
         e.entity_manager.remove(ent)
     self.channel.halt()
Пример #25
0
 def handle_event(self, event):
     if awesomeengine.get().entity_manager.has_by_name(event.target):
         awesomeengine.get().entity_manager.get_by_name(event.target).handle('input', event.action, event.value)
Пример #26
0
    def leave(self):
        e = awesomeengine.get()

        for ent in self.entities:
            e.remove_entity(ent)
Пример #27
0
    def enter(self):
        e = awesomeengine.get()
        self._create_box2d_world(e)
        e.add_entities_from_map('map1')

        cornergraph.build_corner_graph()

        road = list(e.entity_manager.get_by_tag('road'))
        random.shuffle(road)

        zone = e.add_entity('pickup-zone', x = road[0].x, y=road[0].y)
        player = e.add_entity('player', pickup_target=zone)

        self.entities =[player]

        corners = list(e.entity_manager.get_by_tag('corner'))
        # random.shuffle(corners)

        print len(corners)

        only_road = list(e.entity_manager.get_by_tag('road') - e.entity_manager.get_by_tag('corner'))
        random.shuffle(only_road)
        num_taxi = 65
        for tile in only_road[:num_taxi]:
            self.entities.append(e.add_entity('taxi', x=tile.x, y=tile.y, follow=player))

        for tile in corners:

            target = random.choice(tile.next_corners)

            angle = (Vec2d(target.x, target.y) - Vec2d(tile.x, tile.y)).angle

            self.entities.append(e.add_entity('civilian-car', angle=angle, x=tile.x, y=tile.y, ai_mode='roam', next_corner=target))


        player_cam_entity = e.add_entity('player-cam', target=player)
        update_rect = e.add_entity('update-rect',target=player, name='update-rect')
        awake_rect = e.add_entity('car-sleeper', target=player)

        score_display = e.add_entity('score-display')
        fare = e.add_entity('fare')
        timer = e.add_entity('timer')
        cash = e.add_entity('cash')
        dropped = e.add_entity('pasangers-dropped')

        e.entity_manager.commit_changes()


        cam = awesomeengine.Camera(e.renderer, player_cam_entity,
            layers=[awesomeengine.layer.SolidBackgroundLayer((100, 100, 100, 255)),
                  awesomeengine.layer.SimpleCroppedLayer('terrain'),
                  awesomeengine.layer.SimpleCroppedLayer('building'),
                  awesomeengine.layer.SimpleCroppedLayer('draw')],
            hud=[score_display, timer, fare, cash, dropped])

        self.cameras = [cam]

        self.music = e.resource_manager.get('sound', 'music')
        self.music.play(loops=-1)
        self.ambient = e.resource_manager.get('sound', 'ambience')
        self.ambient.play(loops=-1)
 def leave(self):
     c = awesomeengine.get().entity_manager.get_by_name('play_camera')
     awesomeengine.get().save_xy = (c.x, c.y)
     awesomeengine.get().entity_manager.remove(c)
     m = awesomeengine.get().entity_manager.get_by_name('mouse')
     awesomeengine.get().entity_manager.remove(m)