-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathToken.lua
More file actions
54 lines (43 loc) · 998 Bytes
/
Token.lua
File metadata and controls
54 lines (43 loc) · 998 Bytes
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
--------------------------------------------------------------------
--- Token
--------------------------------------------------------------------
local Token = {
x = 0,
y = 0,
owner = "blue",
isHorizontal = true,
isMaster = false,
isSelected = false,
board = nil,
observers = nil
}
function Token:new(o)
local newObj = o or {}
setmetatable( newObj, self )
self.__index = self
newObj.observers = {}
local proxy = {}
setmetatable( proxy, {
__index = function (t,k)
return newObj[k]
end,
__newindex = function ( t, k, v )
local oldValue = newObj[k]
newObj[k] = v
newObj:onValueChanged(k, oldValue, v)
end
} )
return proxy
end
function Token:onValueChanged( key, oldValue, newValue )
for _, observer in ipairs(self.observers) do
observer:onValueChanged(key, oldValue, newValue)
end
end
function Token:registerObserver(observer)
table.insert( self.observers, observer )
end
function Token:move(x, y)
board:moveToken(self, x, y)
end
return Token