예제 #1
0
파일: dialog.py 프로젝트: athros/Reactor-3
def draw_dialog(dialog_id):
	_dialog = get_dialog(dialog_id)
	_last_message = get_last_message(dialog_id)
	_x = numbers.clip(MAP_WINDOW_SIZE[0]/2-len(_last_message['text'])/2, 3, 100)
	_y = 10
	_line_of_sight = drawing.diag_line(LIFE[_dialog['started_by']]['pos'], LIFE[_dialog['target']]['pos'])
	
	locks.unlock('camera_free')
	
	if len(_line_of_sight)<=1:
		_center_pos = LIFE[_dialog['started_by']]['pos']
	else:
		_center_pos = list(_line_of_sight[len(_line_of_sight)/2])
		_center_pos.append(2)
	
	if SETTINGS['controlling'] == _dialog['started_by']:
		_target = _dialog['target']
	else:
		_target = _dialog['started_by']
	
	_target_portrait = lfe.draw_life_icon(LIFE[_target])
	_lines = []
	                                   
	gfx.camera_track(_center_pos)
	gfx.blit_string(_x-2, _y-2, ' '.join(LIFE[_target]['name']), 'overlay', fore_color=_target_portrait[1])
	gfx.blit_string(_x-2, _y, _target_portrait[0], 'overlay', fore_color=_target_portrait[1])#, back_color=tcod.darkest_gray)
	
	_text = _last_message['text']
	_y_mod = 0
	while _text:
		_x = MAP_WINDOW_SIZE[0]/2-len(_text[:MAP_WINDOW_SIZE[0]-4])/2
		
		gfx.blit_string(_x, _y+_y_mod, _text[:MAP_WINDOW_SIZE[0]-4], 'overlay')
		_text = _text[MAP_WINDOW_SIZE[0]-4:]
		_y_mod += 1
	
	for choice in _dialog['choices']:
		_text = choice['text'][choice['text'].index('\"')+1:choice['text'].index('\"')-1]
		
		if not _text.startswith('>'):
			_text = '> '+_text
		
		_n_x = MAP_WINDOW_SIZE[0]/2-len(_text)/2
		
		if _n_x < _x:
			_x = _n_x
	
	for choice in _dialog['choices']:
		_text = choice['text'][choice['text'].index('\"')+1:choice['text'].index('\"')-1]
		
		if _dialog['cursor_index'] == _dialog['choices'].index(choice):
			_text = '> '+_text
		
		_lines.append(_text)
	
	for line in _lines:
		gfx.blit_string(_x, _y+3, line, 'overlay')#, back_color=tcod.darkest_gray)
		_y += 2
예제 #2
0
def draw_event():
	_event = None
	
	for event in EVENTS:
		if not event['delay']:
			_event = event
			break
	
	if not _event:
		return False
	
	locks.unlock('camera_free')
	gfx.camera_track(_event['pos'])
	
	if len(event['text'])>=MAP_WINDOW_SIZE[0]-1:
		_lines = list(_event['text'].partition(','))
		
		if not len(_lines[1]):
			_lines = list(_event['text'].partition('.'))
		
		if len(_lines[1]):
			_lines.pop(1)
		else:
			lines = ['????']
		
	else:
		_lines = [_event['text']]
	
	for line in _lines:
		if len(line)>=MAP_WINDOW_SIZE[0]-1:
			_lines = ['The most annoying error.']
			break	
	
	_i = 0
	for line in _lines:
		_half = len(line)/2
		_x = bad_numbers.clip((MAP_WINDOW_SIZE[0]/2)-_half, 0, MAP_WINDOW_SIZE[0]-len(line)-1)
		
		gfx.blit_string(_x,
			10+_i,
			line,
		    'overlay')
		
		_i += 1
	
	return True
예제 #3
0
def draw_dialog(dialog_id):
    _dialog = get_dialog(dialog_id)
    _last_message = get_last_message(dialog_id)
    _x = bad_numbers.clip(
        MAP_WINDOW_SIZE[0] / 2 - len(_last_message['text']) / 2, 3, 100)
    _y = 10
    _line_of_sight = drawing.diag_line(LIFE[_dialog['started_by']]['pos'],
                                       LIFE[_dialog['target']]['pos'])

    locks.unlock('camera_free')

    if len(_line_of_sight) <= 1:
        _center_pos = LIFE[_dialog['started_by']]['pos']
    else:
        _center_pos = list(_line_of_sight[len(_line_of_sight) / 2])
        _center_pos.append(2)

    if SETTINGS['controlling'] == _dialog['started_by']:
        _target = _dialog['target']
    else:
        _target = _dialog['started_by']

    _target_portrait = lfe.draw_life_icon(LIFE[_target])
    _lines = []

    gfx.camera_track(_center_pos)
    gfx.blit_string(_x - 2,
                    _y - 2,
                    ' '.join(LIFE[_target]['name']),
                    'overlay',
                    fore_color=_target_portrait[1])
    gfx.blit_string(
        _x - 2,
        _y,
        _target_portrait[0],
        'overlay',
        fore_color=_target_portrait[1])  #, back_color=tcod.darkest_gray)

    _text = _last_message['text']
    _y_mod = 0
    while _text:
        _x = MAP_WINDOW_SIZE[0] / 2 - len(_text[:MAP_WINDOW_SIZE[0] - 4]) / 2

        gfx.blit_string(_x, _y + _y_mod, _text[:MAP_WINDOW_SIZE[0] - 4],
                        'overlay')
        _text = _text[MAP_WINDOW_SIZE[0] - 4:]
        _y_mod += 1

    for choice in _dialog['choices']:
        _text = choice['text'][choice['text'].index('\"') +
                               1:choice['text'].index('\"') - 1]

        if not _text.startswith('>'):
            _text = '> ' + _text

        _n_x = MAP_WINDOW_SIZE[0] / 2 - len(_text) / 2

        if _n_x < _x:
            _x = _n_x

    for choice in _dialog['choices']:
        _text = choice['text'][choice['text'].index('\"') +
                               1:choice['text'].index('\"') - 1]

        if _dialog['cursor_index'] == _dialog['choices'].index(choice):
            _text = '> ' + _text

        _lines.append(_text)

    for line in _lines:
        gfx.blit_string(_x, _y + 3, line,
                        'overlay')  #, back_color=tcod.darkest_gray)
        _y += 2