代码初始化
This commit is contained in:
1 parent
8160eca074
commit
dffebce01d
43 files changed
+6383
No files matched your search
+117
@@ -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
|
||||
+49
@@ -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
|
||||
+77
@@ -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
|
||||
# 初始化
|
||||
Reference in new issue
Block a user