From 499453ce153bb278c5df370a89303e1749d75b0f Mon Sep 17 00:00:00 2001 From: Mikko Ahlroth Date: Thu, 10 May 2018 17:40:07 +0300 Subject: [PATCH] Fix tag handlers + stuff --- config/rpi.exs | 4 ++-- lib/duck_tag/tag_handler.ex | 43 ++++++++++++++++++++++++++++++++----- lib/respawn/tag_handler.ex | 30 -------------------------- mix.lock.rpi | 2 ++ mix.lock.rpi0 | 2 ++ 5 files changed, 44 insertions(+), 37 deletions(-) delete mode 100644 lib/respawn/tag_handler.ex diff --git a/config/rpi.exs b/config/rpi.exs index 951d95a..491f6cc 100644 --- a/config/rpi.exs +++ b/config/rpi.exs @@ -1,8 +1,8 @@ # RPi 1 Model B specific config +use Mix.Config + config :nerves_init_net_kernel, iface: "eth0" -use Mix.Config - import_config "rpi.secret.exs" diff --git a/lib/duck_tag/tag_handler.ex b/lib/duck_tag/tag_handler.ex index 6180e5a..9d7fff5 100644 --- a/lib/duck_tag/tag_handler.ex +++ b/lib/duck_tag/tag_handler.ex @@ -68,7 +68,9 @@ defmodule DuckTag.TagHandler do ) end - def tagged(%GameDB.Device{} = our_device, %GameDB.State{status: :game_on}, tag_id) do + def tagged(%GameDB.Device{type: :player} = our_device, %GameDB.State{status: :game_on}, tag_id) do + our_player_id = our_device.player_id + Amnesia.transaction do case GameDB.Device.read(tag_id) do nil -> @@ -79,15 +81,46 @@ defmodule DuckTag.TagHandler do nil -> Logger.debug("Tag #{tag_id} associated with nonexistent player #{device.player_id}") + %GameDB.Player{id: player_id} when player_id == our_player_id -> + Logger.debug("Cannot tag myself.") + %GameDB.Player{status: status} = player when status != :alive -> Logger.debug("Tagged by #{player.name} but they are not in contention.") %GameDB.Player{status: :alive} = player -> - Logger.debug("Tagged by #{player.name}. #{@points_per_tag} points!") - GameDB.Player.add_score(player, @points_per_tag) + our_player = GameDB.Player.read!(our_device.player_id) - # TODO: KILL OUR PLAYER - GameDB.Player.set_status(player, :dead) + case our_player.status do + :alive -> + Logger.debug("Tagged by #{player.name}. #{@points_per_tag} points!") + GameDB.Player.add_score(player, @points_per_tag) + + # TODO: KILL OUR PLAYER + GameDB.Player.set_status(our_player, :dead) + + other -> + Logger.debug("Cannot be tagged, our status is #{other}.") + end + end + end + end + end + + def tagged(%GameDB.Device{type: :respawn}, %GameDB.State{status: :game_on}, tag_id) do + Amnesia.transaction do + case GameDB.Device.read(tag_id) do + nil -> + Logger.debug("I was tagged by unknown tag #{tag_id}") + + %GameDB.Device{} = device -> + case GameDB.Player.read(device.player_id) do + nil -> + Logger.debug("Tag #{tag_id} associated with nonexistent player #{device.player_id}") + + %GameDB.Player{} = player -> + Logger.debug("I was tagged by #{player.name}. Respawned!") + GameDB.Player.set_status(player, :alive) + GameDB.Player.reset_last_respawn(player) end end end diff --git a/lib/respawn/tag_handler.ex b/lib/respawn/tag_handler.ex deleted file mode 100644 index c978ee3..0000000 --- a/lib/respawn/tag_handler.ex +++ /dev/null @@ -1,30 +0,0 @@ -defmodule DuckTag.Respawn.TagHandler do - @moduledoc """ - Tagging handler for respawn. - """ - alias DuckTag.DB.Manager.GameDB - use Amnesia - require Logger - - @respawned_status :alive - - def tagged(tag_id) do - Amnesia.transaction do - case GameDB.Device.read(tag_id) do - nil -> - Logger.debug("I was tagged by unknown tag #{tag_id}") - - %GameDB.Device{} = device -> - case GameDB.Player.read(device.player_id) do - nil -> - Logger.debug("Tag #{tag_id} associated with nonexistent player #{device.player_id}") - - %GameDB.Player{} = player -> - Logger.debug("I was tagged by #{player.name}. Respawned!") - GameDB.Player.set_status(player, @respawned_status) - GameDB.Player.reset_last_respawn(player) - end - end - end - end -end diff --git a/mix.lock.rpi b/mix.lock.rpi index 402304b..4bd1283 100644 --- a/mix.lock.rpi +++ b/mix.lock.rpi @@ -4,6 +4,7 @@ "distillery": {:hex, :distillery, "1.5.2", "eec18b2d37b55b0bcb670cf2bcf64228ed38ce8b046bb30a9b636a6f5a4c0080", [], [], "hexpm"}, "dns": {:hex, :dns, "1.0.1", "1d88187fdf564d937cee202949141090707fd0c9d7fcae903a6878ef24ef5d1e", [:mix], [{:socket, "~> 0.3.12", [hex: :socket, repo: "hexpm", optional: false]}], "hexpm"}, "elixir_make": {:hex, :elixir_make, "0.4.0", "992f38fabe705bb45821a728f20914c554b276838433349d4f2341f7a687cddf", [:mix], [], "hexpm"}, + "ex2ms": {:hex, :ex2ms, "1.5.0", "19e27f9212be9a96093fed8cdfbef0a2b56c21237196d26760f11dfcfae58e97", [:mix], [], "hexpm"}, "exquisite": {:hex, :exquisite, "0.1.8", "ee8f56aae477287ce5e7dfcbc163a420cccbb73e680a6d80a09203e9ef514fa4", [], [], "hexpm"}, "mdns": {:hex, :mdns, "0.1.6", "b51b902b15b50e0e1522483c6a5fb073413e3d3d6ef52a44b93a541460b47d29", [:mix], [{:dns, "~> 1.0", [hex: :dns, repo: "hexpm", optional: false]}], "hexpm"}, "nerves": {:hex, :nerves, "0.7.5", "3aa6a336b2ad6c1c9589cc2b577511b3c4c375c1ba6c533ab9f88adb8c21f0c3", [:mix], [{:distillery, "~> 1.4", [hex: :distillery, repo: "hexpm", optional: false]}], "hexpm"}, @@ -23,4 +24,5 @@ "recon": {:hex, :recon, "2.3.2", "4444c879be323b1b133eec5241cb84bd3821ea194c740d75617e106be4744318", [], [], "hexpm"}, "socket": {:hex, :socket, "0.3.12", "4a6543815136503fee67eff0932da1742fad83f84c49130c854114153cc549a6", [:mix], [], "hexpm"}, "system_registry": {:hex, :system_registry, "0.6.0", "31642177e6002d3cff2ada3553ed4e9c0a6ca015797d62d7d17c0ab8696185fc", [:mix], [], "hexpm"}, + "uuid": {:hex, :uuid, "1.1.8", "e22fc04499de0de3ed1116b770c7737779f226ceefa0badb3592e64d5cfb4eb9", [:mix], [], "hexpm"}, } diff --git a/mix.lock.rpi0 b/mix.lock.rpi0 index 4878f5d..f90f62b 100644 --- a/mix.lock.rpi0 +++ b/mix.lock.rpi0 @@ -4,6 +4,7 @@ "distillery": {:hex, :distillery, "1.5.2", "eec18b2d37b55b0bcb670cf2bcf64228ed38ce8b046bb30a9b636a6f5a4c0080", [:mix], [], "hexpm"}, "dns": {:hex, :dns, "1.0.1", "1d88187fdf564d937cee202949141090707fd0c9d7fcae903a6878ef24ef5d1e", [:mix], [{:socket, "~> 0.3.12", [hex: :socket, repo: "hexpm", optional: false]}], "hexpm"}, "elixir_make": {:hex, :elixir_make, "0.4.0", "992f38fabe705bb45821a728f20914c554b276838433349d4f2341f7a687cddf", [:mix], [], "hexpm"}, + "ex2ms": {:hex, :ex2ms, "1.5.0", "19e27f9212be9a96093fed8cdfbef0a2b56c21237196d26760f11dfcfae58e97", [:mix], [], "hexpm"}, "exquisite": {:hex, :exquisite, "0.1.8", "ee8f56aae477287ce5e7dfcbc163a420cccbb73e680a6d80a09203e9ef514fa4", [], [], "hexpm"}, "mdns": {:hex, :mdns, "0.1.6", "b51b902b15b50e0e1522483c6a5fb073413e3d3d6ef52a44b93a541460b47d29", [:mix], [{:dns, "~> 1.0", [hex: :dns, repo: "hexpm", optional: false]}], "hexpm"}, "nerves": {:hex, :nerves, "0.7.5", "3aa6a336b2ad6c1c9589cc2b577511b3c4c375c1ba6c533ab9f88adb8c21f0c3", [:mix], [{:distillery, "~> 1.4", [hex: :distillery, repo: "hexpm", optional: false]}], "hexpm"}, @@ -23,4 +24,5 @@ "recon": {:hex, :recon, "2.3.2", "4444c879be323b1b133eec5241cb84bd3821ea194c740d75617e106be4744318", [], [], "hexpm"}, "socket": {:hex, :socket, "0.3.12", "4a6543815136503fee67eff0932da1742fad83f84c49130c854114153cc549a6", [:mix], [], "hexpm"}, "system_registry": {:hex, :system_registry, "0.6.0", "31642177e6002d3cff2ada3553ed4e9c0a6ca015797d62d7d17c0ab8696185fc", [:mix], [], "hexpm"}, + "uuid": {:hex, :uuid, "1.1.8", "e22fc04499de0de3ed1116b770c7737779f226ceefa0badb3592e64d5cfb4eb9", [:mix], [], "hexpm"}, }