mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2026-08-23 03:15:10 -06:00
Polishing invite interfaces
This commit is contained in:
parent
0d157b39dd
commit
ee1793dfaf
5 changed files with 83 additions and 39 deletions
|
|
@ -2,7 +2,7 @@ package content.minigame.barbassault
|
|||
|
||||
import core.game.node.entity.player.Player
|
||||
|
||||
enum class BarbRole { ATTACKER, DEFENDER, COLLECTOR, HEALER }
|
||||
enum class BarbRole { ATTACKER, COLLECTOR,DEFENDER, HEALER }
|
||||
data class BarbAssaultPoints( val atk: Int = 0, val col: Int = 0, val def: Int = 0, val heal: Int = 0) {
|
||||
val total: Int get() = atk + col + def + heal
|
||||
fun hasEnough(cost: BarbAssaultPoints): Boolean = atk >= cost.atk && col >= cost.col && def >= cost.def && heal >= cost.heal
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import content.minigame.barbassault.BarbassaultTut
|
|||
import content.minigame.barbassault.BarbassaultTut.Companion.TutorialItemSpawn
|
||||
import content.minigame.barbassault.arena.BaHornSystem.HornHelper.getHealerHorn
|
||||
import content.minigame.barbassault.arena.scenery.DefenderTrap
|
||||
import content.minigame.barbassault.getBarbLevels
|
||||
import content.minigame.barbassault.lobby.baSession
|
||||
import core.api.*
|
||||
import core.game.global.action.DropListener
|
||||
|
|
@ -150,6 +151,7 @@ class BarbassaultGameArea : InteractionListener, MapArea {
|
|||
}
|
||||
|
||||
on(Scenery.HEALER_SPRING_20150, IntType.SCENERY, "Take-from") { player, _ ->
|
||||
val healLevel = player.getBarbLevels().heal
|
||||
//emote 5400
|
||||
/* HEALING_VIAL_10546 -- empty
|
||||
HEALING_VIAL1_10545 // 1
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package content.minigame.barbassault.lobby
|
|||
|
||||
import content.minigame.barbassault.BarbRole
|
||||
import content.minigame.barbassault.lobby.BarbTeamManager.abandonTeam
|
||||
import content.minigame.barbassault.lobby.BarbTeamManager.joinTeam
|
||||
import content.minigame.barbassault.lobby.CurrentTeam.ROLE_MODEL_MAP
|
||||
import content.minigame.barbassault.lobby.CurrentTeam.modelZoom
|
||||
import core.api.closeInterface
|
||||
|
|
@ -17,6 +18,7 @@ import core.plugin.Plugin
|
|||
|
||||
@Initializable
|
||||
class AcceptRoleInterface : ComponentPlugin() {
|
||||
private var waitingStatus = true
|
||||
override fun newInstance(arg: Any?): Plugin<Any> {
|
||||
ComponentDefinition.forId(AcceptRole.ID).plugin = this
|
||||
return this
|
||||
|
|
@ -59,35 +61,67 @@ class AcceptRoleInterface : ComponentPlugin() {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private fun handleAccept(player: Player?) {
|
||||
sendMessage(player!!,"Accepted Clicked")
|
||||
return
|
||||
}
|
||||
private fun handleDecline(player: Player?) {
|
||||
if (player == null) return
|
||||
closeInterface(player)
|
||||
val leader = player.baSession?.team?.getLeader()?.player
|
||||
if (leader != null && leader != player) {
|
||||
private fun handleAccept(player: Player?) {
|
||||
val team = player?.baSession?.team
|
||||
val recruit = team?.recruit
|
||||
val selectedRole = recruit?.role ?: return
|
||||
val roleName = selectedRole.name.lowercase().replaceFirstChar { it.uppercase() }
|
||||
val rPlayer = recruit.player
|
||||
if (!recruit.accept) {
|
||||
sendMessage(player,"the other player hasn't confirmed their role yet.")
|
||||
return
|
||||
}
|
||||
if (joinTeam(rPlayer, selectedRole)) {
|
||||
rPlayer.sendMessage("You have joined as ${roleName}.")
|
||||
team.recruit = null
|
||||
closeInterface(player)
|
||||
}
|
||||
return
|
||||
}
|
||||
private fun handleDecline(player: Player?) {
|
||||
closeInterface(player!!)
|
||||
/**
|
||||
val leader = player.baSession?.team?.getLeader()?.player
|
||||
if (leader != null && leader != player) {
|
||||
closeInterface(leader)
|
||||
}**/
|
||||
}
|
||||
private fun handleRemove(player: Player, slotIndex: Int){
|
||||
val team = player.baSession?.team
|
||||
val follower = team?.getSlot(slotIndex)?.player ?: return
|
||||
val uiSlot = AcceptRole.team[slotIndex]
|
||||
|
||||
sendMessage(player,"You removed the person from the team.")
|
||||
setInterfaceText(player, AcceptRole.defaultText, AcceptRole.ID,uiSlot.name )
|
||||
setInterfaceText(player, AcceptRole.defaultText, AcceptRole.ID,uiSlot.role )
|
||||
setInterfaceText(player, "0", AcceptRole.ID,uiSlot.wave )
|
||||
|
||||
abandonTeam(follower)
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun updateRecruitData(player: Player?){
|
||||
val team = player?.baSession?.team
|
||||
val leader = team?.getLeader()?.player ?: return
|
||||
val recruit = team.recruit
|
||||
val displayName = recruit?.role?.name?.lowercase()?.replaceFirstChar { it.uppercase() } ?: "Unknown"
|
||||
val level = recruit?.roleLevel()
|
||||
setInterfaceText(leader!!, displayName, AcceptRole.ID,AcceptRole.Status.selectedRole )
|
||||
setInterfaceText(leader, level.toString(), AcceptRole.ID,AcceptRole.Status.levelRole )
|
||||
}
|
||||
fun resetWaitingStatus(player: Player?){
|
||||
val leader = player?.baSession?.team?.getLeader()?.player
|
||||
setInterfaceText(leader!!, AcceptRole.waiting, AcceptRole.ID,AcceptRole.Status.selectedRole )
|
||||
setInterfaceText(leader, AcceptRole.waiting, AcceptRole.ID,AcceptRole.Status.levelRole )
|
||||
}
|
||||
}
|
||||
}
|
||||
private fun handleRemove(player: Player, slotIndex: Int){
|
||||
val team = player.baSession?.team
|
||||
val follower = team?.getSlot(slotIndex)?.player ?: return
|
||||
val uiSlot = AcceptRole.team[slotIndex]
|
||||
|
||||
sendMessage(player,"You removed the person from the team.")
|
||||
setInterfaceText(player, AcceptRole.defaultText, AcceptRole.ID,uiSlot.name )
|
||||
setInterfaceText(player, AcceptRole.defaultText, AcceptRole.ID,uiSlot.role )
|
||||
setInterfaceText(player, "0", AcceptRole.ID,uiSlot.wave )
|
||||
|
||||
abandonTeam(follower)
|
||||
}
|
||||
|
||||
object AcceptRole {
|
||||
const val ID = 492
|
||||
const val defaultText = "none set"
|
||||
const val waiting = "Waiting ..."
|
||||
const val AcceptButtonText = 4
|
||||
const val DeclineButtonText = 2
|
||||
const val AcceptButton = 35
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import content.minigame.barbassault.BarbRole
|
|||
import content.minigame.barbassault.BarbassaultActivity
|
||||
import content.minigame.barbassault.arena.BarbassaultSession
|
||||
import content.minigame.barbassault.arena.BarbassaultState
|
||||
import content.minigame.barbassault.getBarbLevels
|
||||
import core.api.clearLogoutListener
|
||||
import core.api.sendMessage
|
||||
import core.game.node.entity.player.Player
|
||||
|
|
@ -37,7 +38,16 @@ var Player.team: BarbTeam?
|
|||
}*/
|
||||
|
||||
data class PartySlot( val index: Int, val player: Player, var role: BarbRole? = null )
|
||||
data class PendingRecruit( var player: Player, var role: BarbRole? = null )
|
||||
data class PendingRecruit( var player: Player, var role: BarbRole? = null,var accept:Boolean = false ) {
|
||||
fun roleLevel(): Int = when (role) {
|
||||
BarbRole.ATTACKER -> player.getBarbLevels().atk
|
||||
BarbRole.COLLECTOR -> player.getBarbLevels().col
|
||||
BarbRole.DEFENDER -> player.getBarbLevels().def
|
||||
BarbRole.HEALER -> player.getBarbLevels().heal
|
||||
null -> 1
|
||||
}
|
||||
}
|
||||
|
||||
private val PartySpawns = arrayOf(30 to 18, 29 to 17, 31 to 17, 28 to 16, 32 to 16)
|
||||
|
||||
class BarbTeam(val session: BarbassaultSession, leader: Player) {
|
||||
|
|
@ -164,7 +174,7 @@ object BarbTeamManager {
|
|||
}
|
||||
|
||||
fun disbandTeam(session: BarbassaultSession) {
|
||||
val team = session.team ?: return
|
||||
val team = session.team
|
||||
|
||||
team.allPlayers().forEach {
|
||||
it.sendMessage("Your leader has left the room and therefore cleared the team!")
|
||||
|
|
@ -179,7 +189,7 @@ object BarbTeamManager {
|
|||
|
||||
fun joinTeam(player: Player, role: BarbRole): Boolean {
|
||||
val session = player.baSession ?: return false
|
||||
val team = session.team ?: return false
|
||||
val team = session.team
|
||||
team.recruit = null
|
||||
if (!team.addPlayer(player)) {
|
||||
player.sendMessage("That party is full.")
|
||||
|
|
@ -196,7 +206,7 @@ object BarbTeamManager {
|
|||
|
||||
fun abandonTeam(player: Player) {
|
||||
val session = player.baSession ?: return
|
||||
val team = session.team ?: return
|
||||
val team = session.team
|
||||
if (team.isLeader(player)) {
|
||||
disbandTeam(session)
|
||||
return
|
||||
|
|
@ -212,14 +222,6 @@ object BarbTeamManager {
|
|||
updateCurrentTeam(it)
|
||||
}
|
||||
}
|
||||
fun acceptInvite(player: Player, role: BarbRole) {
|
||||
val session = player.baSession ?: return
|
||||
val team = session.team ?: return
|
||||
val recruit = team.recruit ?: return
|
||||
if (recruit.player != player) return
|
||||
joinTeam(player, role)
|
||||
team.recruit = null
|
||||
}
|
||||
}
|
||||
|
||||
//Leader leaving room and causing disband "Your leader has left the room and therefore cleared the team!"
|
||||
|
|
|
|||
|
|
@ -51,14 +51,17 @@ class RoleSelectInterface : ComponentPlugin() {
|
|||
if (player == null) return true
|
||||
val team = player.baSession?.team;
|
||||
val pending = team?.recruit ?: return true
|
||||
var waitingSelected: BarbRole? = null
|
||||
|
||||
when (button) {
|
||||
SelectRole.AcceptButton, SelectRole.AcceptButtonText -> {
|
||||
val selectedRole = pending.role
|
||||
val selectedRoleName = selectedRole?.name?.lowercase()?.replaceFirstChar { it.uppercase() }
|
||||
if (selectedRole != null) {
|
||||
joinTeam(pending.player, selectedRole)
|
||||
player.sendMessage("You have joined as ${selectedRole.name}.")
|
||||
team.recruit = null
|
||||
waitingSelected = selectedRole
|
||||
AcceptRoleInterface.updateRecruitData(player)
|
||||
if (!pending.accept) {team.getLeader()?.player?.sendMessages("The applicant has chosen $selectedRoleName")}
|
||||
pending.accept = true
|
||||
} else {
|
||||
player.sendMessage("You must select a role first!")
|
||||
}
|
||||
|
|
@ -73,10 +76,13 @@ class RoleSelectInterface : ComponentPlugin() {
|
|||
val clickedSelectRole = buttonRoleMap[button]
|
||||
if (clickedSelectRole != null && clickedSelectRole.isActive) {
|
||||
pending.role = selectRoleToBarbRole[clickedSelectRole]
|
||||
if (pending.role != waitingSelected ) {
|
||||
pending.accept = false
|
||||
AcceptRoleInterface.resetWaitingStatus(player)
|
||||
}
|
||||
|
||||
val displayName = pending.role?.name ?: "Unknown"
|
||||
val displayName = pending.role?.name?.capitalizeWords() ?: "Unknown"
|
||||
setInterfaceText(player, displayName, SelectRole.ID, SelectRole.Status.CurrentRole)
|
||||
|
||||
selectedButton = button
|
||||
} else {
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue