From 2927b75e8d46f96d702bcc1104eb56d35c7ac883 Mon Sep 17 00:00:00 2001 From: Moritz Ruth Date: Sat, 6 Jun 2020 23:36:20 +0200 Subject: [PATCH] Refactor some Role-related things --- .../moritzruth/spigot_ttt/game/GameManager.kt | 12 +++---- .../spigot_ttt/game/GameMessenger.kt | 18 +++++----- .../{players => }/corpses/CorpseListener.kt | 6 ++-- .../{players => }/corpses/CorpseManager.kt | 2 +- .../game/{players => }/corpses/TTTCorpse.kt | 12 +++---- .../spigot_ttt/game/players/PlayerManager.kt | 14 ++++---- .../spigot_ttt/game/players/Role.kt | 26 ++++++++++++++ .../spigot_ttt/game/players/RoleGroup.kt | 16 +++++++++ .../spigot_ttt/game/players/TTTPlayer.kt | 34 +------------------ .../spigot_ttt/game/players/TTTScoreboard.kt | 12 +++---- .../spigot_ttt/items/ItemManager.kt | 4 +-- .../de/moritzruth/spigot_ttt/items/TTTItem.kt | 3 +- .../spigot_ttt/items/impl/CloakingDevice.kt | 9 ++--- .../spigot_ttt/items/impl/EnderPearl.kt | 6 ++-- .../spigot_ttt/items/impl/HealingPotion.kt | 6 ++-- .../moritzruth/spigot_ttt/items/impl/Radar.kt | 7 ++-- .../items/weapons/guns/impl/GoldenDeagle.kt | 9 +++-- .../items/weapons/guns/impl/Rifle.kt | 2 +- .../items/weapons/impl/BaseballBat.kt | 7 ++-- .../spigot_ttt/items/weapons/impl/Knife.kt | 9 ++--- 20 files changed, 103 insertions(+), 111 deletions(-) rename src/main/kotlin/de/moritzruth/spigot_ttt/game/{players => }/corpses/CorpseListener.kt (87%) rename src/main/kotlin/de/moritzruth/spigot_ttt/game/{players => }/corpses/CorpseManager.kt (93%) rename src/main/kotlin/de/moritzruth/spigot_ttt/game/{players => }/corpses/TTTCorpse.kt (92%) create mode 100644 src/main/kotlin/de/moritzruth/spigot_ttt/game/players/Role.kt create mode 100644 src/main/kotlin/de/moritzruth/spigot_ttt/game/players/RoleGroup.kt diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/game/GameManager.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/game/GameManager.kt index 7b34f47..f645b92 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/game/GameManager.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/game/GameManager.kt @@ -1,9 +1,9 @@ package de.moritzruth.spigot_ttt.game +import de.moritzruth.spigot_ttt.game.corpses.CorpseListener +import de.moritzruth.spigot_ttt.game.corpses.CorpseManager import de.moritzruth.spigot_ttt.game.players.PlayerManager -import de.moritzruth.spigot_ttt.game.players.TTTPlayer -import de.moritzruth.spigot_ttt.game.players.corpses.CorpseListener -import de.moritzruth.spigot_ttt.game.players.corpses.CorpseManager +import de.moritzruth.spigot_ttt.game.players.Role import de.moritzruth.spigot_ttt.items.ItemManager import de.moritzruth.spigot_ttt.items.ItemSpawner import de.moritzruth.spigot_ttt.plugin @@ -26,7 +26,7 @@ object GameManager { CorpseListener.register() } - fun letRoleWin(role: TTTPlayer.Role?) { + fun letRoleWin(role: Role?) { ensurePhase(GamePhase.COMBAT) GameMessenger.win(role) phase = GamePhase.OVER @@ -101,8 +101,8 @@ object GameManager { GameMessenger.combatPhaseStarted() Timers.startCombatPhaseTimer(plugin.config.getInt("duration.combat", 480)) { - if (PlayerManager.stillLivingRoles.contains(TTTPlayer.Role.INNOCENT)) { - letRoleWin(TTTPlayer.Role.INNOCENT) + if (PlayerManager.stillLivingRoles.contains(Role.INNOCENT)) { + letRoleWin(Role.INNOCENT) } else { letRoleWin(null) } diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/game/GameMessenger.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/game/GameMessenger.kt index ada7662..a11d23a 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/game/GameMessenger.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/game/GameMessenger.kt @@ -1,7 +1,7 @@ package de.moritzruth.spigot_ttt.game import de.moritzruth.spigot_ttt.game.players.PlayerManager -import de.moritzruth.spigot_ttt.game.players.TTTPlayer +import de.moritzruth.spigot_ttt.game.players.Role import de.moritzruth.spigot_ttt.plugin import de.moritzruth.spigot_ttt.utils.secondsToTicks import org.bukkit.ChatColor @@ -35,7 +35,7 @@ object GameMessenger { } } - fun win(winnerRole: TTTPlayer.Role?) { + fun win(winnerRole: Role?) { val winner = when(winnerRole) { null -> { plugin.broadcast("Niemand hat gewonnen") @@ -45,14 +45,14 @@ object GameMessenger { return } - TTTPlayer.Role.JACKAL, TTTPlayer.Role.SIDEKICK -> "Der ${TTTPlayer.Role.JACKAL.chatColor}Jackal" - TTTPlayer.Role.TRAITOR -> "Die ${TTTPlayer.Role.TRAITOR.chatColor}Traitor" - TTTPlayer.Role.INNOCENT, TTTPlayer.Role.DETECTIVE -> "Die ${TTTPlayer.Role.INNOCENT.chatColor}Innocents" + Role.JACKAL, Role.SIDEKICK -> "Der ${Role.JACKAL.chatColor}Jackal" + Role.TRAITOR -> "Die ${Role.TRAITOR.chatColor}Traitor" + Role.INNOCENT, Role.DETECTIVE -> "Die ${Role.INNOCENT.chatColor}Innocents" } val winnerMessage = when(winnerRole) { - TTTPlayer.Role.JACKAL, TTTPlayer.Role.SIDEKICK -> "hat gewonnen" - TTTPlayer.Role.TRAITOR, TTTPlayer.Role.INNOCENT, TTTPlayer.Role.DETECTIVE -> "haben gewonnen" + Role.JACKAL, Role.SIDEKICK -> "hat gewonnen" + Role.TRAITOR, Role.INNOCENT, Role.DETECTIVE -> "haben gewonnen" } plugin.broadcast("${ChatColor.GOLD}$winner ${ChatColor.GOLD}${winnerMessage}") @@ -69,13 +69,13 @@ object GameMessenger { plugin.broadcast("${ChatColor.RED}Das Spiel wurde abgebrochen.") } - fun corpseIdentified(by: String, who: String, role: TTTPlayer.Role) { + fun corpseIdentified(by: String, who: String, role: Role) { plugin.broadcast("$by ${ChatColor.GOLD}hat die Leiche von ${ChatColor.WHITE}$who ${ChatColor.GOLD}identifiziert. Er/Sie war ${role.coloredDisplayName}") } fun roles() { val playersByRole = PlayerManager.getPlayersByRole() - val roles = playersByRole.keys.sortedBy(TTTPlayer.Role::position) + val roles = playersByRole.keys.sortedBy(Role::position) for (role in roles) { val entries = playersByRole.getValue(role).map { tttPlayer -> diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/corpses/CorpseListener.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/game/corpses/CorpseListener.kt similarity index 87% rename from src/main/kotlin/de/moritzruth/spigot_ttt/game/players/corpses/CorpseListener.kt rename to src/main/kotlin/de/moritzruth/spigot_ttt/game/corpses/CorpseListener.kt index 80024e1..688875a 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/corpses/CorpseListener.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/game/corpses/CorpseListener.kt @@ -1,7 +1,7 @@ -package de.moritzruth.spigot_ttt.game.players.corpses +package de.moritzruth.spigot_ttt.game.corpses import de.moritzruth.spigot_ttt.game.players.PlayerManager -import de.moritzruth.spigot_ttt.game.players.TTTPlayer +import de.moritzruth.spigot_ttt.game.players.Role import de.moritzruth.spigot_ttt.plugin import org.bukkit.entity.Player import org.bukkit.event.EventHandler @@ -37,7 +37,7 @@ object CorpseListener: Listener { if(Instant.now().toEpochMilli() - tttCorpse.timestamp.toEpochMilli() < 200) return event.clicker.openInventory(tttCorpse.inventory) - if (tttPlayer.role == TTTPlayer.Role.DETECTIVE) tttCorpse.inspect(tttPlayer.player) + if (tttPlayer.role == Role.DETECTIVE) tttCorpse.inspect(tttPlayer.player) else tttCorpse.identify(tttPlayer.player) } diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/corpses/CorpseManager.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/game/corpses/CorpseManager.kt similarity index 93% rename from src/main/kotlin/de/moritzruth/spigot_ttt/game/players/corpses/CorpseManager.kt rename to src/main/kotlin/de/moritzruth/spigot_ttt/game/corpses/CorpseManager.kt index 3f6c40e..376bb4a 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/corpses/CorpseManager.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/game/corpses/CorpseManager.kt @@ -1,4 +1,4 @@ -package de.moritzruth.spigot_ttt.game.players.corpses +package de.moritzruth.spigot_ttt.game.corpses import de.moritzruth.spigot_ttt.game.players.DeathReason import de.moritzruth.spigot_ttt.game.players.TTTPlayer diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/corpses/TTTCorpse.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/game/corpses/TTTCorpse.kt similarity index 92% rename from src/main/kotlin/de/moritzruth/spigot_ttt/game/players/corpses/TTTCorpse.kt rename to src/main/kotlin/de/moritzruth/spigot_ttt/game/corpses/TTTCorpse.kt index dc5a668..43602e9 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/corpses/TTTCorpse.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/game/corpses/TTTCorpse.kt @@ -1,9 +1,9 @@ -package de.moritzruth.spigot_ttt.game.players.corpses +package de.moritzruth.spigot_ttt.game.corpses import de.moritzruth.spigot_ttt.CustomItems import de.moritzruth.spigot_ttt.game.GameMessenger import de.moritzruth.spigot_ttt.game.players.DeathReason -import de.moritzruth.spigot_ttt.game.players.TTTPlayer +import de.moritzruth.spigot_ttt.game.players.Role import de.moritzruth.spigot_ttt.plugin import de.moritzruth.spigot_ttt.utils.applyMeta import de.moritzruth.spigot_ttt.utils.secondsToTicks @@ -17,17 +17,17 @@ import org.golde.bukkit.corpsereborn.CorpseAPI.CorpseAPI import org.golde.bukkit.corpsereborn.nms.Corpses import java.time.Instant -class TTTCorpse(private val player: Player, location: Location, private val role: TTTPlayer.Role, private val reason: DeathReason) { +class TTTCorpse(private val player: Player, location: Location, private val role: Role, private val reason: DeathReason) { val corpse: Corpses.CorpseData? val inventory = player.server.createInventory(null, InventoryType.HOPPER, "${role.chatColor}${player.displayName}") val timestamp: Instant = Instant.now() - var identified = false; private set - var inspected = false + private var identified = false + private var inspected = false private set(value) { field = value updateTimeItem() } - var wholeMinutesSinceDeath = 0; private set + private var wholeMinutesSinceDeath = 0; private set private var updateTimeListener: BukkitTask init { diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/PlayerManager.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/PlayerManager.kt index 1a33df7..2ca37af 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/PlayerManager.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/PlayerManager.kt @@ -16,12 +16,12 @@ object PlayerManager { val availablePlayers get() = plugin.server.onlinePlayers.filter { it.gameMode === GameMode.SURVIVAL } val stillLivingRoles get() = tttPlayers.filter { it.alive }.map { it.role }.toSet() - val stillLivingRoleGroups get() = stillLivingRoles.map { it.group }.toSet() - val playersJoinedDuringRound = mutableSetOf() + private val stillLivingRoleGroups get() = stillLivingRoles.map { it.group }.toSet() + private val playersJoinedDuringRound = mutableSetOf() fun getTTTPlayer(player: Player) = tttPlayers.find { it.player === player } - fun getPlayersByRole() = mutableMapOf>() + fun getPlayersByRole() = mutableMapOf>() .apply { tttPlayers.forEach { getOrPut(it.role) { mutableSetOf() }.add(it) } } .toMap() @@ -100,22 +100,22 @@ object PlayerManager { if (playerCount >= plugin.config.getInt("min-players-for.detective", 5)) { val player = playersWithoutRole.random() - tttPlayers.add(TTTPlayer(player, TTTPlayer.Role.DETECTIVE)) + tttPlayers.add(TTTPlayer(player, Role.DETECTIVE)) playersWithoutRole.remove(player) } if (playerCount >= plugin.config.getInt("min-players-for.jackal", 6)) { val player = playersWithoutRole.random() - tttPlayers.add(TTTPlayer(player, TTTPlayer.Role.JACKAL)) + tttPlayers.add(TTTPlayer(player, Role.JACKAL)) playersWithoutRole.remove(player) } for (index in 1..traitorCount) { val player = playersWithoutRole.random() - tttPlayers.add(TTTPlayer(player, TTTPlayer.Role.TRAITOR)) + tttPlayers.add(TTTPlayer(player, Role.TRAITOR)) playersWithoutRole.remove(player) } - playersWithoutRole.forEach { tttPlayers.add(TTTPlayer(it, TTTPlayer.Role.INNOCENT)) } + playersWithoutRole.forEach { tttPlayers.add(TTTPlayer(it, Role.INNOCENT)) } } } diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/Role.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/Role.kt new file mode 100644 index 0000000..450461e --- /dev/null +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/Role.kt @@ -0,0 +1,26 @@ +package de.moritzruth.spigot_ttt.game.players + +import de.moritzruth.spigot_ttt.CustomItems +import org.bukkit.ChatColor +import org.bukkit.Material +import java.util.* + +enum class Role( + val chatColor: ChatColor, + val displayName: String, + val iconItemMaterial: Material, + val canOwnCredits: Boolean = false +) { + INNOCENT(ChatColor.GREEN, "Innocent", CustomItems.innocent), + DETECTIVE(ChatColor.YELLOW, "Detective", CustomItems.detective, true), + TRAITOR(ChatColor.RED, "Traitor", CustomItems.traitor, true), + JACKAL(ChatColor.AQUA, "Jackal", CustomItems.jackal, true), + SIDEKICK(ChatColor.AQUA, "Sidekick", CustomItems.sidekick, true); + + val coloredDisplayName = "$chatColor$displayName${ChatColor.RESET}" + + val position by lazy { values().indexOf(this) } + val group by lazy { RoleGroup.getGroupOf(this) } +} + +fun roles(role: Role, vararg moreRoles: Role): EnumSet = EnumSet.of(role, *moreRoles) diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/RoleGroup.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/RoleGroup.kt new file mode 100644 index 0000000..10c60f4 --- /dev/null +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/RoleGroup.kt @@ -0,0 +1,16 @@ +package de.moritzruth.spigot_ttt.game.players + +import java.util.* + +enum class RoleGroup(val primaryRole: Role, val additionalRoles: EnumSet = EnumSet.noneOf(Role::class.java)) { + INNOCENT(Role.INNOCENT, EnumSet.of(Role.DETECTIVE)), + JACKAL(Role.JACKAL, EnumSet.of(Role.SIDEKICK)), + TRAITOR(Role.TRAITOR); + + fun bothAre(firstTTTPlayer: TTTPlayer, secondTTTPlayer: TTTPlayer) = + firstTTTPlayer.role.group == this && secondTTTPlayer.role.group == this + + companion object { + fun getGroupOf(role: Role) = values().find { it.primaryRole == role || it.additionalRoles.contains(role) } + } +} diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/TTTPlayer.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/TTTPlayer.kt index cffc2f9..c41dfc7 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/TTTPlayer.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/TTTPlayer.kt @@ -1,11 +1,10 @@ package de.moritzruth.spigot_ttt.game.players -import de.moritzruth.spigot_ttt.CustomItems import de.moritzruth.spigot_ttt.discord.DiscordBot import de.moritzruth.spigot_ttt.discord.DiscordInterface import de.moritzruth.spigot_ttt.game.GameManager import de.moritzruth.spigot_ttt.game.GamePhase -import de.moritzruth.spigot_ttt.game.players.corpses.CorpseManager +import de.moritzruth.spigot_ttt.game.corpses.CorpseManager import de.moritzruth.spigot_ttt.items.ItemManager import de.moritzruth.spigot_ttt.items.Selectable import de.moritzruth.spigot_ttt.items.TTTItem @@ -13,18 +12,15 @@ import de.moritzruth.spigot_ttt.plugin import de.moritzruth.spigot_ttt.shop.Shop import de.moritzruth.spigot_ttt.utils.hotbarContents import de.moritzruth.spigot_ttt.utils.teleportPlayerToWorldSpawn -import org.bukkit.ChatColor import org.bukkit.GameMode import org.bukkit.Material import org.bukkit.entity.Player import org.bukkit.potion.PotionEffect import org.bukkit.potion.PotionEffectType -import java.util.* import kotlin.properties.Delegates class TTTPlayer(player: Player, role: Role) { var alive = true - var player by Delegates.observable(player) { _, _, _ -> initializePlayer() } var role by Delegates.observable(role) { _, _, _ -> scoreboard.updateRole() } @@ -164,33 +160,5 @@ class TTTPlayer(player: Player, role: Role) { private fun getOwningTTTItems() = player.inventory.hotbarContents.mapNotNull { it?.run { ItemManager.getItemByItemStack(this) } } - enum class RoleGroup(val primaryRole: Role, val additionalRoles: EnumSet = EnumSet.noneOf(Role::class.java)) { - INNOCENT(Role.INNOCENT, EnumSet.of(Role.DETECTIVE)), - JACKAL(Role.JACKAL, EnumSet.of(Role.SIDEKICK)), - TRAITOR(Role.TRAITOR); - - companion object { - fun getGroupOf(role: Role) = values().find { it.primaryRole == role || it.additionalRoles.contains(role) } - } - } - - enum class Role( - val chatColor: ChatColor, - val displayName: String, - val iconItemMaterial: Material, - val canOwnCredits: Boolean = false - ) { - INNOCENT(ChatColor.GREEN, "Innocent", CustomItems.innocent), - DETECTIVE(ChatColor.YELLOW, "Detective", CustomItems.detective, true), - TRAITOR(ChatColor.RED, "Traitor", CustomItems.traitor, true), - JACKAL(ChatColor.AQUA, "Jackal", CustomItems.jackal, true), - SIDEKICK(ChatColor.AQUA, "Sidekick", CustomItems.sidekick, true); - - val coloredDisplayName = "$chatColor$displayName${ChatColor.RESET}" - - val position by lazy { values().indexOf(this) } - val group by lazy { RoleGroup.getGroupOf(this) } - } - override fun toString() = "TTTPlayer(${player.name} is $role)" } diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/TTTScoreboard.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/TTTScoreboard.kt index bcae551..48af9b6 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/TTTScoreboard.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/game/players/TTTScoreboard.kt @@ -77,7 +77,6 @@ class TTTScoreboard(private val tttPlayer: TTTPlayer) { scoreboard.registerNewTeam(DEFAULT_TEAM_NAME).apply { setAllowFriendlyFire(true) setCanSeeFriendlyInvisibles(false) - color = ChatColor.GREEN setOption(Team.Option.COLLISION_RULE, Team.OptionStatus.ALWAYS) setOption(Team.Option.DEATH_MESSAGE_VISIBILITY, Team.OptionStatus.NEVER) setOption(Team.Option.NAME_TAG_VISIBILITY, Team.OptionStatus.NEVER) @@ -116,17 +115,14 @@ class TTTScoreboard(private val tttPlayer: TTTPlayer) { val phase = GameManager.phase if (phase === GamePhase.COMBAT) { - if (tttPlayer.role.group == TTTPlayer.RoleGroup.JACKAL || tttPlayer.role === TTTPlayer.Role.TRAITOR) { + if (tttPlayer.role.group == RoleGroup.JACKAL || tttPlayer.role === Role.TRAITOR) { val specialTeam = scoreboard.getTeam(SPECIAL_TEAM_NAME)!! specialTeam.color = tttPlayer.role.chatColor + defaultTeam.color = Role.INNOCENT.chatColor PlayerManager.tttPlayers.forEach { - val bothPlayersAreJackalGroup = - tttPlayer.role.group == TTTPlayer.RoleGroup.JACKAL && - it.role.group == TTTPlayer.RoleGroup.JACKAL - - if (bothPlayersAreJackalGroup || - (tttPlayer.role === TTTPlayer.Role.TRAITOR && it.role === TTTPlayer.Role.TRAITOR)) { + if (RoleGroup.JACKAL.bothAre(tttPlayer, it) || + RoleGroup.TRAITOR.bothAre(tttPlayer, it)) { specialTeam.addEntry(it.player.displayName) } else { defaultTeam.addEntry(it.player.displayName) diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/items/ItemManager.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/items/ItemManager.kt index 05cbcf6..ef6b0d7 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/items/ItemManager.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/items/ItemManager.kt @@ -9,12 +9,12 @@ import de.moritzruth.spigot_ttt.items.impl.CloakingDevice import de.moritzruth.spigot_ttt.items.impl.EnderPearl import de.moritzruth.spigot_ttt.items.impl.HealingPotion import de.moritzruth.spigot_ttt.items.impl.Radar -import de.moritzruth.spigot_ttt.items.weapons.guns.deagle.GoldenDeagle +import de.moritzruth.spigot_ttt.items.weapons.guns.impl.GoldenDeagle import de.moritzruth.spigot_ttt.items.weapons.guns.impl.Deagle import de.moritzruth.spigot_ttt.items.weapons.guns.impl.Glock import de.moritzruth.spigot_ttt.items.weapons.guns.impl.Pistol import de.moritzruth.spigot_ttt.items.weapons.guns.impl.Shotgun -import de.moritzruth.spigot_ttt.items.weapons.guns.pistol.Rifle +import de.moritzruth.spigot_ttt.items.weapons.guns.impl.Rifle import de.moritzruth.spigot_ttt.items.weapons.impl.BaseballBat import de.moritzruth.spigot_ttt.items.weapons.impl.Knife import de.moritzruth.spigot_ttt.plugin diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/items/TTTItem.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/items/TTTItem.kt index f72c4d1..7fca0fa 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/items/TTTItem.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/items/TTTItem.kt @@ -1,6 +1,7 @@ package de.moritzruth.spigot_ttt.items import com.comphenix.protocol.events.PacketListener +import de.moritzruth.spigot_ttt.game.players.Role import de.moritzruth.spigot_ttt.game.players.TTTPlayer import org.bukkit.entity.Item import org.bukkit.entity.Player @@ -21,7 +22,7 @@ interface DropHandler { } interface Buyable { - val buyableBy: EnumSet + val buyableBy: EnumSet val price: Int } diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/items/impl/CloakingDevice.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/items/impl/CloakingDevice.kt index 9730f83..99d6fec 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/items/impl/CloakingDevice.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/items/impl/CloakingDevice.kt @@ -1,11 +1,7 @@ package de.moritzruth.spigot_ttt.items.impl import de.moritzruth.spigot_ttt.CustomItems -import de.moritzruth.spigot_ttt.game.players.IState -import de.moritzruth.spigot_ttt.game.players.InversedStateContainer -import de.moritzruth.spigot_ttt.game.players.PlayerManager -import de.moritzruth.spigot_ttt.game.players.TTTPlayer -import de.moritzruth.spigot_ttt.game.players.TTTPlayer.Role.* +import de.moritzruth.spigot_ttt.game.players.* import de.moritzruth.spigot_ttt.items.Buyable import de.moritzruth.spigot_ttt.items.Selectable import de.moritzruth.spigot_ttt.items.TTTItem @@ -22,7 +18,6 @@ import org.bukkit.inventory.ItemFlag import org.bukkit.inventory.ItemStack import org.bukkit.potion.PotionEffect import org.bukkit.potion.PotionEffectType -import java.util.* object CloakingDevice: TTTItem, Buyable, @@ -37,7 +32,7 @@ object CloakingDevice: TTTItem, } override val type = TTTItem.Type.SPECIAL override val price = 2 - override val buyableBy = EnumSet.of(DETECTIVE, TRAITOR, JACKAL) + override val buyableBy = roles(Role.TRAITOR, Role.JACKAL) val isc = InversedStateContainer(State::class) diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/items/impl/EnderPearl.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/items/impl/EnderPearl.kt index 1c40e9a..886f641 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/items/impl/EnderPearl.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/items/impl/EnderPearl.kt @@ -1,6 +1,7 @@ package de.moritzruth.spigot_ttt.items.impl -import de.moritzruth.spigot_ttt.game.players.TTTPlayer.Role.* +import de.moritzruth.spigot_ttt.game.players.Role +import de.moritzruth.spigot_ttt.game.players.roles import de.moritzruth.spigot_ttt.items.Buyable import de.moritzruth.spigot_ttt.items.TTTItem import de.moritzruth.spigot_ttt.items.isRelevant @@ -11,14 +12,13 @@ import org.bukkit.event.EventHandler import org.bukkit.event.Listener import org.bukkit.event.entity.EntityDamageByEntityEvent import org.bukkit.inventory.ItemStack -import java.util.* object EnderPearl: TTTItem, Buyable { override val type = TTTItem.Type.SPECIAL override val itemStack = ItemStack(Material.ENDER_PEARL).applyMeta { setDisplayName("${ChatColor.DARK_GREEN}Ender Perle") } - override val buyableBy = EnumSet.of(TRAITOR, JACKAL, SIDEKICK, DETECTIVE) + override val buyableBy = roles(Role.TRAITOR, Role.JACKAL, Role.DETECTIVE) override val price = 1 override val listener = object : Listener { diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/items/impl/HealingPotion.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/items/impl/HealingPotion.kt index 15b1c6e..944bc20 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/items/impl/HealingPotion.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/items/impl/HealingPotion.kt @@ -1,7 +1,8 @@ package de.moritzruth.spigot_ttt.items.impl import de.moritzruth.spigot_ttt.game.players.PlayerManager -import de.moritzruth.spigot_ttt.game.players.TTTPlayer.Role.* +import de.moritzruth.spigot_ttt.game.players.Role +import de.moritzruth.spigot_ttt.game.players.roles import de.moritzruth.spigot_ttt.items.Buyable import de.moritzruth.spigot_ttt.items.TTTItem import de.moritzruth.spigot_ttt.items.isRelevant @@ -18,7 +19,6 @@ import org.bukkit.inventory.ItemStack import org.bukkit.inventory.meta.PotionMeta import org.bukkit.potion.PotionData import org.bukkit.potion.PotionType -import java.util.* object HealingPotion: TTTItem, Buyable { override val itemStack = ItemStack(Material.POTION).apply { @@ -35,7 +35,7 @@ object HealingPotion: TTTItem, Buyable { addItemFlags(ItemFlag.HIDE_POTION_EFFECTS) } override val type = TTTItem.Type.SPECIAL - override val buyableBy = EnumSet.of(TRAITOR, JACKAL, SIDEKICK, DETECTIVE) + override val buyableBy = roles(Role.TRAITOR, Role.JACKAL, Role.DETECTIVE) override val price = 1 override val listener = object : Listener { diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/items/impl/Radar.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/items/impl/Radar.kt index 4de3bd0..6261730 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/items/impl/Radar.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/items/impl/Radar.kt @@ -5,10 +5,7 @@ import com.comphenix.protocol.PacketType import com.comphenix.protocol.events.PacketAdapter import com.comphenix.protocol.events.PacketEvent import de.moritzruth.spigot_ttt.CustomItems -import de.moritzruth.spigot_ttt.game.players.IState -import de.moritzruth.spigot_ttt.game.players.InversedStateContainer -import de.moritzruth.spigot_ttt.game.players.PlayerManager -import de.moritzruth.spigot_ttt.game.players.TTTPlayer +import de.moritzruth.spigot_ttt.game.players.* import de.moritzruth.spigot_ttt.items.Buyable import de.moritzruth.spigot_ttt.items.TTTItem import de.moritzruth.spigot_ttt.items.isRelevant @@ -32,7 +29,7 @@ object Radar: TTTItem, Buyable { setDisplayName("${ChatColor.DARK_AQUA}${ChatColor.BOLD}Radar") } override val type = TTTItem.Type.SPECIAL - override val buyableBy = EnumSet.of(TTTPlayer.Role.TRAITOR, TTTPlayer.Role.JACKAL) + override val buyableBy: EnumSet = EnumSet.of(Role.TRAITOR, Role.DETECTIVE, Role.JACKAL) override val price = 2 val isc = InversedStateContainer(State::class) diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/items/weapons/guns/impl/GoldenDeagle.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/items/weapons/guns/impl/GoldenDeagle.kt index 518073c..b22512f 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/items/weapons/guns/impl/GoldenDeagle.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/items/weapons/guns/impl/GoldenDeagle.kt @@ -1,13 +1,12 @@ -package de.moritzruth.spigot_ttt.items.weapons.guns.deagle +package de.moritzruth.spigot_ttt.items.weapons.guns.impl import de.moritzruth.spigot_ttt.CustomItems -import de.moritzruth.spigot_ttt.game.players.TTTPlayer.Role.DETECTIVE -import de.moritzruth.spigot_ttt.game.players.TTTPlayer.Role.TRAITOR +import de.moritzruth.spigot_ttt.game.players.Role +import de.moritzruth.spigot_ttt.game.players.roles import de.moritzruth.spigot_ttt.items.Buyable import de.moritzruth.spigot_ttt.items.TTTItem import de.moritzruth.spigot_ttt.items.weapons.guns.Gun import org.bukkit.ChatColor -import java.util.* object GoldenDeagle: Gun( stateClass = State::class, @@ -18,7 +17,7 @@ object GoldenDeagle: Gun( reloadTime = 20.0, itemMaterial = CustomItems.goldenDeagle ), Buyable { - override val buyableBy = EnumSet.of(TRAITOR, DETECTIVE) + override val buyableBy = roles(Role.TRAITOR, Role.JACKAL, Role.DETECTIVE) override val price = 3 override val type = TTTItem.Type.PISTOL_LIKE diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/items/weapons/guns/impl/Rifle.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/items/weapons/guns/impl/Rifle.kt index f7899c1..4c473aa 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/items/weapons/guns/impl/Rifle.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/items/weapons/guns/impl/Rifle.kt @@ -1,4 +1,4 @@ -package de.moritzruth.spigot_ttt.items.weapons.guns.pistol +package de.moritzruth.spigot_ttt.items.weapons.guns.impl import de.moritzruth.spigot_ttt.CustomItems import de.moritzruth.spigot_ttt.items.Spawning diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/items/weapons/impl/BaseballBat.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/items/weapons/impl/BaseballBat.kt index a15b73b..a1581dc 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/items/weapons/impl/BaseballBat.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/items/weapons/impl/BaseballBat.kt @@ -1,9 +1,9 @@ package de.moritzruth.spigot_ttt.items.weapons.impl import de.moritzruth.spigot_ttt.CustomItems +import de.moritzruth.spigot_ttt.game.players.Role import de.moritzruth.spigot_ttt.game.players.TTTPlayer -import de.moritzruth.spigot_ttt.game.players.TTTPlayer.Role.JACKAL -import de.moritzruth.spigot_ttt.game.players.TTTPlayer.Role.TRAITOR +import de.moritzruth.spigot_ttt.game.players.roles import de.moritzruth.spigot_ttt.items.Buyable import de.moritzruth.spigot_ttt.items.Selectable import de.moritzruth.spigot_ttt.items.TTTItem @@ -19,7 +19,6 @@ import org.bukkit.inventory.ItemStack import org.bukkit.inventory.meta.Damageable import org.bukkit.inventory.meta.ItemMeta import org.bukkit.util.Vector -import java.util.* object BaseballBat: TTTItem, Buyable, Selectable { override val type = TTTItem.Type.MELEE @@ -35,7 +34,7 @@ object BaseballBat: TTTItem, Buyable, Selectable { ) addItemFlags(ItemFlag.HIDE_ATTRIBUTES) } - override val buyableBy = EnumSet.of(TRAITOR, JACKAL) + override val buyableBy = roles(Role.TRAITOR, Role.JACKAL) override val price = 1 override fun onSelect(tttPlayer: TTTPlayer) { diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/items/weapons/impl/Knife.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/items/weapons/impl/Knife.kt index fc75648..d376f59 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/items/weapons/impl/Knife.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/items/weapons/impl/Knife.kt @@ -1,11 +1,7 @@ package de.moritzruth.spigot_ttt.items.weapons.impl import de.moritzruth.spigot_ttt.CustomItems -import de.moritzruth.spigot_ttt.game.players.DamageInfo -import de.moritzruth.spigot_ttt.game.players.DeathReason -import de.moritzruth.spigot_ttt.game.players.PlayerManager -import de.moritzruth.spigot_ttt.game.players.TTTPlayer -import de.moritzruth.spigot_ttt.game.players.TTTPlayer.Role.TRAITOR +import de.moritzruth.spigot_ttt.game.players.* import de.moritzruth.spigot_ttt.items.Buyable import de.moritzruth.spigot_ttt.items.TTTItem import de.moritzruth.spigot_ttt.items.isRelevant @@ -20,7 +16,6 @@ import org.bukkit.inventory.ItemFlag import org.bukkit.inventory.ItemStack import org.bukkit.inventory.meta.Damageable import org.bukkit.inventory.meta.ItemMeta -import java.util.* object Knife: TTTItem, Buyable { override val itemStack = ItemStack(CustomItems.knife).applyMeta { @@ -34,7 +29,7 @@ object Knife: TTTItem, Buyable { ) addItemFlags(ItemFlag.HIDE_ATTRIBUTES) } - override val buyableBy: EnumSet = EnumSet.of(TRAITOR) + override val buyableBy = roles(Role.TRAITOR, Role.JACKAL) override val price = 1 override val type = TTTItem.Type.MELEE