Fix tag handlers + stuff

This commit is contained in:
Mikko Ahlroth 2018-05-10 17:40:07 +03:00
parent 728c529c95
commit 499453ce15
5 changed files with 44 additions and 37 deletions

View file

@ -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"

View file

@ -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

View file

@ -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

View file

@ -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"},
}

View file

@ -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"},
}