-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdiscard_table.ttslua
59 lines (55 loc) · 1.78 KB
/
discard_table.ttslua
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
function onCollisionEnter(collision_info)
-- stolen from the button-visualizer.
-- consumes a collision-event and produces the guid of the colliding object.
-- collision_info table:
-- collision_object Object
-- contact_points Table {Vector, ...}
-- relative_velocity Vector
if collision_info.collision_object.tag == "Surface" then
return
end
-- if Global.call("should_ignore_collision_p", collision_info) then
-- return
-- end
return handle_collision_enter(collision_info)
end
function handle_collision_enter(collision_info)
-- -- handler
-- if Global.call("shouldIgnoreCollisionP", collision_info) then
-- return
-- end
local obj_GUID = collision_info.collision_object.getGUID()
local obj = getObjectFromGUID(obj_GUID)
return do_discards(obj)
end
function do_discards(obj)
-- consumes a card or a deck and destroys all the jokers it touches
local item_class = Global.call("get_quasi_type", obj)
if item_class == "CardCustom" then
return card_do_discards(obj)
elseif item_class == "Deck" then
return deck_do_discards(obj)
else
return false
end
end
function card_do_discards(card)
-- examines a card and destroys it if it's a joker.
if Global.call("is_a_joker", card) then
destroyObject(card)
end
return true
end
function deck_do_discards(deck)
-- examines a deck and destroys all its jokers.
for _, card_desc in pairs(deck.getObjects()) do
if Global.call("card_desc_is_a_joker", card_desc) then
take_params = {
guid = card_desc.guid,
callback_function = card_do_discards
}
local joker_card = deck.takeObject(take_params)
end
end
return true
end