예제 #1
0
def loop():
    global UNSCRAMBLE_TO, WHITE_VALUE, SUBTITLE_COLOR

    for i in range(len(COMPANY_STRING)):
        if i > UNSCRAMBLE_TO:
            _char = random.choice(COMPANY_STRING)
            _gray_color = int(round(255 * (UNSCRAMBLE_TO / i))) + random.randint(-15, 15)
            _fore_color = (_gray_color, _gray_color, _gray_color)

        else:
            _char = COMPANY_STRING[i]
            _r = numbers.clip(WHITE_VALUE - random.randint(0, 90), 0, 255)
            _g = _r
            _b = _r

            _fore_color = _r, _g, _b

        display.write_char(
            "text",
            (constants.WINDOW_WIDTH / 2) + i - (len(COMPANY_STRING) / 2),
            (constants.WINDOW_HEIGHT / 2) - 1,
            _char,
            fore_color=_fore_color,
        )

    display.write_string(
        "text",
        (constants.WINDOW_WIDTH / 2) - (len(SUBTITLE_TEXT) / 2),
        (constants.WINDOW_HEIGHT / 2) + 1,
        SUBTITLE_TEXT,
        fore_color=(SUBTITLE_COLOR, SUBTITLE_COLOR, SUBTITLE_COLOR),
    )

    if UNSCRAMBLE_TO > 6:
        SUBTITLE_COLOR = numbers.clip(SUBTITLE_COLOR + 2, 0, 255)

    if UNSCRAMBLE_TO > 25:
        WHITE_VALUE -= 2

        SUBTITLE_COLOR = numbers.clip(SUBTITLE_COLOR - 6, 0, 255)

    if UNSCRAMBLE_TO > 38:
        return False

    display.blit_surface("text")

    events.trigger_event("draw")

    UNSCRAMBLE_TO += 0.1

    return True
예제 #2
0
def loop():
    global UNSCRAMBLE_TO, WHITE_VALUE, SUBTITLE_COLOR

    for i in range(len(COMPANY_STRING)):
        if i > UNSCRAMBLE_TO:
            _char = random.choice(COMPANY_STRING)
            _gray_color = int(round(
                255 * (UNSCRAMBLE_TO / i))) + random.randint(-15, 15)
            _fore_color = (_gray_color, _gray_color, _gray_color)

        else:
            _char = COMPANY_STRING[i]
            _r = numbers.clip(WHITE_VALUE - random.randint(0, 90), 0, 255)
            _g = _r
            _b = _r

            _fore_color = _r, _g, _b

        display.write_char('text', (constants.WINDOW_WIDTH / 2) + i -
                           (len(COMPANY_STRING) / 2),
                           (constants.WINDOW_HEIGHT / 2) - 1,
                           _char,
                           fore_color=_fore_color)

    display.write_string(
        'text', (constants.WINDOW_WIDTH / 2) - (len(SUBTITLE_TEXT) / 2),
        (constants.WINDOW_HEIGHT / 2) + 1,
        SUBTITLE_TEXT,
        fore_color=(SUBTITLE_COLOR, SUBTITLE_COLOR, SUBTITLE_COLOR))

    if UNSCRAMBLE_TO > 6:
        SUBTITLE_COLOR = numbers.clip(SUBTITLE_COLOR + 2, 0, 255)

    if UNSCRAMBLE_TO > 25:
        WHITE_VALUE -= 2

        SUBTITLE_COLOR = numbers.clip(SUBTITLE_COLOR - 6, 0, 255)

    if UNSCRAMBLE_TO > 38:
        return False

    display.blit_surface('text')

    events.trigger_event('draw')

    UNSCRAMBLE_TO += .1

    return True
