Makes actionbuttons remember positions where you locked them. (#33150)

* conjure spells fix

* added newline at end of file

* actionbuttons positioning memory

* remade id generation

* added memory reset on mass reset

* small fix
This commit is contained in:
jammer312
2017-12-08 22:29:42 +13:00
committed by oranges
parent 9017fc5d34
commit f07421a002
3 changed files with 37 additions and 1 deletions
+19 -1
View File
@@ -43,10 +43,27 @@
return
Remove(owner)
owner = M
//button id generation
var/counter = 0
var/bitfield = 0
for(var/datum/action/A in M.actions)
if(A.name == name && A.button.id)
counter += 1
bitfield |= A.button.id
bitfield = ~bitfield
var/bitflag = 1
for(var/i in 1 to (counter + 1))
if(bitfield & bitflag)
button.id = bitflag
break
bitflag *= 2
M.actions += src
if(M.client)
M.client.screen += button
button.locked = M.client.prefs.buttons_locked
button.locked = M.client.prefs.buttons_locked || button.id ? M.client.prefs.action_buttons_screen_locs["[name]_[button.id]"] : FALSE //even if it's not defaultly locked we should remember we locked it before
button.moved = button.id ? M.client.prefs.action_buttons_screen_locs["[name]_[button.id]"] : FALSE
M.update_action_buttons()
else
Remove(owner)
@@ -60,6 +77,7 @@
owner = null
button.moved = FALSE //so the button appears in its normal position when given to another owner.
button.locked = FALSE
button.id = null
/datum/action/proc/Trigger()
if(!IsAvailable())