animation.py (1402B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\heronotification\animation.py 2 import datetime 3 import random 4 import math 5 import eveui 6 import gametime 7 import uthread2 8 from carbonui import uiconst 9 from carbonui.uianimations import animations 10 11 def garble_reveal_label(label, text, garble = '+/\\|%#-@!?<>(){}', step_duration = datetime.timedelta(milliseconds=50), time_offset = None, opacity = 1.0): 12 label.text = text 13 final_width = label.width 14 if time_offset is not None: 15 uthread2.sleep(time_offset.total_seconds()) 16 17 def set_final_width(): 18 label.width = final_width 19 20 animations.MorphScalar(label, 'width', startVal=final_width * 0.2, endVal=final_width, duration=len(text) * step_duration.total_seconds(), curveType=uiconst.ANIM_LINEAR, callback=set_final_width) 21 animations.FadeTo(label, startVal=label.opacity, endVal=opacity, duration=0.3) 22 start = gametime.now() 23 last_i = 0 24 while True: 25 now = gametime.now() 26 i = int(math.floor((now - start).total_seconds() / step_duration.total_seconds())) 27 if i >= len(text): 28 break 29 if i > last_i: 30 new_text = text[:i] 31 if text[i] != ' ': 32 new_text += random.choice(garble) 33 label.text = new_text 34 last_i = i 35 eveui.wait_for_next_frame() 36 37 label.text = text