예제 #3
0
def draw():
    if SELECTED_SQUAD:
        _x, _y = movement.get_position(entities.get_entity(SELECTED_SQUAD))
        _selected_grid = _x, _y

    else:
        _selected_grid = None

    ui_strategy.draw_map_grid(selected_grid=_selected_grid,
                              fade=FADE_VALUE / 255.0)
    ui_strategy.draw_squads(selected_squad=SELECTED_SQUAD)
    ui_strategy.draw_time()
    ui_strategy.draw_money()

    if DRAW_MODE == 'squad_info':
        ui_strategy.draw_squad_info(SELECTED_SQUAD)

    elif DRAW_MODE == 'camp_info':
        ui_strategy.draw_camp_info(SELECTED_CAMP)

    elif DRAW_MODE == 'news':
        ui_strategy.draw_news(NEWS)

    elif DRAW_MODE == 'raid':
        ui_strategy.draw_raid_info(SELECTED_SQUAD, SELECTED_CAMP)
        ui_strategy.draw_raid_path(MAP_PATH)

        display.blit_surface('map_path')

    display.blit_surface('map_markers')
    display.blit_surface('map_squads')
    display.blit_surface_viewport('ui_bar',
                                  0,
                                  0,
                                  constants.WINDOW_WIDTH,
                                  constants.WINDOW_HEIGHT -
                                  constants.STRAT_MAP_HEIGHT,
                                  dy=constants.STRAT_MAP_HEIGHT)

    events.trigger_event('draw')
    display.reset_surface_shaders('map')
예제 #4
0
def draw():
	if SELECTED_SQUAD:
		_x, _y = movement.get_position(entities.get_entity(SELECTED_SQUAD))
		_selected_grid = _x, _y
	
	else:
		_selected_grid = None
	
	ui_strategy.draw_map_grid(selected_grid=_selected_grid, fade=FADE_VALUE/255.0)
	ui_strategy.draw_squads(selected_squad=SELECTED_SQUAD)	
	ui_strategy.draw_time()
	ui_strategy.draw_money()
	
	if DRAW_MODE == 'squad_info':
		ui_strategy.draw_squad_info(SELECTED_SQUAD)
	
	elif DRAW_MODE == 'camp_info':
		ui_strategy.draw_camp_info(SELECTED_CAMP)
	
	elif DRAW_MODE == 'news':
		ui_strategy.draw_news(NEWS)
	
	elif DRAW_MODE == 'raid':
		ui_strategy.draw_raid_info(SELECTED_SQUAD, SELECTED_CAMP)
		ui_strategy.draw_raid_path(MAP_PATH)
		
		display.blit_surface('map_path')
	
	display.blit_surface('map_markers')
	display.blit_surface('map_squads')
	display.blit_surface_viewport('ui_bar',
	                              0,
	                              0,
	                              constants.WINDOW_WIDTH,
	                              constants.WINDOW_HEIGHT-constants.STRAT_MAP_HEIGHT,
	                              dy=constants.STRAT_MAP_HEIGHT)
	
	events.trigger_event('draw')
	display.reset_surface_shaders('map')
예제 #5
0
def draw():
    #Title
    _i = 0
    _dst_x = 9999

    for c in TEXT[0]:
        _alpha = numbers.clip(
            FADE_ALPHA * numbers.clip(16 - _i, 7, 16) / SPARK_SIZE, 0, 1)
        _dx = ((constants.WINDOW_WIDTH / 2) - (len(''.join(TEXT)) / 2)) + _i

        if _dx < _dst_x:
            _dst_x = _dx

    _batch = display.create_batch(len(TEXT[0]), 1, _dst_x, 12)

    _i = 0
    for c in TEXT[0]:
        _alpha = numbers.clip(
            FADE_ALPHA * numbers.clip(16 - _i, 7, 16) / SPARK_SIZE, 0, 1)

        display.write_char_batch(
            _batch,
            ((constants.WINDOW_WIDTH / 2) - (len(''.join(TEXT)) / 2)) + _i,
            12,
            c,
            fore_color=(200 * _alpha, 200 * _alpha, 200 * _alpha))

        _i += 1

    display.draw_batch(_batch, 'text')

    _i = 0
    for c in TEXT[1]:
        _alpha = numbers.clip(
            FADE_ALPHA * numbers.clip(18 - _i, 0, 18) / SPARK_SIZE, 0, 1)
        display.write_char('text', ((constants.WINDOW_WIDTH / 2) -
                                    (len(TEXT[1]) / 2)) + _i,
                           13,
                           c.upper(),
                           fore_color=(200 * _alpha, 60 * _alpha, 80 * _alpha))

        _i += 1

    #Menu
    _i = 0
    for item in [('Continue', False), ('New', True), ('Quit', True)]:
        if item[1]:
            _fore_color = (200 * FADE_ALPHA, 200 * FADE_ALPHA,
                           200 * FADE_ALPHA)

        else:
            _fore_color = (100 * FADE_ALPHA, 100 * FADE_ALPHA,
                           100 * FADE_ALPHA)

        if MENU_ITEM_SELECTED == _i:
            _text = '> %s <' % item[0]

        else:
            _text = item[0]

        display.write_string('text',
                             (constants.WINDOW_WIDTH / 2) - (len(_text) / 2),
                             18 + _i,
                             _text,
                             fore_color=_fore_color)

        _i += 1

    paint_map()

    display.blit_surface_viewport('background', 0, 0, constants.MAP_VIEW_WIDTH,
                                  constants.MAP_VIEW_HEIGHT)
    display.blit_surface('text')
