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 0000000..56c821f Binary files /dev/null and b/mods/ctf_events/textures/ctf_events_kill_bullet.png differ diff --git a/mods/ctf_events/textures/ctf_events_kill_grenade.png b/mods/ctf_events/textures/ctf_events_kill_grenade.png new file mode 100644 index 0000000..f0ade73 Binary files /dev/null and b/mods/ctf_events/textures/ctf_events_kill_grenade.png differ 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 0000000..630a339 Binary files /dev/null and b/mods/ctf_events/textures/ctf_events_kill_sword.png differ diff --git a/mods/ctf_pvp_engine b/mods/ctf_pvp_engine index 386d729..f1bc56f 160000 --- a/mods/ctf_pvp_engine +++ b/mods/ctf_pvp_engine @@ -1 +1 @@ -Subproject commit 386d72965e4c13eac575c2dbed1b32e3724d835d +Subproject commit f1bc56f4cda629d3a66147172227f7db57774594