From abcd3c176f9c44417cec99753fcd8e64b2d07920 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Tue, 5 Apr 2016 17:19:03 +0100 Subject: [PATCH] Add event log, update ctf_pvp_engine --- mods/ctf_events/depends.txt | 2 + mods/ctf_events/init.lua | 125 ++++++++++++++++++ .../textures/ctf_events_kill_bullet.png | Bin 0 -> 274 bytes .../textures/ctf_events_kill_grenade.png | Bin 0 -> 381 bytes .../textures/ctf_events_kill_sword.png | Bin 0 -> 168 bytes mods/ctf_pvp_engine | 2 +- 6 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 mods/ctf_events/depends.txt create mode 100644 mods/ctf_events/init.lua create mode 100644 mods/ctf_events/textures/ctf_events_kill_bullet.png create mode 100644 mods/ctf_events/textures/ctf_events_kill_grenade.png create mode 100644 mods/ctf_events/textures/ctf_events_kill_sword.png diff --git a/mods/ctf_events/depends.txt b/mods/ctf_events/depends.txt new file mode 100644 index 0000000..c1955ae --- /dev/null +++ b/mods/ctf_events/depends.txt @@ -0,0 +1,2 @@ +ctf +hudkit diff --git a/mods/ctf_events/init.lua b/mods/ctf_events/init.lua new file mode 100644 index 0000000..8bad81b --- /dev/null +++ b/mods/ctf_events/init.lua @@ -0,0 +1,125 @@ +local hud = hudkit() + +minetest.register_on_leaveplayer(function(player) + hud.players[player:get_player_name()] = nil +end) + +local NUM_EVT = 6 + +ctf_events = { + events = {} +} + +function ctf_events.post(action, one, two) + table.insert(ctf_events.events, 1, { + action = action, + one = one, + two = two + }) + + while #ctf_events.events > NUM_EVT do + table.remove(ctf_events.events, #ctf_events.events) + end +end + +ctf.register_on_killedplayer(function(victim, killer, type) + ctf_events.post("kill_" .. type, killer, victim) + ctf_events.update_all() +end) + +function ctf_events.update_row(i, player, name, tplayer, evt) + local idx = "ctf_events:" .. i .. "_one" + local idxa = "ctf_events:" .. i .. "_action" + local idx2 = "ctf_events:" .. i .. "_two" + + if not evt then + hud:remove(player, idx) + hud:remove(player, idxa) + hud:remove(player, idx2) + return + end + + local y_pos = i * 20 + + -- One + local tone_text, tone_hex = ctf_colors.get_color(evt.one, ctf.player(evt.one)) + if hud:exists(player, idx) then + hud:change(player, idx, "text", evt.one) + hud:change(player, idx, "number", tone_hex) + else + local tmp = { + hud_elem_type = "text", + position = {x = 0, y = 0.8}, + scale = {x = 200, y = 100}, + text = evt.one, + number = tone_hex, + offset = {x = 145, y = -y_pos}, + alignment = {x = -1, y = 0} + } + hud:add(player, idx, tmp) + end + + -- Two + if evt.two then + local ttwo_text, ttwo_hex = ctf_colors.get_color(evt.two, ctf.player(evt.two)) + if hud:exists(player, idx2) then + hud:change(player, idx2, "text", evt.two) + hud:change(player, idx2, "number", ttwo_hex) + else + local tmp = { + hud_elem_type = "text", + position = {x = 0, y = 0.8}, + scale = {x = 200, y = 100}, + text = evt.two, + number = ttwo_hex, + offset = {x = 175, y = -y_pos}, + alignment = {x = 1, y = 0} + } + hud:add(player, idx2, tmp) + end + else + hud:remove(player, idx2) + end + + -- Action + if evt.action then + if hud:exists(player, idxa) then + hud:change(player, idxa, "text", "ctf_events_" .. evt.action .. ".png") + else + local tmp = { + hud_elem_type = "image", + position = {x = 0, y = 0.8}, + scale = {x = 1, y = 1}, + text = "ctf_events_" .. evt.action .. ".png", + offset = {x = 160, y = -y_pos}, + alignment = {x = 0, y = 0} + } + hud:add(player, idxa, tmp) + end + else + hud:remove(player, idxa) + end +end + +function ctf_events.update(player) + local name = player:get_player_name() + local tplayer = ctf.player_or_nil(name) + if tplayer then + for i=1, NUM_EVT do + local evt = nil + if #ctf_events.events >= i then + evt = ctf_events.events[i] + end + ctf_events.update_row(i, player, name, tplayer, evt) + end + end +end + +function ctf_events.update_all() + print("Updating events log") + for _, player in pairs(minetest.get_connected_players()) do + ctf_events.update(player) + end + minetest.after(10, ctf_events.update_all) +end +minetest.after(10, ctf_events.update_all) diff --git a/mods/ctf_events/textures/ctf_events_kill_bullet.png b/mods/ctf_events/textures/ctf_events_kill_bullet.png new file mode 100644 index 0000000000000000000000000000000000000000..56c821f213ee19bea257fe0278ebc42cd4dceda4 GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85sBugD~Uq{1qucLG}_)Usv|K+`Pg%VkX}G-aw&Ao-U3d7N@sP zy2yJ(fydeRYHx(X;#3p;2{ViAuXnXAS$b*iet{Y8j~M<$?foA9FL%cahCgqcb0exZ z@(b>aQL+p#V768i6k!yYDB>ivs%rj0#n4^>`E&CaIa5}pu|7B%u{UQS#|p-VnM)@e z-k+*jA8m0qt*o&x@{Pal5y9gM-zE4?elqVmA(EuMXWxU!NssUUV%QyMdE7Ka!U5QL70(Y)*K0-AbW|YuPggKc79=XF}q8QOMpUuJzX3_EKV<- zyfN>Pfrx9r^0t%(XCD|ktNdu-3B1O~BOCFv`A_hVWom409s>1;G~_G({{ zS2|ryL0DSz&dXbus`q`rn_eNX=(SO$C&L8C6^v%9*KRPCFj=C(#qcb@_*3M$qP-Uu z7oNHNS-@d>sp=KKo6;qs@9p^+rj(|JKG@mi{&wolw`7n=WvQ9P-a U_3>{{P(U+yy85}Sb4q9e04U~^I{*Lx literal 0 HcmV?d00001 diff --git a/mods/ctf_events/textures/ctf_events_kill_sword.png b/mods/ctf_events/textures/ctf_events_kill_sword.png new file mode 100644 index 0000000000000000000000000000000000000000..630a33966efb2fd8e87dafa0418ffe5673d9766d GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeX1=5ozPtM55`2YX^vSrKe z+___^F7)cvs~k^Ze^cIMpINY