예제 #6
0
def draw():
    _x = 3
    _y_mod = 0
    _total_money = 0

    display.write_string('text', (SIDEBAR_WIDTH / 2) - (len(TITLE) / 2),
                         3,
                         TITLE,
                         fore_color=(255, 255, 255))

    for squad_member in HIRED_MEMBERS:
        _y = 10 + _y_mod
        _name = squad_member['name']

        display.write_string('text',
                             _x,
                             _y - 2,
                             _name,
                             fore_color=(255, 255, 255))
        display.write_string('text',
                             _x,
                             _y - 1,
                             squad_member['skill_focus'].title() + ' ' *
                             (len(_name) - len(squad_member['skill_focus'])),
                             fore_color=(180, 180, 180),
                             back_color=(40, 40, 40))

        for stat in SKILL_NAMES:
            _r = int(round(220 * (1 - (squad_member[stat] / 75.0))))
            _g = int(round(250 * (squad_member[stat] / 75.0)))

            display.write_string('text', _x, _y + 1, '%s' % stat.upper())
            display.write_string('text',
                                 _x + len(stat),
                                 _y + 1,
                                 '.' * (15 - len(stat)),
                                 fore_color=(80, 80, 80))
            display.write_string('text',
                                 _x + 15,
                                 _y + 1,
                                 '%s' % squad_member[stat],
                                 fore_color=(_r, _g, 0))

            _y += 1

        display.write_string('text', _x, _y + 2, 'Pay: ')
        display.write_string('text',
                             _x + 6,
                             _y + 2,
                             '$%.2f' % squad_member['pay'],
                             fore_color=(0, 200, 0),
                             back_color=(0, 40, 0))
        display.write_string('text',
                             _x + 6 + len('$%.2f' % squad_member['pay']) + 0,
                             _y + 2,
                             '/week',
                             fore_color=(150, 150, 150),
                             back_color=(0, 0, 0))

        _x += 20

        if _x > 40:
            _x = 3
            _y_mod += 12

        _total_money += squad_member['pay']

    #for y in range(12, 14):
    #for x in range(SIDEBAR_WIDTH + 10, constants.WINDOW_WIDTH - 14):
    display.write_string('text',
                         SIDEBAR_WIDTH + 10,
                         12,
                         'Operation',
                         fore_color=(255, 255, 255))
    display.write_string('text',
                         SIDEBAR_WIDTH + 10,
                         13,
                         'Dark Wing',
                         fore_color=(255, 255, 255))

    for y in range(20, 28):
        for x in range(SIDEBAR_WIDTH + 10, constants.WINDOW_WIDTH - 14):
            display.write_char('text', x, y, '#', fore_color=(255, 255, 255))

    display.write_string('text',
                         SIDEBAR_WIDTH + 5,
                         29,
                         'No contact outside the town.',
                         fore_color=(255, 255, 255))

    _i = 0

    for feat in FEATS:
        display.write_string('text',
                             3,
                             _y + 5 + _i,
                             feat[0][0],
                             fore_color=feat[0][1])
        display.write_string('text',
                             3 + len(feat[0][0]),
                             _y + 5 + _i,
                             '- ' + feat[1],
                             fore_color=(255, 255, 255))

        _i += 1

    display.write_string('text',
                         3,
                         constants.WINDOW_HEIGHT - 4,
                         '<Space>',
                         fore_color=(255, 255, 255))
    display.write_string('text',
                         10,
                         constants.WINDOW_HEIGHT - 4,
                         ' - Reroll',
                         fore_color=(200, 200, 200))

    display.write_string('text',
                         3,
                         constants.WINDOW_HEIGHT - 5,
                         '<Enter>',
                         fore_color=(255, 255, 255))
    display.write_string('text',
                         10,
                         constants.WINDOW_HEIGHT - 5,
                         ' - Accept',
                         fore_color=(200, 200, 200))

    display.write_string('text', 3, constants.WINDOW_HEIGHT - 2,
                         'Total Cost: ')
    display.write_string('text',
                         15,
                         constants.WINDOW_HEIGHT - 2,
                         '$%.2f' % _total_money,
                         fore_color=(0, 200, 0),
                         back_color=(0, 40, 0))

    display.blit_surface_viewport('background', 0, 0, constants.WINDOW_WIDTH,
                                  constants.WINDOW_HEIGHT)
    display.blit_surface('text')
