blob: c3aec93f371f44c47db0e334eea3c4c89bbc7722 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
//
// Timer.cs
// Created by huailiang.peng on 2016/03/14 03:19:41
//
namespace LuaCore
{
public class Timer
{
//delegate
public delegate void OnTimeUpHandler(int timerSequence);
private OnTimeUpHandler m_timeUpHandler;
//循环次数( < 0 表示无限循环)
private int m_loop = 1;
//计时(ms)
private int m_totalTime;
private int m_currentTime;
//是否完成
private bool m_isFinished;
//是否处于运行状态
private bool m_isRunning;
//序列号
private int m_sequence;
//--------------------------------------
/// 构造函数
//--------------------------------------
public Timer(int time, int loop, OnTimeUpHandler timeUpHandler, int sequence)
{
if (loop == 0)
{
loop = -1;
}
m_totalTime = time;
m_loop = loop;
m_timeUpHandler = timeUpHandler;
m_sequence = sequence;
m_currentTime = 0;
m_isRunning = true;
m_isFinished = false;
}
//--------------------------------------
/// Update
/// @deltaTime
//--------------------------------------
public void Update(int deltaTime)
{
if (m_isFinished || !m_isRunning)
{
return;
}
if (m_loop == 0)
{
m_isFinished = true;
}
else
{
m_currentTime += deltaTime;
if (m_currentTime >= m_totalTime)
{
if (m_timeUpHandler != null)
{
m_timeUpHandler(m_sequence);
}
m_currentTime = 0;
m_loop--;
}
}
}
//--------------------------------------
/// 是否完成
//--------------------------------------
public bool IsFinished()
{
return m_isFinished;
}
public int CurrentTime
{
get { return m_currentTime; }
}
//--------------------------------------
/// 暂停
//--------------------------------------
public void Pause()
{
m_isRunning = false;
}
//--------------------------------------
/// 恢复
//--------------------------------------
public void Resume()
{
m_isRunning = true;
}
//--------------------------------------
/// 重置
//--------------------------------------
public void Reset()
{
m_currentTime = 0;
}
//--------------------------------------
/// 检查sequence是否匹配
//--------------------------------------
public bool IsSequenceMatched(int sequence)
{
return (m_sequence == sequence);
}
//--------------------------------------
/// 检查delegate是否匹配
//--------------------------------------
public bool IsDelegateMatched(OnTimeUpHandler timeUpHandler)
{
return (m_timeUpHandler == timeUpHandler);
}
}
}
|