代码初始化

This commit is contained in:
Giao committed 2026-03-21 17:10:22 +08:00
1 parent 8160eca074
commit dffebce01d
43 files changed
+6383

No files matched your search

@@ -0,0 +1,117 @@
# coding=utf-8
from Grapher import *
class SizeAnim(MovableUi):
def __init__(self, base_ui_control, time):
# type:(BaseUIControl,float)->None
self.initialSize = base_ui_control.GetSize()
self.totalTime = float(time)
self.backFunc = lambda *args: None
self.args = []
self.fromSize = (0, 0)
self.fatherSize = (0, 0)
self.fromPos = (0, 0)
self.speed = 0
super(SizeAnim, self).__init__(base_ui_control)
def ResetInitialSize(self, initialSize=None):
"""
重置原位置
:return:
"""
self.initialSize = self.baseUiControl.GetSize() if initialSize is None else initialSize
def Reset(self):
super(SizeAnim, self).Reset()
self.baseUiControl.SetSize(self.initialSize)
self.backFunc = lambda: None
self.args = tuple()
def Finish(self):
super(SizeAnim, self).Finish()
self.backFunc(*self.args)
self.Reset()
def StartAnim(self, fromSize, fatherSize, fromPos, backFunc, *backFuncArgs):
self.fromSize = fromSize
self.fatherSize = fatherSize
self.fromPos = fromPos
self.speedX = (fromSize[0] - self.initialSize[0]) / self.totalTime
self.speedY = (fromSize[1] - self.initialSize[1]) / self.totalTime
self.args = backFuncArgs
self.backFunc = backFunc
super(SizeAnim, self).Start()
def Refresh(self):
if self and self.state != ControlState.Run:
return
runTime = self.GetWorkTime()
if runTime < self.totalTime:
size = (
self.fromSize[0] - self.speedX * runTime, self.fromSize[1] - self.speedY * runTime
)
self.baseUiControl.SetSize(size)
position = ((self.fatherSize[0] - size[0]) / 2.0, (self.fatherSize[1] - size[1]) / 2.0)
self.baseUiControl.SetPosition(position)
else:
self.baseUiControl.SetPosition(self.fromPos)
self.baseUiControl.SetSize(self.initialSize)
self.Finish()
return runTime
class MoveToPos(MovableUi):
def __init__(self, base_ui_control, time):
# type:(BaseUIControl,float)->None
self.initialPos = base_ui_control.GetPosition()
self.totalTime = float(time)
self.speedX = 0.0
self.speedY = 0.0
self.destinationPos = (0, 0)
self.backFunc = lambda *args: None
self.args = []
super(MoveToPos, self).__init__(base_ui_control)
def ResetInitialPos(self, initialPos=None):
"""
重置原位置
:return:
"""
self.initialPos = self.baseUiControl.GetPosition() if initialPos is None else initialPos
def Reset(self):
super(MoveToPos, self).Reset()
self.baseUiControl.SetPosition(self.initialPos)
self.backFunc = lambda: None
self.args = tuple()
def Finish(self):
super(MoveToPos, self).Finish()
self.backFunc(*self.args)
self.Reset()
def StartMove(self, destinationPos, backFunc, *backFuncArgs):
self.destinationPos = destinationPos
self.args = backFuncArgs
self.backFunc = backFunc
dx, dy = destinationPos[0] - self.initialPos[0], destinationPos[1] - self.initialPos[1]
self.speedX = dx / self.totalTime
self.speedY = dy / self.totalTime
super(MoveToPos, self).Start()
def Refresh(self):
if self and self.state != ControlState.Run:
return
runTime = self.GetWorkTime()
if runTime < self.totalTime:
self.baseUiControl.SetPosition((
self.speedX * runTime + self.initialPos[0], self.speedY * runTime + self.initialPos[1]
))
else:
self.baseUiControl.SetPosition((
self.destinationPos[0] + self.initialPos[0], self.destinationPos[1] + self.initialPos[1]
))
self.Finish()
return runTime
@@ -0,0 +1,49 @@
# coding=utf-8
from __init__ import *
class MovableUi(Base):
"""
可控的移动性Ui
以当前位置为原点,位置随时间变化
"""
def __init__(self, base_ui_control, moving_route_x=lambda t: 0, moving_route_y=lambda t: 0):
# type:(BaseUIControl,Any,Any)->None
"""
@param base_ui_control: ui控件
@param moving_route_x: x轴的运动路径
@param moving_route_y: y轴的运动路径
"""
self.baseUiControl = base_ui_control
self.movingRouteX = moving_route_x
self.movingRouteY = moving_route_y
self.initialPos = base_ui_control.GetPosition()
Base.__init__(self)
def ResetRouteX(self, routeX=lambda t: 0):
"""
设置为新的X轴运动函数
:param routeX: 函数, 传参运动时间
:return:
"""
self.Reset()
self.movingRouteX = routeX
def ResetRouteY(self, routeY=lambda t: 0):
"""
设置为新的Y轴运动函数
:param routeY: 函数, 传参运动时间
:return:
"""
self.Reset()
self.movingRouteY = routeY
def Refresh(self):
if self.state != ControlState.Run:
return
runTime = self.GetWorkTime()
self.baseUiControl.SetPosition((
self.movingRouteX(runTime) + self.initialPos[0], self.movingRouteY(runTime) + self.initialPos[1]
))
return runTime
@@ -0,0 +1,77 @@
# coding=utf-8
import datetime
try:
from mod.client.ui.controls.baseUIControl import *
from typing import *
except ImportError:
BaseUIControl = None
ImageUIControl = None
LabelUIControl = None
class ControlState(object):
Finish = 0
Run = 1
Suspend = 2
class Base(object):
state = ControlState.Finish
suspendTimePeriod = 0.0
runTime = datetime.datetime.now()
suspendTimePoint = runTime
def __init__(self):
self.runTime = datetime.datetime.now()
self.suspendTimePoint = self.runTime
self.suspendTimePeriod = 0.0
def Refresh(self):
"""
刷新,开始执行移动任务时需要刷新
:return:已执行任务的时间
"""
if not self.state == ControlState.Run:
return
now = (datetime.datetime.now() - self.runTime).total_seconds() - self.suspendTimePeriod
return now
def GetWorkTime(self):
"""
获取执行了多少时间
"""
return (datetime.datetime.now() - self.runTime).total_seconds() - self.suspendTimePeriod
def Suspend(self):
"""暂停任务.与完成不同的是,下一次开始时,继续执行暂停时的状态"""
self.state = ControlState.Suspend
self.suspendTimePoint = datetime.datetime.now()
def Reset(self):
"""重置已运作时间"""
self.runTime = datetime.datetime.now()
def GetState(self):
# type:()->str
"""
获取状态
"""
return self.state
def Start(self):
"""开始任务"""
if self.state == ControlState.Finish:
self.runTime = datetime.datetime.now()
self.state = ControlState.Run
elif self.state == ControlState.Suspend:
self.suspendTimePeriod += (datetime.datetime.now() - self.suspendTimePoint).total_seconds()
self.state = ControlState.Run
def Finish(self):
"""完成任务"""
self.runTime = datetime.datetime.now()
self.suspendTimePoint = self.runTime
self.suspendTimePeriod = 0.0
self.state = ControlState.Finish
# 初始化