예제 #7
0
def draw():
	global MOVIE_TIME, MOVIE_TIME_MAX

	if settings.OBSERVER_MODE:
		_draw_life = entities.get_entity_group('life')
		_draw_items = entities.get_entity_group('items')
	else:
		_draw_life = set()
		_draw_items = set()
		
		for squad_id in entities.get_entity_group('squads'):
			_squad = entities.get_entity(squad_id)
			
			if not _squad['faction'] == 'Rogues':
				continue
			
			for member_id in _squad['members']:
				_member = entities.get_entity(member_id)
				_draw_life.add(member_id)
				_draw_life.update([i for i in _member['ai']['life_memory'] if _member['ai']['life_memory'][i]['can_see'] and i in entities.ENTITIES])

		_draw_life = list(_draw_life)

	for entity_id in _draw_life:
		entities.trigger_event(entities.get_entity(entity_id), 'draw', x_mod=camera.X, y_mod=camera.Y)

	for entity_id in entities.get_entity_group('nodes'):
		entities.trigger_event(entities.get_entity(entity_id), 'draw', x_mod=camera.X, y_mod=camera.Y)

	if settings.SHOW_NODE_GRID:
		for entity_id in zones.get_active_node_grid().values():
			entities.trigger_event(entities.get_entity(entity_id), 'draw', x_mod=camera.X, y_mod=camera.Y)

	for entity_id in entities.get_entity_groups(['ui_effects', 'ui_effects_freetick']):
		entities.trigger_event(entities.get_entity(entity_id), 'draw')

	for entity_id in entities.get_entity_groups(['effects', 'effects_freetick']):
		entities.trigger_event(entities.get_entity(entity_id), 'draw', x_mod=camera.X, y_mod=camera.Y)

	for entity_id in entities.get_entity_group('contexts'):
		entities.trigger_event(entities.get_entity(entity_id), 'draw', x_mod=camera.X, y_mod=camera.Y)

	for entity_id in _draw_items:
		if not entity_id in entities.ENTITIES:
			continue

		_entity = entities.get_entity(entity_id)

		if _entity['stats']['owner']:
			continue

		entities.trigger_event(entities.get_entity(entity_id), 'draw', x_mod=camera.X, y_mod=camera.Y)

	ui_draw.draw_status_bar(planning=settings.TICK_MODE == 'strategy',
	                        executing=not settings.TICK_MODE == 'strategy',
	                        execute_speed=settings.PLAN_TICK_RATE_STRING,
	                        selecting=nodes.SELECTING_TARGET_CALLBACK)

	#if settings.TICK_MODE == 'strategy':
	#	ui_draw.draw_item_labels()
	
	if '--labels' in sys.argv:
		ui_draw.draw_life_labels()
	
	ui_draw.draw_long_range_life()
	ui_draw.draw_life_memory()
	ui_draw.draw_walk_path()
	#ui_draw.draw_mission_details()
	ui_draw.draw_turn_bar()

	if '--fps' in sys.argv:
		ui_draw.draw_fps()

	events.trigger_event('post_process')
	
	#display.reset_surface_shaders('tiles')
	
	#_zone = zones.ZONES[zones.ACTIVE_ZONE]	
	#for shader in _zone['shaders']:
	#	display.apply_surface_shader('tiles', shader, constants.MAP_VIEW_WIDTH, constants.MAP_VIEW_HEIGHT)
	
	if ui_director.HAS_FOCUS:
		ui_director.draw()
	
	display.blit_surface('effects')
	display.blit_surface('nodes')
	display.blit_surface('items')
	display.blit_surface('life')
	display.blit_surface('ui')
	display.blit_surface('ui_menus')
	display.blit_surface('ui_dialogs')

	if ui_panel.ACTIVE_MENU:
		display.blit_surface_viewport('ui_inventory', 0, 0, 35, constants.MAP_VIEW_HEIGHT, dx=constants.MAP_VIEW_WIDTH-35)

	if settings.SHOW_NODE_GRID:
		display.blit_surface('node_grid')

	events.trigger_event('draw')

	if '--record' in sys.argv:
		MOVIE_TIME += 1
	
		if MOVIE_TIME == MOVIE_TIME_MAX:
			display.screenshot('screenshot-%s.bmp' % time.time())
			
			MOVIE_TIME = 0
