mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-02-05 02:01:01 +00:00
152 lines
6.8 KiB
Scala
152 lines
6.8 KiB
Scala
// Copyright (c) 2017 PSForever
|
|
package objects
|
|
|
|
import net.psforever.objects._
|
|
import net.psforever.objects.loadouts._
|
|
import net.psforever.types.{CharacterGender, ExoSuitType, PlanetSideEmpire}
|
|
import net.psforever.objects.GlobalDefinitions._
|
|
import org.specs2.mutable._
|
|
|
|
class LoadoutTest extends Specification {
|
|
val avatar = Avatar("TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 41, 1)
|
|
|
|
def CreatePlayer() : Player = {
|
|
new Player(avatar) {
|
|
Slot(0).Equipment = Tool(beamer)
|
|
Slot(2).Equipment = Tool(suppressor)
|
|
Slot(4).Equipment = Tool(forceblade)
|
|
Slot(6).Equipment = ConstructionItem(ace)
|
|
Slot(9).Equipment = AmmoBox(bullet_9mm)
|
|
Slot(12).Equipment = AmmoBox(bullet_9mm)
|
|
Slot(33).Equipment = Kit(medkit)
|
|
Slot(39).Equipment = SimpleItem(remote_electronics_kit)
|
|
}
|
|
}
|
|
|
|
"test sample player" in {
|
|
val player = CreatePlayer()
|
|
player.Holsters()(0).Equipment.get.Definition mustEqual beamer
|
|
player.Holsters()(2).Equipment.get.Definition mustEqual suppressor
|
|
player.Holsters()(4).Equipment.get.Definition mustEqual forceblade
|
|
player.Slot(6).Equipment.get.Definition mustEqual ace
|
|
player.Slot(9).Equipment.get.Definition mustEqual bullet_9mm
|
|
player.Slot(12).Equipment.get.Definition mustEqual bullet_9mm
|
|
player.Slot(33).Equipment.get.Definition mustEqual medkit
|
|
player.Slot(39).Equipment.get.Definition mustEqual remote_electronics_kit
|
|
}
|
|
|
|
"create a loadout that contains a player's inventory" in {
|
|
val player = CreatePlayer()
|
|
val obj = Loadout.Create(player, "test").asInstanceOf[InfantryLoadout]
|
|
|
|
obj.label mustEqual "test"
|
|
obj.exosuit mustEqual ExoSuitType.Standard
|
|
obj.subtype mustEqual 0
|
|
|
|
obj.visible_slots.length mustEqual 3
|
|
val holsters = obj.visible_slots.sortBy(_.index)
|
|
holsters.head.index mustEqual 0
|
|
holsters.head.item.asInstanceOf[Loadout.ShorthandTool].definition mustEqual beamer
|
|
holsters(1).index mustEqual 2
|
|
holsters(1).item.asInstanceOf[Loadout.ShorthandTool].definition mustEqual suppressor
|
|
holsters(2).index mustEqual 4
|
|
holsters(2).item.asInstanceOf[Loadout.ShorthandTool].definition mustEqual forceblade
|
|
|
|
obj.inventory.length mustEqual 5
|
|
val inventory = obj.inventory.sortBy(_.index)
|
|
inventory.head.index mustEqual 6
|
|
inventory.head.item.asInstanceOf[Loadout.ShorthandConstructionItem].definition mustEqual ace
|
|
inventory(1).index mustEqual 9
|
|
inventory(1).item.asInstanceOf[Loadout.ShorthandAmmoBox].definition mustEqual bullet_9mm
|
|
inventory(2).index mustEqual 12
|
|
inventory(2).item.asInstanceOf[Loadout.ShorthandAmmoBox].definition mustEqual bullet_9mm
|
|
inventory(3).index mustEqual 33
|
|
inventory(3).item.asInstanceOf[Loadout.ShorthandKit].definition mustEqual medkit
|
|
inventory(4).index mustEqual 39
|
|
inventory(4).item.asInstanceOf[Loadout.ShorthandSimpleItem].definition mustEqual remote_electronics_kit
|
|
}
|
|
|
|
"create a loadout that contains a vehicle's inventory" in {
|
|
val vehicle = Vehicle(mediumtransport)
|
|
vehicle.Inventory += 30 -> AmmoBox(bullet_9mm)
|
|
vehicle.Inventory += 33 -> AmmoBox(bullet_9mm_AP)
|
|
val obj = Loadout.Create(vehicle, "test").asInstanceOf[VehicleLoadout]
|
|
|
|
obj.label mustEqual "test"
|
|
obj.vehicle_definition mustEqual mediumtransport
|
|
|
|
obj.visible_slots.length mustEqual 2
|
|
val holsters = obj.visible_slots.sortBy(_.index)
|
|
holsters.head.index mustEqual 5
|
|
holsters.head.item.asInstanceOf[Loadout.ShorthandTool].definition mustEqual mediumtransport_weapon_systemA
|
|
holsters(1).index mustEqual 6
|
|
holsters(1).item.asInstanceOf[Loadout.ShorthandTool].definition mustEqual mediumtransport_weapon_systemB
|
|
|
|
obj.inventory.length mustEqual 2
|
|
val inventory = obj.inventory.sortBy(_.index)
|
|
inventory.head.index mustEqual 30
|
|
inventory.head.item.asInstanceOf[Loadout.ShorthandAmmoBox].definition mustEqual bullet_9mm
|
|
inventory(1).index mustEqual 33
|
|
inventory(1).item.asInstanceOf[Loadout.ShorthandAmmoBox].definition mustEqual bullet_9mm_AP
|
|
}
|
|
|
|
"distinguish MAX subtype information" in {
|
|
val player = CreatePlayer()
|
|
val slot = player.Slot(0)
|
|
slot.Equipment = None //only an unequipped slot can have its Equipment Size changed (Rifle -> Max)
|
|
player.ExoSuit = ExoSuitType.MAX
|
|
|
|
val ldout1 = Loadout.Create(player, "weaponless").asInstanceOf[InfantryLoadout]
|
|
slot.Equipment = None
|
|
slot.Equipment = Tool(trhev_dualcycler)
|
|
val ldout2 = Loadout.Create(player, "cycler").asInstanceOf[InfantryLoadout]
|
|
slot.Equipment = None
|
|
slot.Equipment = Tool(trhev_pounder)
|
|
val ldout3 = Loadout.Create(player, "pounder").asInstanceOf[InfantryLoadout]
|
|
slot.Equipment = None
|
|
slot.Equipment = Tool(trhev_burster)
|
|
val ldout4 = Loadout.Create(player, "burster").asInstanceOf[InfantryLoadout]
|
|
|
|
ldout1.subtype mustEqual 0
|
|
ldout2.subtype mustEqual 1
|
|
ldout3.subtype mustEqual 2
|
|
ldout4.subtype mustEqual InfantryLoadout.DetermineSubtype(player) //example
|
|
}
|
|
|
|
"players have additional uniform subtype" in {
|
|
val player = CreatePlayer()
|
|
val slot = player.Slot(0)
|
|
slot.Equipment = None //only an unequipped slot can have its Equipment Size changed (Rifle -> Max)
|
|
|
|
player.ExoSuit = ExoSuitType.Standard
|
|
val ldout0 = Loadout.Create(player, "standard").asInstanceOf[InfantryLoadout]
|
|
player.ExoSuit = ExoSuitType.Agile
|
|
val ldout1 = Loadout.Create(player, "agile").asInstanceOf[InfantryLoadout]
|
|
player.ExoSuit = ExoSuitType.Reinforced
|
|
val ldout2 = Loadout.Create(player, "rein").asInstanceOf[InfantryLoadout]
|
|
player.ExoSuit = ExoSuitType.Infiltration
|
|
val ldout7 = Loadout.Create(player, "inf").asInstanceOf[InfantryLoadout]
|
|
|
|
player.ExoSuit = ExoSuitType.MAX
|
|
val ldout3 = Loadout.Create(player, "weaponless").asInstanceOf[InfantryLoadout]
|
|
slot.Equipment = None
|
|
slot.Equipment = Tool(trhev_dualcycler)
|
|
val ldout4 = Loadout.Create(player, "cycler").asInstanceOf[InfantryLoadout]
|
|
slot.Equipment = None
|
|
slot.Equipment = Tool(trhev_pounder)
|
|
val ldout5 = Loadout.Create(player, "pounder").asInstanceOf[InfantryLoadout]
|
|
slot.Equipment = None
|
|
slot.Equipment = Tool(trhev_burster)
|
|
val ldout6 = Loadout.Create(player, "burster").asInstanceOf[InfantryLoadout]
|
|
|
|
InfantryLoadout.DetermineSubtypeB(ldout0.exosuit, ldout0.subtype) mustEqual 0
|
|
InfantryLoadout.DetermineSubtypeB(ldout1.exosuit, ldout1.subtype) mustEqual 1
|
|
InfantryLoadout.DetermineSubtypeB(ldout2.exosuit, ldout2.subtype) mustEqual 2
|
|
InfantryLoadout.DetermineSubtypeB(ldout3.exosuit, ldout3.subtype) mustEqual 3
|
|
InfantryLoadout.DetermineSubtypeB(ldout4.exosuit, ldout4.subtype) mustEqual 4
|
|
InfantryLoadout.DetermineSubtypeB(ldout5.exosuit, ldout5.subtype) mustEqual 5
|
|
InfantryLoadout.DetermineSubtypeB(ldout6.exosuit, ldout6.subtype) mustEqual 6
|
|
InfantryLoadout.DetermineSubtypeB(ldout7.exosuit, ldout7.subtype) mustEqual 7
|
|
}
|
|
}
|