Added support for multiple spell UI elements.

This means that Mutant Powers are no longer filed under spells.
It also lays groundwork for Ling and Vamp powers being put into their own categories.
This commit is contained in:
ComicIronic
2015-03-30 15:25:33 +01:00
parent 0d08712061
commit 387f1fc8d4
8 changed files with 54 additions and 39 deletions

View File

@@ -94,6 +94,7 @@
#define ui_construct_pull "14:28,2:10" //above the zone_sel icon
#define ui_spell_master "14:16,14:16"
#define ui_genetic_master "14:16,12:16"
//Pop-up inventory
#define ui_shoes "2:8,1:5"

View File

@@ -4,6 +4,10 @@
icon_state = "wiz_spell_ready"
var/list/obj/screen/spell/spell_objects = list()
var/showing = 0
var/open_state = "master_open"
var/closed_state = "master_closed"
screen_loc = ui_spell_master
var/mob/spell_holder
@@ -29,7 +33,7 @@
O.handle_icon_updates = 0
showing = 0
overlays.len = 0
overlays.Add("master_closed")
overlays.Add(closed_state)
else if(forced_state != 1)
var/temp_loc = screen_loc
@@ -48,7 +52,7 @@
update_spells(1)
showing = 1
overlays.len = 0
overlays.Add("master_open")
overlays.Add(open_state)
/obj/screen/movable/spell_master/proc/add_spell(var/spell/spell)
if(!spell) return
@@ -63,7 +67,7 @@
var/obj/screen/spell/newscreen = new
newscreen.spell = spell
if(!spell.override_base)
if(!spell.override_base) //if it's not set, we do basic checks
if(spell.spell_flags & CONSTRUCT_CHECK)
newscreen.spell_base = "const" //construct spells
else
@@ -85,7 +89,7 @@
if(spell_objects.len)
toggle_open(showing + 1)
else
spell_holder.spell_master = null
spell_holder.spell_masters.Remove(src)
qdel(src)
/obj/screen/movable/spell_master/proc/silence_spells(var/amount)
@@ -101,8 +105,18 @@
spell.update_charge(forced)
/obj/screen/movable/spell_master/genetic
name = "Mutant Powers"
icon_state = "genetic_spell_ready"
//ACTUAL SPELLS
open_state = "genetics_open"
closed_state = "genetics_closed"
screen_loc = ui_genetic_master
//////////////ACTUAL SPELLS//////////////
//This is what you click to cast things//
/////////////////////////////////////////
/obj/screen/spell
icon = 'icons/mob/screen_spells.dmi'
icon_state = "wiz_spell_base"
@@ -123,20 +137,7 @@
return //nothing to see here
overlays -= spell.hud_state
/*
if(spell.charge_type == Sp_RECHARGE)
if(spell.charge_counter < spell.charge_max)
icon_state = "[spell_base]_spell_base"
else
icon_state = "[spell_base]_spell_ready"
else if(spell.charge_type == Sp_CHARGES)
icon_state = "[spell_base]_spell_base"
if(spell.charge_counter)
var/icon/partial_charge = icon(src.icon, "[spell_base]_spell_ready")
world << "[partial_charge.Width()], [partial_charge.Height() * round(spell.charge_counter / spell.charge_max)]"
partial_charge.Crop(1, 1, partial_charge.Width(), partial_charge.Height() * round(spell.charge_counter / spell.charge_max))
overlays += partial_charge
*/
if(spell.charge_type == Sp_RECHARGE || spell.charge_type == Sp_CHARGES)
if(spell.charge_counter < spell.charge_max)
icon_state = "[spell_base]_spell_base"

View File

@@ -83,7 +83,7 @@
activate(var/mob/M, var/connected, var/flags)
..(M,connected,flags)
var/spell/granted = new spelltype
M.add_spell(granted, "genetic_spell_ready")
M.add_spell(granted, "genetic_spell_ready", /obj/screen/movable/spell_master/genetic)
if(!granted_spells)
granted_spells = list()
granted_spells += granted

View File

@@ -64,6 +64,7 @@
client.view = max(client.view, world.view+2)
CallHook("Login", list("client" = src.client, "mob" = src))
if(spell_master)
client.screen += spell_master
spell_master.toggle_open(spell_master.showing + 1)
if(spell_masters)
for(var/obj/screen/movable/spell_master/spell_master in spell_masters)
client.screen += spell_master
spell_master.toggle_open(spell_master.showing + 1)

View File

@@ -139,8 +139,9 @@
return 0
/mob/proc/Life()
if(spell_master)
spell_master.update_spells(0, src)
if(spell_masters && spell_masters.len)
for(var/obj/screen/movable/spell_master/spell_master in spell_masters)
spell_master.update_spells(0, src)
return
/mob/proc/see_narsie(var/obj/machinery/singularity/narsie/large/N, var/dir)

View File

@@ -45,7 +45,7 @@
var/obj/screen/m_hatbg = null
//spells hud icons - this interacts with add_spell and remove_spell
var/obj/screen/movable/spell_master/spell_master = null
var/list/obj/screen/movable/spell_master/spell_masters = null
//thou shall always be able to see the Geometer of Blood
var/image/narsimage = null

View File

@@ -1,14 +1,23 @@
/mob/proc/add_spell(var/spell/spell_to_add, var/spell_base = "wiz_spell_ready")
if(!spell_master)
spell_master = new
if(spell_base)
spell_master.icon_state = spell_base
if(client)
src.client.screen += spell_master
spell_master.spell_holder = src
/mob/proc/add_spell(var/spell/spell_to_add, var/spell_base = "wiz_spell_ready", var/master_type = /obj/screen/movable/spell_master)
if(!spell_masters)
spell_masters = list()
if(spell_masters.len)
for(var/obj/screen/movable/spell_master/spell_master in spell_masters)
if(spell_master.type == master_type)
spell_list.Add(spell_to_add)
spell_master.add_spell(spell_to_add)
return 1
var/obj/screen/movable/spell_master/new_spell_master = new master_type //we're here because either we didn't find our type, or we have no spell masters to attach to
if(client)
src.client.screen += new_spell_master
new_spell_master.spell_holder = src
new_spell_master.add_spell(spell_to_add)
if(spell_base)
new_spell_master.icon_state = spell_base
spell_masters.Add(new_spell_master)
spell_list.Add(spell_to_add)
spell_master.add_spell(spell_to_add)
return 1
/mob/proc/remove_spell(var/spell/spell_to_remove)
@@ -18,18 +27,20 @@
if(!(spell_to_remove in spell_list))
return
if(!spell_master)
if(!spell_masters || !spell_masters.len)
return
spell_list.Remove(spell_to_remove)
spell_master.remove_spell(spell_to_remove)
for(var/obj/screen/movable/spell_master/spell_master in spell_masters)
spell_master.remove_spell(spell_to_remove)
return 1
/mob/proc/silence_spells(var/amount = 0)
if(!(amount >= 0))
return
if(!spell_master)
if(!spell_masters || !spell_masters.len)
return
spell_master.silence_spells(amount)
for(var/obj/screen/movable/spell_master/spell_master in spell_masters)
spell_master.silence_spells(amount)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 33 KiB