Имитация СМС для нового GUI.

Файл для скачивания: https://yadi.sk/d/W_o_7cPj3aAPPW

# забрасываем sms.rpy и 7dots.rpy в папку game вашего проекта и пишем смс-ки # теги для смс: # "{#l=Привет!}" - для смс от левого собеседника # "{#r=И тебе привет!}" - для смс от правого собеседника # "{#c=Лосяш покинул беседу.}" - для системных смс по центру # "{#on}" или $ sms_on() - показать окно с смс # "{#off}" или $ sms_off() - спрятать окно с смс # "{#cls}" или $ sms_cls() - очистить окно с смс # в одной строке может быть несколько разных тегов и обычный текст # "<>" - вот так добавлять картинки # историю сообщений можно просмотреть, листая экран мышкой или колесиком # так же реализовано плавное исчезновение/появление текстбокса с учетои смс init python: # звуки смс sms_c = "sms_c" sms_l = "sms_l" sms_r = "sms_r" # длительность вибрации (если устройство ее поддерживает) sms_vibrate = .5 # положение окна с смс sms_xalign, sms_yalign = .75, .25 # размеры окна с смс (экран сотового) sms_width, sms_height = 450, 600 # размеры одного смс sms_w, sms_h = int(sms_width * .75), int(config.screen_height * .05) # размеры заголовка с именем собеседника sms_caption_height = 100 sms_caption_width = sms_width # имя собеседника sms_name = "Неизвестный" # отступы для пузырьков смс sms_xpadding = 32 sms_ypadding = 16 # внешние sms_border = 16 # для хранения текста всех смс sms_all = [] # теги для смс - в центре, слева, справа sms_tags = ["c", "l", "r"] # все тэги для смс, включая управление окном sms_all_tags = sms_tags + ["on", "off", "cls"] # получить текст и стиль смс из строки типа "r=Привет!" def get_sms_text_style(txt): smsstyle, smstext = get_key_val(txt) if smsstyle in sms_tags: return "sms_" + smsstyle, smstext return None, txt # изъять текст смс из текстбокса и закинуть в экран смс def sms(text): global sms_all, sms_last_what # получить теги в виде строк tags = get_tags_str(text) # перебрать строки с тегами for i in tags: # разобрать строку на части, разделенные знаком =равно= key, val = get_key_val(i) # очистка окна смс if key == "cls": sms_cls() # показать окно смс if key == "on": sms_on() # спрятать окно смс if key == "off": sms_off() # новое сообщение в окне смс if key in sms_tags: if val is None: val = "" # меняем смайлы на картинки val = val.replace("<<", "{image=") val = val.replace(">>", "}") # добавляем на экран смс sms_all.append(key + "=" + val) renpy.restart_interaction() # звук сообщения sms_sound = "sms_" + key if sms_sound: splay(sms_sound) if sms_vibrate > 0: renpy.vibrate(sms_vibrate) # из функции в action SMS = renpy.curry(sms) # показать экран смс def sms_on(effect=dissolve): renpy.show_screen('sms_screen', _layer="master") renpy.transition(effect) # спрятать экран смс def sms_off(effect=dissolve): renpy.hide_screen('sms_screen', layer="master") renpy.transition(effect) # очистить экран смс def sms_cls(effect=dissolve): global sms_all sms_all = [] sms_on(effect=effect) # для хранения последнего видимого в текстбоксе текста sms_last_what = None # листать вниз yadjValue = float("inf") yadj = ui.adjustment() init: # прозрачность transform transparent(alpha=.0): alpha alpha # стиль для фрейма с смсками style sms_frame is frame: # изображение пустого экрана background "smsbg" yfill True xminimum sms_width xmaximum sms_width yminimum sms_height ymaximum sms_height xmargin 0 ymargin 0 xpadding 0 ypadding 0 # стиль системных смс по центру style sms_c is button: background "#0000" xalign .5 xmargin sms_border ymargin sms_border / 2 xpadding 0 ypadding sms_ypadding # цвет системных сообщений $ style.sms_c_text.color = "#0008" # стиль смс слева style sms_l is sms_c: xpadding sms_xpadding ypadding sms_ypadding xmaximum sms_w yminimum sms_h xalign .0 background Frame("smsleft", 16, 16) # стиль смс справа style sms_r is sms_l: xalign 1.0 background Frame("smsright", 16, 16) # стиль окошка с именем собеседника style sms_caption is button: background Frame("smstop", 0, 0) xfill True xminimum sms_caption_width yminimum sms_caption_height # стиль окошка с именем собеседника style sms_bottom is button: background Frame("smsbottom", 0, 0) xminimum sms_caption_width yminimum sms_caption_height / 2 # стиль текста с именем собеседника style sms_caption_text is button_text: color "#fff" font "fonts/robotoblack.ttf" align (.4, .75) # эффект для появления/исчезновения текстбокса transform inout(t=.25): on show: alpha .0 linear t alpha 1.0 on hide: alpha 1.0 linear t alpha .0 # проявить transform inin(t=.25): alpha .0 linear t alpha 1.0 # растворить transform outout(t=.25): alpha 1.0 linear t alpha .0 # экран с смсками screen sms_screen: python: yadj.value = yadjValue vbox: align(sms_xalign, sms_yalign) frame: style "sms_frame" vbox: # имя собеседника textbutton sms_name style "sms_caption" align(.5, .0) # контейнер для пузырьков с сообщениями frame: xmargin 0 ymargin 0 xpadding 0 ypadding 0 background None viewport: id "sms_vp" xinitial 1.0 yfill False mousewheel True draggable False side_xfill True transclude yadjustment yadj vbox: xfill True yanchor 1.0 yalign 1.0 for i in sms_all: # пузырьки с сообщениями $ sms_style, sms_text = get_sms_text_style(i) textbutton sms_text: if sms_style: style sms_style action [] textbutton " " style "sms_bottom" action [] yalign 1.0 # переписываем экран say screen say(who, what): # обработка тегов смс on "show" action SMS(what) on "hide" action SetVariable("sms_last_what", del_tags(what)) style_prefix "say" window: # чтобы пустое окно не маячило if not del_tags(what): # а плавно исчезало if sms_last_what: at outout() else: # на старте было вообще невидимым at transparent() else: if not sms_last_what: # плавно появлялось, если появился видимый текст at inin() else: # чтобы текстовое окно плавно появлялось и исчезало в остальных случаях at inout() id "window" if who is not None: window: id "namebox" style "namebox" text who id "who" text what id "what" ## Если есть боковое изображение ("голова"), показывает её поверх текста. ## По стандарту не показывается на варианте для мобильных устройств — мало ## места. if not renpy.variant("small"): add SideImage() xalign 0.0 yalign 1.0
RSS
Нет комментариев. Ваш будет первым!
Загрузка...

Понравилась статья?

Поддержи нас, чтобы мы создавали больше полезных ресурсов!

Случайная статья