예제 #8
0
def draw():
    # Title
    _i = 0
    _dst_x = 9999

    for c in TEXT[0]:
        _alpha = numbers.clip(FADE_ALPHA * numbers.clip(16 - _i, 7, 16) / SPARK_SIZE, 0, 1)
        _dx = ((constants.WINDOW_WIDTH / 2) - (len("".join(TEXT)) / 2)) + _i

        if _dx < _dst_x:
            _dst_x = _dx

    _batch = display.create_batch(len(TEXT[0]), 1, _dst_x, 12)

    _i = 0
    for c in TEXT[0]:
        _alpha = numbers.clip(FADE_ALPHA * numbers.clip(16 - _i, 7, 16) / SPARK_SIZE, 0, 1)

        display.write_char_batch(
            _batch,
            ((constants.WINDOW_WIDTH / 2) - (len("".join(TEXT)) / 2)) + _i,
            12,
            c,
            fore_color=(200 * _alpha, 200 * _alpha, 200 * _alpha),
        )

        _i += 1

    display.draw_batch(_batch, "text")

    _i = 0
    for c in TEXT[1]:
        _alpha = numbers.clip(FADE_ALPHA * numbers.clip(18 - _i, 0, 18) / SPARK_SIZE, 0, 1)
        display.write_char(
            "text",
            ((constants.WINDOW_WIDTH / 2) - (len(TEXT[1]) / 2)) + _i,
            13,
            c.upper(),
            fore_color=(200 * _alpha, 60 * _alpha, 80 * _alpha),
        )

        _i += 1

        # Menu
    _i = 0
    for item in [("Continue", False), ("New", True), ("Quit", True)]:
        if item[1]:
            _fore_color = (200 * FADE_ALPHA, 200 * FADE_ALPHA, 200 * FADE_ALPHA)

        else:
            _fore_color = (100 * FADE_ALPHA, 100 * FADE_ALPHA, 100 * FADE_ALPHA)

        if MENU_ITEM_SELECTED == _i:
            _text = "> %s <" % item[0]

        else:
            _text = item[0]

        display.write_string(
            "text", (constants.WINDOW_WIDTH / 2) - (len(_text) / 2), 18 + _i, _text, fore_color=_fore_color
        )

        _i += 1

    paint_map()

    display.blit_surface_viewport("background", 0, 0, constants.MAP_VIEW_WIDTH, constants.MAP_VIEW_HEIGHT)
    display.blit_surface("text")
