NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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