-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathui_queue.lua
More file actions
82 lines (66 loc) · 1.47 KB
/
ui_queue.lua
File metadata and controls
82 lines (66 loc) · 1.47 KB
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
--[[
UI队列
--]]
ui = ui or {};
local QueueNode = class("QueueNode");
function QueueNode:ctor(func)
self.isCompleted = false;
self.isRunnging = false;
end
function QueueNode:run()
end
function QueueNode:completed()
self.isCompleted = true;
end
--[[
Queue
--]]
local Queue = class("UIQueue");
function Queue:ctor()
self.queue = {};
self.isStartRun = false;
coli.eventManager.addObserver(self, coli.Events.E_Queue_Finish_One);
end
function Queue:clear()
-- coli.eventManager.removeObserver(self, coli.Events.E_Queue_Finish_One);
self.queue = {};
self.isStartRun = false;
end
function Queue:handleEvent(event, params)
if event == coli.Events.E_Queue_Finish_One then
local top = self:front();
if top then
top:completed();
end
end
end
function Queue:add(node)
table.insert(self.queue, node);
end
function Queue:front()
return self.queue[1];
end
function Queue:pop()
table.remove(self.queue, 1);
end
function Queue:isEmpty()
return #self.queue <= 0;
end
function Queue:start()
self.isStartRun = true;
end
function Queue:run()
if self:isEmpty() or not self.isStartRun then
return;
end
local top = self:front()
if top then
if top.isCompleted then
self:pop();
else
top:run();
end
end
end
ui.Queue = Queue;
ui.QueueNode = QueueNode;