예제 #9
0
def draw():
	_x = 3
	_y_mod = 0
	_total_money = 0
	
	display.write_string('text', (SIDEBAR_WIDTH / 2) - (len(TITLE) / 2), 3, TITLE, fore_color=(255, 255, 255))
	
	for squad_member in HIRED_MEMBERS:
		_y = 10 + _y_mod
		_name = squad_member['name']
		
		display.write_string('text', _x, _y - 2, _name, fore_color=(255, 255, 255))
		display.write_string('text', _x, _y - 1, squad_member['skill_focus'].title() + ' ' * (len(_name) - len(squad_member['skill_focus'])), fore_color=(180, 180, 180), back_color=(40, 40, 40))
		
		for stat in SKILL_NAMES:
			_r = int(round(220 * (1 - (squad_member[stat] / 75.0))))
			_g = int(round(250 * (squad_member[stat] / 75.0)))
			
			display.write_string('text', _x, _y + 1, '%s' % stat.upper())
			display.write_string('text', _x + len(stat), _y + 1, '.' * (15 - len(stat)), fore_color=(80, 80, 80))
			display.write_string('text', _x + 15, _y + 1, '%s' % squad_member[stat], fore_color=(_r, _g, 0))
			
			_y += 1
	
		display.write_string('text', _x, _y + 2, 'Pay: ')
		display.write_string('text', _x + 6, _y + 2, '$%.2f' % squad_member['pay'], fore_color=(0, 200, 0), back_color=(0, 40, 0))
		display.write_string('text', _x + 6 + len('$%.2f' % squad_member['pay']) + 0, _y + 2, '/week', fore_color=(150, 150, 150), back_color=(0, 0, 0))
		
		_x += 20
		
		if _x > 40:
			_x = 3
			_y_mod += 12
		
		_total_money += squad_member['pay']
	
	#for y in range(12, 14):
		#for x in range(SIDEBAR_WIDTH + 10, constants.WINDOW_WIDTH - 14):
	display.write_string('text', SIDEBAR_WIDTH + 10, 12, 'Operation', fore_color=(255, 255, 255))
	display.write_string('text', SIDEBAR_WIDTH + 10, 13, 'Dark Wing', fore_color=(255, 255, 255))
	
	for y in range(20, 28):
		for x in range(SIDEBAR_WIDTH + 10, constants.WINDOW_WIDTH - 14):
			display.write_char('text', x, y, '#', fore_color=(255, 255, 255))
	
	display.write_string('text', SIDEBAR_WIDTH + 5, 29, 'No contact outside the town.', fore_color=(255, 255, 255))
	
	_i = 0
	
	for feat in FEATS:
		display.write_string('text', 3, _y + 5 + _i, feat[0][0], fore_color=feat[0][1])
		display.write_string('text', 3 + len(feat[0][0]), _y + 5 + _i, '- ' + feat[1], fore_color=(255, 255, 255))
		
		_i += 1
	
	display.write_string('text', 3, constants.WINDOW_HEIGHT - 4, '<Space>', fore_color=(255, 255, 255))
	display.write_string('text', 10, constants.WINDOW_HEIGHT - 4, ' - Reroll', fore_color=(200, 200, 200))
	
	display.write_string('text', 3, constants.WINDOW_HEIGHT - 5, '<Enter>', fore_color=(255, 255, 255))
	display.write_string('text', 10, constants.WINDOW_HEIGHT - 5, ' - Accept', fore_color=(200, 200, 200))
	
	display.write_string('text', 3, constants.WINDOW_HEIGHT - 2, 'Total Cost: ')
	display.write_string('text', 15, constants.WINDOW_HEIGHT - 2, '$%.2f' % _total_money, fore_color=(0, 200, 0), back_color=(0, 40, 0))
	
	display.blit_surface_viewport('background', 0, 0, constants.WINDOW_WIDTH, constants.WINDOW_HEIGHT)
	display.blit_surface('text')
예제 #10
0
def draw():
    global MOVIE_TIME, MOVIE_TIME_MAX

    if settings.OBSERVER_MODE:
        _draw_life = entities.get_entity_group('life')
        _draw_items = entities.get_entity_group('items')
    else:
        _draw_life = set()
        _draw_items = set()

        for squad_id in entities.get_entity_group('squads'):
            _squad = entities.get_entity(squad_id)

            if not _squad['faction'] == 'Rogues':
                continue

            for member_id in _squad['members']:
                _member = entities.get_entity(member_id)
                _draw_life.add(member_id)
                _draw_life.update([
                    i for i in _member['ai']['life_memory']
                    if _member['ai']['life_memory'][i]['can_see']
                    and i in entities.ENTITIES
                ])

        _draw_life = list(_draw_life)

    for entity_id in _draw_life:
        entities.trigger_event(entities.get_entity(entity_id),
                               'draw',
                               x_mod=camera.X,
                               y_mod=camera.Y)

    for entity_id in entities.get_entity_group('nodes'):
        entities.trigger_event(entities.get_entity(entity_id),
                               'draw',
                               x_mod=camera.X,
                               y_mod=camera.Y)

    if settings.SHOW_NODE_GRID:
        for entity_id in zones.get_active_node_grid().values():
            entities.trigger_event(entities.get_entity(entity_id),
                                   'draw',
                                   x_mod=camera.X,
                                   y_mod=camera.Y)

    for entity_id in entities.get_entity_groups(
        ['ui_effects', 'ui_effects_freetick']):
        entities.trigger_event(entities.get_entity(entity_id), 'draw')

    for entity_id in entities.get_entity_groups(
        ['effects', 'effects_freetick']):
        entities.trigger_event(entities.get_entity(entity_id),
                               'draw',
                               x_mod=camera.X,
                               y_mod=camera.Y)

    for entity_id in entities.get_entity_group('contexts'):
        entities.trigger_event(entities.get_entity(entity_id),
                               'draw',
                               x_mod=camera.X,
                               y_mod=camera.Y)

    for entity_id in _draw_items:
        if not entity_id in entities.ENTITIES:
            continue

        _entity = entities.get_entity(entity_id)

        if _entity['stats']['owner']:
            continue

        entities.trigger_event(entities.get_entity(entity_id),
                               'draw',
                               x_mod=camera.X,
                               y_mod=camera.Y)

    ui_draw.draw_status_bar(planning=settings.TICK_MODE == 'strategy',
                            executing=not settings.TICK_MODE == 'strategy',
                            execute_speed=settings.PLAN_TICK_RATE_STRING,
                            selecting=nodes.SELECTING_TARGET_CALLBACK)

    #if settings.TICK_MODE == 'strategy':
    #	ui_draw.draw_item_labels()

    if '--labels' in sys.argv:
        ui_draw.draw_life_labels()

    ui_draw.draw_long_range_life()
    ui_draw.draw_life_memory()
    ui_draw.draw_walk_path()
    #ui_draw.draw_mission_details()
    ui_draw.draw_turn_bar()

    if '--fps' in sys.argv:
        ui_draw.draw_fps()

    events.trigger_event('post_process')

    #display.reset_surface_shaders('tiles')

    #_zone = zones.ZONES[zones.ACTIVE_ZONE]
    #for shader in _zone['shaders']:
    #	display.apply_surface_shader('tiles', shader, constants.MAP_VIEW_WIDTH, constants.MAP_VIEW_HEIGHT)

    if ui_director.HAS_FOCUS:
        ui_director.draw()

    display.blit_surface('effects')
    display.blit_surface('nodes')
    display.blit_surface('items')
    display.blit_surface('life')
    display.blit_surface('ui')
    display.blit_surface('ui_menus')
    display.blit_surface('ui_dialogs')

    if ui_panel.ACTIVE_MENU:
        display.blit_surface_viewport('ui_inventory',
                                      0,
                                      0,
                                      35,
                                      constants.MAP_VIEW_HEIGHT,
                                      dx=constants.MAP_VIEW_WIDTH - 35)

    if settings.SHOW_NODE_GRID:
        display.blit_surface('node_grid')

    events.trigger_event('draw')

    if '--record' in sys.argv:
        MOVIE_TIME += 1

        if MOVIE_TIME == MOVIE_TIME_MAX:
            display.screenshot('screenshot-%s.bmp' % time.time())

            MOVIE_TIME = 0