new stuff for player server classes; this update is not yet complete
adjusted sample Reload code and added insertion and removal functions for inventory
more work on player classes; moving PacketResolution to another branch
decoupling GUIDs from objects; introduced Ammo enum; minor adjustments to inventory system; different object/class hierarchy
transferring basic files from another branch
converted from get/set to accessor/mutator; resolved conflict from name changes
refactored basic components such as GUID and location/orientation
utilities kludge; more fields are given accessor and mutators; create package for vehicle-specific classes
GUID assurance, now with less object creation
test files; changes to how AmmoBox initializes
sorry, a little bit of everything, so much I forgot to write it all down
switched to a unified fire mode object internal to a Tool
importing a heavily modified version of my GUID manager objects from the laternate branch; not finished or tested yet
created a Trait to make Key private, sources and selectors to allow NumberPools to exist independent of a NumberSource; placed Ascending into a misc folder
swapped the Return methods for selectors so that the more primitive logic is the one that needs to be overriden; renamed a selector to be more common; had to update some copyright messages
fixed major logic issue with NumberPool; added comments to NumberSource files
NumberSource tests
simplified and made more consistent the method naming convention of NumberSources
comments for NumberSelectors
starting on NumberSelector tests
modifications that should better support number pools; added a pool hub that acts on a predefined source
adjustment to how Tools and FireModeDefintion keep track of ammunition and ammunition slots; I don't think this is sufficient
small additions to Tools; filled out simple tests for other three Selectors
added object lookup notation for the pool hub
added more NumberSelector tests; removed the word 'Number' from subclass names
re-named classes, re-packaged classes, re-named packages; created new Selector, split pools to create a fallback for the NumberPoolHub
changes to NumberPool classes; tests on NumberPool classes
changes to NumberPool classes; tests on NumberPool classes2
some robust testing for NumberPoolHub, plus necessary modifications to other files
register and unregister functions now use Success and Failure conditions, save for one true thrown Exception
reduced the flow of certain algorithm chains, mainly by adding match statements and removing Exceptions
error message text
the same thing as the last commit, but with NumberPools rather than NumberPoolHub
various types of freeform registration
added sorting functions to Selectors to allow for hotswapping for number pools, especially to and from SpecificSelector; tests for NumberPoolHub
get numbers from an Array of indices, not the list of Numbers, in SimplePool
added a class to represent the four types of recovery kits
comments on Kit files
created package for supporting equipment classes; renamed /definition/ package
adding class for items that construct deployables, the router telepad included
added SimpleItem, classes for game Equipment that do not have internal state; re-organized ObjectDefinition files and the game objects they create to more naturally move around EquipmentSize and InventoryTile (size)
added SimpleItem tests (what they are...); removed example code that has hogging an import from AmmoBox
auto-sort for loading and fitting former inventory content back into the inventory
method of finding first available position to fit an certain size block in the inventory
changed CheckCollision return type to provide Try[List[Int]; fixed all existing references and tests
wrote comments for GridInventory methods; changed insertion param to be of form 'key -> element'
adding features to Player; created definitions for Player class; re-grouped ConstructionItem enumerations
initial work on implants; shuffled classes to better accommodate the new implant system, I think
wrote some tests for Implants; fixing Implant logic
wrote tests for Player class and made adjustments where necessary
basic initialization during Player creation based on exo-suit type
three wrapper Actors for the normal classes
comments on code
modified tests to improve accountability; added Resolver class to deal with multiple tasks that contribute to a larger task
changed Tools to an internal AmmoBox; don't have to def -= symbol if I def _= symbol
LivePlayerList -> MasterPlayerList, and added a Fit def for Player that checks holsters as well as inventory
example of packet conversion can be found with AmmoBoxDefinition
added conversion for ToolDefinition
added all Equipment packet conversion functionality; started working on Avatar-related conversions
continued effort towards a working Player packet conversion test
subclasses of Equipment apparently do not need to overide the type of the PacketConverter for generics
the logical conclusion: it doesn't matter what generics Packet returns so long as it returns an ObjectCreateConverter[] type
separated converters from definitions into files
changed some configuration information to final; added a bunch of converters, not fully tested though
changed function names in converters
replaced WSA packet-driven OCDM with Player object OCDM; upgrade to Float angular data
added partial support for LockerContainer; changed Equipment defaults to a common value
changes to AvatarConverter to include 5th slot; changes to VehicleConverter to make work; implementation of Fury in Vehicle->packet example in WSA
added a seat definition and renovated how the weapon controlled from a seat can be found
comments to files mainly; non-essential functionality to some classes, mostly access determination
moved converter tests to their own test file
write more of this test
added ServiceManager, as it is useful
pool range changes
added AvatarService, as it is useful
straightened out the GUID actors; added the static method for adding AmmoBoxes (to be converted later)
chnages to task resolution operation
complicated Task and TaskResolver logic is now possible; for example, you can schedule giving an AmmoBox a GUID, before giving a Tool a GUID, before placing the Tool in a player's hand; see Suppressor example in WSA
separated the Task trait and the TaskResolver actor into their own classes, moving the former RegistrationTaskResolver class into the /misc/ folder; deleted old backup copy of HubActor; modifications for PoC and supported tests
added better support and protection against putting things in the wrong hand when using inventories and the Player.Slot(n) function
GlobalDefinitions file; added laze pointer as an SItem, and gave it the command detonater management code; additionally fixed spelling of 'detonat[o]r' in Codec; early Terminal class work
updated tests to GlobalDefinitions entries; Terminal works but I don't like it
played with GUID pooling workflow, though to little avail; modifications to Terminal purchasing workflow, but still very volatile
modified NumberPoolActor and NumberPoolAccessor to make them more straightforward and not use akka ask as a go-between
fixed recovery options so that they do not cause more messages
trailing newline
InventoryItem (packet data) renamed InventoryItemData to remove ambiguity; Terminal functionality improved, allowing for swapping of exo-suits and the restoration of equipment positions
remove yet-unsupported Terminal messaging
made Terminal message more specific; can now put equipment into empty slot on exo-suit change; should report changes better
re-organized function calls to preserved items removed from holster slots on exo-suit change
moved predicate to the end of the list of params for recoverInventory so that repetition can be eliminated and a default value can be assigned
issues with making Tool; committing changes before revert of NumberPoolActor and NumberPoolAccessorActor to see if those broke it
a necessary evil, the reverting of these two Actors; subtask resolution does not work unless I do so, for now
restored the registration portion of tasking back to where it previously was (and better?)
NumberPoolActor and the ...AccessorActor are back to a comfortable place (and better?)
re-draw object in hand when switching exo-suits; build AmmoBoxes for Tool during Terminal-controlled creation, not Tool-controlled creation
order of task cleanup reversed to avoid index mismatch; added itsm to TerminalDefinition
common 5x5 AmmoBox size; added vehicle weapon ammo boxes to terminal
added error catching messages; stopped odd double-registering issue early
resolved issue where multiple subtasks started their main task multiple times; added checks that an object does not register a new GUID when it already has one
wrote unregistration code for Selling items back through the Terminal, repairing logic along the way; also, wrote a top-level GUID find for the Player for use of MoveItem
added framework for starting on Loadouts; managed issue with parent tasks starting before being summoned by child subtasks, often resulting in the complete skip of the execution phase of the parent; refactored registration tasks in WSA
modified Tool structure, exposing the AmmoSlot list a bit more
stuff stuff Tool ammo slot changes to default and comments
basic loadout framework for Infantry; need to integrate
initial work on FavoritesRequest packet
tests for FavoritesRequest packet
increased size of number pool for testing; wrote an algorithm that translates to and from the simplified version of objects stored in loadouts
refactored the tasking for adding Equipment and removing Equipment
updated the inventory so the Map of items does not have to rely on the GUID of an item being set before the item is inserted
untested routine for registering a player character; pushing all changes before making significant changes to the client init code structure
added to comments of BeginZoningMessage; transitioned player through and initial step of a more proper login GUID association
the current avatar is properly registered and there is something of a workflow with the messages and packets
corrected another bit of logic where inventories used to be indexed by object GUID in AvatarConverter; reversed unregister-remove task sequence such that GUID-less object is not allowed to exist in a stable object hierarchy
working Loadout loading
added identification functions to GlobalDefinitions; echo ObjectDelete back to client
accidentally got rid of something in WSA, but now restored; adding extra details to Terminal operations
separated Terminal into separate files and moved files into their own package under \objects\ for now; can delete loadouts now in WSA
better handling of ReloadMessage and MoveItemMessage
framework for better support involving dropping and picking up items
code comments and small modifications, such as the location and structure of the Terminal Equipment definitions
wrote comments in GlobalDefinitions; modified code so that a primitive form of player synchronization now occurs for future testing
added code to display already-dropped Equipment on the ground; limitations are explained; moved TaskResolver to more a global location, though I don't know if that helps
modified avatar unregister logic to ensure vacating player is deleted from other clients 'properly'
more comments; improved checks for MoveItemMessage; squared distances as necessary
subtle changes to login scripting so that test character is always offered
re-organizing the functions in WSA so that only the local objects separate the two message processing blocks
2017-05-30 18:46:01 -04:00
|
|
|
// Copyright (c) 2017 PSForever
|
|
|
|
|
package objects
|
|
|
|
|
|
2018-03-24 00:28:02 -04:00
|
|
|
import net.psforever.objects.GlobalDefinitions._
|
2017-12-05 00:37:24 -05:00
|
|
|
import net.psforever.objects._
|
2018-03-24 00:28:02 -04:00
|
|
|
import net.psforever.objects.definition.{ImplantDefinition, SimpleItemDefinition}
|
new stuff for player server classes; this update is not yet complete
adjusted sample Reload code and added insertion and removal functions for inventory
more work on player classes; moving PacketResolution to another branch
decoupling GUIDs from objects; introduced Ammo enum; minor adjustments to inventory system; different object/class hierarchy
transferring basic files from another branch
converted from get/set to accessor/mutator; resolved conflict from name changes
refactored basic components such as GUID and location/orientation
utilities kludge; more fields are given accessor and mutators; create package for vehicle-specific classes
GUID assurance, now with less object creation
test files; changes to how AmmoBox initializes
sorry, a little bit of everything, so much I forgot to write it all down
switched to a unified fire mode object internal to a Tool
importing a heavily modified version of my GUID manager objects from the laternate branch; not finished or tested yet
created a Trait to make Key private, sources and selectors to allow NumberPools to exist independent of a NumberSource; placed Ascending into a misc folder
swapped the Return methods for selectors so that the more primitive logic is the one that needs to be overriden; renamed a selector to be more common; had to update some copyright messages
fixed major logic issue with NumberPool; added comments to NumberSource files
NumberSource tests
simplified and made more consistent the method naming convention of NumberSources
comments for NumberSelectors
starting on NumberSelector tests
modifications that should better support number pools; added a pool hub that acts on a predefined source
adjustment to how Tools and FireModeDefintion keep track of ammunition and ammunition slots; I don't think this is sufficient
small additions to Tools; filled out simple tests for other three Selectors
added object lookup notation for the pool hub
added more NumberSelector tests; removed the word 'Number' from subclass names
re-named classes, re-packaged classes, re-named packages; created new Selector, split pools to create a fallback for the NumberPoolHub
changes to NumberPool classes; tests on NumberPool classes
changes to NumberPool classes; tests on NumberPool classes2
some robust testing for NumberPoolHub, plus necessary modifications to other files
register and unregister functions now use Success and Failure conditions, save for one true thrown Exception
reduced the flow of certain algorithm chains, mainly by adding match statements and removing Exceptions
error message text
the same thing as the last commit, but with NumberPools rather than NumberPoolHub
various types of freeform registration
added sorting functions to Selectors to allow for hotswapping for number pools, especially to and from SpecificSelector; tests for NumberPoolHub
get numbers from an Array of indices, not the list of Numbers, in SimplePool
added a class to represent the four types of recovery kits
comments on Kit files
created package for supporting equipment classes; renamed /definition/ package
adding class for items that construct deployables, the router telepad included
added SimpleItem, classes for game Equipment that do not have internal state; re-organized ObjectDefinition files and the game objects they create to more naturally move around EquipmentSize and InventoryTile (size)
added SimpleItem tests (what they are...); removed example code that has hogging an import from AmmoBox
auto-sort for loading and fitting former inventory content back into the inventory
method of finding first available position to fit an certain size block in the inventory
changed CheckCollision return type to provide Try[List[Int]; fixed all existing references and tests
wrote comments for GridInventory methods; changed insertion param to be of form 'key -> element'
adding features to Player; created definitions for Player class; re-grouped ConstructionItem enumerations
initial work on implants; shuffled classes to better accommodate the new implant system, I think
wrote some tests for Implants; fixing Implant logic
wrote tests for Player class and made adjustments where necessary
basic initialization during Player creation based on exo-suit type
three wrapper Actors for the normal classes
comments on code
modified tests to improve accountability; added Resolver class to deal with multiple tasks that contribute to a larger task
changed Tools to an internal AmmoBox; don't have to def -= symbol if I def _= symbol
LivePlayerList -> MasterPlayerList, and added a Fit def for Player that checks holsters as well as inventory
example of packet conversion can be found with AmmoBoxDefinition
added conversion for ToolDefinition
added all Equipment packet conversion functionality; started working on Avatar-related conversions
continued effort towards a working Player packet conversion test
subclasses of Equipment apparently do not need to overide the type of the PacketConverter for generics
the logical conclusion: it doesn't matter what generics Packet returns so long as it returns an ObjectCreateConverter[] type
separated converters from definitions into files
changed some configuration information to final; added a bunch of converters, not fully tested though
changed function names in converters
replaced WSA packet-driven OCDM with Player object OCDM; upgrade to Float angular data
added partial support for LockerContainer; changed Equipment defaults to a common value
changes to AvatarConverter to include 5th slot; changes to VehicleConverter to make work; implementation of Fury in Vehicle->packet example in WSA
added a seat definition and renovated how the weapon controlled from a seat can be found
comments to files mainly; non-essential functionality to some classes, mostly access determination
moved converter tests to their own test file
write more of this test
added ServiceManager, as it is useful
pool range changes
added AvatarService, as it is useful
straightened out the GUID actors; added the static method for adding AmmoBoxes (to be converted later)
chnages to task resolution operation
complicated Task and TaskResolver logic is now possible; for example, you can schedule giving an AmmoBox a GUID, before giving a Tool a GUID, before placing the Tool in a player's hand; see Suppressor example in WSA
separated the Task trait and the TaskResolver actor into their own classes, moving the former RegistrationTaskResolver class into the /misc/ folder; deleted old backup copy of HubActor; modifications for PoC and supported tests
added better support and protection against putting things in the wrong hand when using inventories and the Player.Slot(n) function
GlobalDefinitions file; added laze pointer as an SItem, and gave it the command detonater management code; additionally fixed spelling of 'detonat[o]r' in Codec; early Terminal class work
updated tests to GlobalDefinitions entries; Terminal works but I don't like it
played with GUID pooling workflow, though to little avail; modifications to Terminal purchasing workflow, but still very volatile
modified NumberPoolActor and NumberPoolAccessor to make them more straightforward and not use akka ask as a go-between
fixed recovery options so that they do not cause more messages
trailing newline
InventoryItem (packet data) renamed InventoryItemData to remove ambiguity; Terminal functionality improved, allowing for swapping of exo-suits and the restoration of equipment positions
remove yet-unsupported Terminal messaging
made Terminal message more specific; can now put equipment into empty slot on exo-suit change; should report changes better
re-organized function calls to preserved items removed from holster slots on exo-suit change
moved predicate to the end of the list of params for recoverInventory so that repetition can be eliminated and a default value can be assigned
issues with making Tool; committing changes before revert of NumberPoolActor and NumberPoolAccessorActor to see if those broke it
a necessary evil, the reverting of these two Actors; subtask resolution does not work unless I do so, for now
restored the registration portion of tasking back to where it previously was (and better?)
NumberPoolActor and the ...AccessorActor are back to a comfortable place (and better?)
re-draw object in hand when switching exo-suits; build AmmoBoxes for Tool during Terminal-controlled creation, not Tool-controlled creation
order of task cleanup reversed to avoid index mismatch; added itsm to TerminalDefinition
common 5x5 AmmoBox size; added vehicle weapon ammo boxes to terminal
added error catching messages; stopped odd double-registering issue early
resolved issue where multiple subtasks started their main task multiple times; added checks that an object does not register a new GUID when it already has one
wrote unregistration code for Selling items back through the Terminal, repairing logic along the way; also, wrote a top-level GUID find for the Player for use of MoveItem
added framework for starting on Loadouts; managed issue with parent tasks starting before being summoned by child subtasks, often resulting in the complete skip of the execution phase of the parent; refactored registration tasks in WSA
modified Tool structure, exposing the AmmoSlot list a bit more
stuff stuff Tool ammo slot changes to default and comments
basic loadout framework for Infantry; need to integrate
initial work on FavoritesRequest packet
tests for FavoritesRequest packet
increased size of number pool for testing; wrote an algorithm that translates to and from the simplified version of objects stored in loadouts
refactored the tasking for adding Equipment and removing Equipment
updated the inventory so the Map of items does not have to rely on the GUID of an item being set before the item is inserted
untested routine for registering a player character; pushing all changes before making significant changes to the client init code structure
added to comments of BeginZoningMessage; transitioned player through and initial step of a more proper login GUID association
the current avatar is properly registered and there is something of a workflow with the messages and packets
corrected another bit of logic where inventories used to be indexed by object GUID in AvatarConverter; reversed unregister-remove task sequence such that GUID-less object is not allowed to exist in a stable object hierarchy
working Loadout loading
added identification functions to GlobalDefinitions; echo ObjectDelete back to client
accidentally got rid of something in WSA, but now restored; adding extra details to Terminal operations
separated Terminal into separate files and moved files into their own package under \objects\ for now; can delete loadouts now in WSA
better handling of ReloadMessage and MoveItemMessage
framework for better support involving dropping and picking up items
code comments and small modifications, such as the location and structure of the Terminal Equipment definitions
wrote comments in GlobalDefinitions; modified code so that a primitive form of player synchronization now occurs for future testing
added code to display already-dropped Equipment on the ground; limitations are explained; moved TaskResolver to more a global location, though I don't know if that helps
modified avatar unregister logic to ensure vacating player is deleted from other clients 'properly'
more comments; improved checks for MoveItemMessage; squared distances as necessary
subtle changes to login scripting so that test character is always offered
re-organizing the functions in WSA so that only the local objects separate the two message processing blocks
2017-05-30 18:46:01 -04:00
|
|
|
import net.psforever.objects.equipment.EquipmentSize
|
2017-12-05 00:37:24 -05:00
|
|
|
import net.psforever.packet.game.PlanetSideGUID
|
2018-03-24 00:28:02 -04:00
|
|
|
import net.psforever.types.{CharacterGender, ExoSuitType, ImplantType, PlanetSideEmpire}
|
new stuff for player server classes; this update is not yet complete
adjusted sample Reload code and added insertion and removal functions for inventory
more work on player classes; moving PacketResolution to another branch
decoupling GUIDs from objects; introduced Ammo enum; minor adjustments to inventory system; different object/class hierarchy
transferring basic files from another branch
converted from get/set to accessor/mutator; resolved conflict from name changes
refactored basic components such as GUID and location/orientation
utilities kludge; more fields are given accessor and mutators; create package for vehicle-specific classes
GUID assurance, now with less object creation
test files; changes to how AmmoBox initializes
sorry, a little bit of everything, so much I forgot to write it all down
switched to a unified fire mode object internal to a Tool
importing a heavily modified version of my GUID manager objects from the laternate branch; not finished or tested yet
created a Trait to make Key private, sources and selectors to allow NumberPools to exist independent of a NumberSource; placed Ascending into a misc folder
swapped the Return methods for selectors so that the more primitive logic is the one that needs to be overriden; renamed a selector to be more common; had to update some copyright messages
fixed major logic issue with NumberPool; added comments to NumberSource files
NumberSource tests
simplified and made more consistent the method naming convention of NumberSources
comments for NumberSelectors
starting on NumberSelector tests
modifications that should better support number pools; added a pool hub that acts on a predefined source
adjustment to how Tools and FireModeDefintion keep track of ammunition and ammunition slots; I don't think this is sufficient
small additions to Tools; filled out simple tests for other three Selectors
added object lookup notation for the pool hub
added more NumberSelector tests; removed the word 'Number' from subclass names
re-named classes, re-packaged classes, re-named packages; created new Selector, split pools to create a fallback for the NumberPoolHub
changes to NumberPool classes; tests on NumberPool classes
changes to NumberPool classes; tests on NumberPool classes2
some robust testing for NumberPoolHub, plus necessary modifications to other files
register and unregister functions now use Success and Failure conditions, save for one true thrown Exception
reduced the flow of certain algorithm chains, mainly by adding match statements and removing Exceptions
error message text
the same thing as the last commit, but with NumberPools rather than NumberPoolHub
various types of freeform registration
added sorting functions to Selectors to allow for hotswapping for number pools, especially to and from SpecificSelector; tests for NumberPoolHub
get numbers from an Array of indices, not the list of Numbers, in SimplePool
added a class to represent the four types of recovery kits
comments on Kit files
created package for supporting equipment classes; renamed /definition/ package
adding class for items that construct deployables, the router telepad included
added SimpleItem, classes for game Equipment that do not have internal state; re-organized ObjectDefinition files and the game objects they create to more naturally move around EquipmentSize and InventoryTile (size)
added SimpleItem tests (what they are...); removed example code that has hogging an import from AmmoBox
auto-sort for loading and fitting former inventory content back into the inventory
method of finding first available position to fit an certain size block in the inventory
changed CheckCollision return type to provide Try[List[Int]; fixed all existing references and tests
wrote comments for GridInventory methods; changed insertion param to be of form 'key -> element'
adding features to Player; created definitions for Player class; re-grouped ConstructionItem enumerations
initial work on implants; shuffled classes to better accommodate the new implant system, I think
wrote some tests for Implants; fixing Implant logic
wrote tests for Player class and made adjustments where necessary
basic initialization during Player creation based on exo-suit type
three wrapper Actors for the normal classes
comments on code
modified tests to improve accountability; added Resolver class to deal with multiple tasks that contribute to a larger task
changed Tools to an internal AmmoBox; don't have to def -= symbol if I def _= symbol
LivePlayerList -> MasterPlayerList, and added a Fit def for Player that checks holsters as well as inventory
example of packet conversion can be found with AmmoBoxDefinition
added conversion for ToolDefinition
added all Equipment packet conversion functionality; started working on Avatar-related conversions
continued effort towards a working Player packet conversion test
subclasses of Equipment apparently do not need to overide the type of the PacketConverter for generics
the logical conclusion: it doesn't matter what generics Packet returns so long as it returns an ObjectCreateConverter[] type
separated converters from definitions into files
changed some configuration information to final; added a bunch of converters, not fully tested though
changed function names in converters
replaced WSA packet-driven OCDM with Player object OCDM; upgrade to Float angular data
added partial support for LockerContainer; changed Equipment defaults to a common value
changes to AvatarConverter to include 5th slot; changes to VehicleConverter to make work; implementation of Fury in Vehicle->packet example in WSA
added a seat definition and renovated how the weapon controlled from a seat can be found
comments to files mainly; non-essential functionality to some classes, mostly access determination
moved converter tests to their own test file
write more of this test
added ServiceManager, as it is useful
pool range changes
added AvatarService, as it is useful
straightened out the GUID actors; added the static method for adding AmmoBoxes (to be converted later)
chnages to task resolution operation
complicated Task and TaskResolver logic is now possible; for example, you can schedule giving an AmmoBox a GUID, before giving a Tool a GUID, before placing the Tool in a player's hand; see Suppressor example in WSA
separated the Task trait and the TaskResolver actor into their own classes, moving the former RegistrationTaskResolver class into the /misc/ folder; deleted old backup copy of HubActor; modifications for PoC and supported tests
added better support and protection against putting things in the wrong hand when using inventories and the Player.Slot(n) function
GlobalDefinitions file; added laze pointer as an SItem, and gave it the command detonater management code; additionally fixed spelling of 'detonat[o]r' in Codec; early Terminal class work
updated tests to GlobalDefinitions entries; Terminal works but I don't like it
played with GUID pooling workflow, though to little avail; modifications to Terminal purchasing workflow, but still very volatile
modified NumberPoolActor and NumberPoolAccessor to make them more straightforward and not use akka ask as a go-between
fixed recovery options so that they do not cause more messages
trailing newline
InventoryItem (packet data) renamed InventoryItemData to remove ambiguity; Terminal functionality improved, allowing for swapping of exo-suits and the restoration of equipment positions
remove yet-unsupported Terminal messaging
made Terminal message more specific; can now put equipment into empty slot on exo-suit change; should report changes better
re-organized function calls to preserved items removed from holster slots on exo-suit change
moved predicate to the end of the list of params for recoverInventory so that repetition can be eliminated and a default value can be assigned
issues with making Tool; committing changes before revert of NumberPoolActor and NumberPoolAccessorActor to see if those broke it
a necessary evil, the reverting of these two Actors; subtask resolution does not work unless I do so, for now
restored the registration portion of tasking back to where it previously was (and better?)
NumberPoolActor and the ...AccessorActor are back to a comfortable place (and better?)
re-draw object in hand when switching exo-suits; build AmmoBoxes for Tool during Terminal-controlled creation, not Tool-controlled creation
order of task cleanup reversed to avoid index mismatch; added itsm to TerminalDefinition
common 5x5 AmmoBox size; added vehicle weapon ammo boxes to terminal
added error catching messages; stopped odd double-registering issue early
resolved issue where multiple subtasks started their main task multiple times; added checks that an object does not register a new GUID when it already has one
wrote unregistration code for Selling items back through the Terminal, repairing logic along the way; also, wrote a top-level GUID find for the Player for use of MoveItem
added framework for starting on Loadouts; managed issue with parent tasks starting before being summoned by child subtasks, often resulting in the complete skip of the execution phase of the parent; refactored registration tasks in WSA
modified Tool structure, exposing the AmmoSlot list a bit more
stuff stuff Tool ammo slot changes to default and comments
basic loadout framework for Infantry; need to integrate
initial work on FavoritesRequest packet
tests for FavoritesRequest packet
increased size of number pool for testing; wrote an algorithm that translates to and from the simplified version of objects stored in loadouts
refactored the tasking for adding Equipment and removing Equipment
updated the inventory so the Map of items does not have to rely on the GUID of an item being set before the item is inserted
untested routine for registering a player character; pushing all changes before making significant changes to the client init code structure
added to comments of BeginZoningMessage; transitioned player through and initial step of a more proper login GUID association
the current avatar is properly registered and there is something of a workflow with the messages and packets
corrected another bit of logic where inventories used to be indexed by object GUID in AvatarConverter; reversed unregister-remove task sequence such that GUID-less object is not allowed to exist in a stable object hierarchy
working Loadout loading
added identification functions to GlobalDefinitions; echo ObjectDelete back to client
accidentally got rid of something in WSA, but now restored; adding extra details to Terminal operations
separated Terminal into separate files and moved files into their own package under \objects\ for now; can delete loadouts now in WSA
better handling of ReloadMessage and MoveItemMessage
framework for better support involving dropping and picking up items
code comments and small modifications, such as the location and structure of the Terminal Equipment definitions
wrote comments in GlobalDefinitions; modified code so that a primitive form of player synchronization now occurs for future testing
added code to display already-dropped Equipment on the ground; limitations are explained; moved TaskResolver to more a global location, though I don't know if that helps
modified avatar unregister logic to ensure vacating player is deleted from other clients 'properly'
more comments; improved checks for MoveItemMessage; squared distances as necessary
subtle changes to login scripting so that test character is always offered
re-organizing the functions in WSA so that only the local objects separate the two message processing blocks
2017-05-30 18:46:01 -04:00
|
|
|
import org.specs2.mutable._
|
|
|
|
|
|
2018-03-24 00:28:02 -04:00
|
|
|
import scala.util.Success
|
|
|
|
|
|
new stuff for player server classes; this update is not yet complete
adjusted sample Reload code and added insertion and removal functions for inventory
more work on player classes; moving PacketResolution to another branch
decoupling GUIDs from objects; introduced Ammo enum; minor adjustments to inventory system; different object/class hierarchy
transferring basic files from another branch
converted from get/set to accessor/mutator; resolved conflict from name changes
refactored basic components such as GUID and location/orientation
utilities kludge; more fields are given accessor and mutators; create package for vehicle-specific classes
GUID assurance, now with less object creation
test files; changes to how AmmoBox initializes
sorry, a little bit of everything, so much I forgot to write it all down
switched to a unified fire mode object internal to a Tool
importing a heavily modified version of my GUID manager objects from the laternate branch; not finished or tested yet
created a Trait to make Key private, sources and selectors to allow NumberPools to exist independent of a NumberSource; placed Ascending into a misc folder
swapped the Return methods for selectors so that the more primitive logic is the one that needs to be overriden; renamed a selector to be more common; had to update some copyright messages
fixed major logic issue with NumberPool; added comments to NumberSource files
NumberSource tests
simplified and made more consistent the method naming convention of NumberSources
comments for NumberSelectors
starting on NumberSelector tests
modifications that should better support number pools; added a pool hub that acts on a predefined source
adjustment to how Tools and FireModeDefintion keep track of ammunition and ammunition slots; I don't think this is sufficient
small additions to Tools; filled out simple tests for other three Selectors
added object lookup notation for the pool hub
added more NumberSelector tests; removed the word 'Number' from subclass names
re-named classes, re-packaged classes, re-named packages; created new Selector, split pools to create a fallback for the NumberPoolHub
changes to NumberPool classes; tests on NumberPool classes
changes to NumberPool classes; tests on NumberPool classes2
some robust testing for NumberPoolHub, plus necessary modifications to other files
register and unregister functions now use Success and Failure conditions, save for one true thrown Exception
reduced the flow of certain algorithm chains, mainly by adding match statements and removing Exceptions
error message text
the same thing as the last commit, but with NumberPools rather than NumberPoolHub
various types of freeform registration
added sorting functions to Selectors to allow for hotswapping for number pools, especially to and from SpecificSelector; tests for NumberPoolHub
get numbers from an Array of indices, not the list of Numbers, in SimplePool
added a class to represent the four types of recovery kits
comments on Kit files
created package for supporting equipment classes; renamed /definition/ package
adding class for items that construct deployables, the router telepad included
added SimpleItem, classes for game Equipment that do not have internal state; re-organized ObjectDefinition files and the game objects they create to more naturally move around EquipmentSize and InventoryTile (size)
added SimpleItem tests (what they are...); removed example code that has hogging an import from AmmoBox
auto-sort for loading and fitting former inventory content back into the inventory
method of finding first available position to fit an certain size block in the inventory
changed CheckCollision return type to provide Try[List[Int]; fixed all existing references and tests
wrote comments for GridInventory methods; changed insertion param to be of form 'key -> element'
adding features to Player; created definitions for Player class; re-grouped ConstructionItem enumerations
initial work on implants; shuffled classes to better accommodate the new implant system, I think
wrote some tests for Implants; fixing Implant logic
wrote tests for Player class and made adjustments where necessary
basic initialization during Player creation based on exo-suit type
three wrapper Actors for the normal classes
comments on code
modified tests to improve accountability; added Resolver class to deal with multiple tasks that contribute to a larger task
changed Tools to an internal AmmoBox; don't have to def -= symbol if I def _= symbol
LivePlayerList -> MasterPlayerList, and added a Fit def for Player that checks holsters as well as inventory
example of packet conversion can be found with AmmoBoxDefinition
added conversion for ToolDefinition
added all Equipment packet conversion functionality; started working on Avatar-related conversions
continued effort towards a working Player packet conversion test
subclasses of Equipment apparently do not need to overide the type of the PacketConverter for generics
the logical conclusion: it doesn't matter what generics Packet returns so long as it returns an ObjectCreateConverter[] type
separated converters from definitions into files
changed some configuration information to final; added a bunch of converters, not fully tested though
changed function names in converters
replaced WSA packet-driven OCDM with Player object OCDM; upgrade to Float angular data
added partial support for LockerContainer; changed Equipment defaults to a common value
changes to AvatarConverter to include 5th slot; changes to VehicleConverter to make work; implementation of Fury in Vehicle->packet example in WSA
added a seat definition and renovated how the weapon controlled from a seat can be found
comments to files mainly; non-essential functionality to some classes, mostly access determination
moved converter tests to their own test file
write more of this test
added ServiceManager, as it is useful
pool range changes
added AvatarService, as it is useful
straightened out the GUID actors; added the static method for adding AmmoBoxes (to be converted later)
chnages to task resolution operation
complicated Task and TaskResolver logic is now possible; for example, you can schedule giving an AmmoBox a GUID, before giving a Tool a GUID, before placing the Tool in a player's hand; see Suppressor example in WSA
separated the Task trait and the TaskResolver actor into their own classes, moving the former RegistrationTaskResolver class into the /misc/ folder; deleted old backup copy of HubActor; modifications for PoC and supported tests
added better support and protection against putting things in the wrong hand when using inventories and the Player.Slot(n) function
GlobalDefinitions file; added laze pointer as an SItem, and gave it the command detonater management code; additionally fixed spelling of 'detonat[o]r' in Codec; early Terminal class work
updated tests to GlobalDefinitions entries; Terminal works but I don't like it
played with GUID pooling workflow, though to little avail; modifications to Terminal purchasing workflow, but still very volatile
modified NumberPoolActor and NumberPoolAccessor to make them more straightforward and not use akka ask as a go-between
fixed recovery options so that they do not cause more messages
trailing newline
InventoryItem (packet data) renamed InventoryItemData to remove ambiguity; Terminal functionality improved, allowing for swapping of exo-suits and the restoration of equipment positions
remove yet-unsupported Terminal messaging
made Terminal message more specific; can now put equipment into empty slot on exo-suit change; should report changes better
re-organized function calls to preserved items removed from holster slots on exo-suit change
moved predicate to the end of the list of params for recoverInventory so that repetition can be eliminated and a default value can be assigned
issues with making Tool; committing changes before revert of NumberPoolActor and NumberPoolAccessorActor to see if those broke it
a necessary evil, the reverting of these two Actors; subtask resolution does not work unless I do so, for now
restored the registration portion of tasking back to where it previously was (and better?)
NumberPoolActor and the ...AccessorActor are back to a comfortable place (and better?)
re-draw object in hand when switching exo-suits; build AmmoBoxes for Tool during Terminal-controlled creation, not Tool-controlled creation
order of task cleanup reversed to avoid index mismatch; added itsm to TerminalDefinition
common 5x5 AmmoBox size; added vehicle weapon ammo boxes to terminal
added error catching messages; stopped odd double-registering issue early
resolved issue where multiple subtasks started their main task multiple times; added checks that an object does not register a new GUID when it already has one
wrote unregistration code for Selling items back through the Terminal, repairing logic along the way; also, wrote a top-level GUID find for the Player for use of MoveItem
added framework for starting on Loadouts; managed issue with parent tasks starting before being summoned by child subtasks, often resulting in the complete skip of the execution phase of the parent; refactored registration tasks in WSA
modified Tool structure, exposing the AmmoSlot list a bit more
stuff stuff Tool ammo slot changes to default and comments
basic loadout framework for Infantry; need to integrate
initial work on FavoritesRequest packet
tests for FavoritesRequest packet
increased size of number pool for testing; wrote an algorithm that translates to and from the simplified version of objects stored in loadouts
refactored the tasking for adding Equipment and removing Equipment
updated the inventory so the Map of items does not have to rely on the GUID of an item being set before the item is inserted
untested routine for registering a player character; pushing all changes before making significant changes to the client init code structure
added to comments of BeginZoningMessage; transitioned player through and initial step of a more proper login GUID association
the current avatar is properly registered and there is something of a workflow with the messages and packets
corrected another bit of logic where inventories used to be indexed by object GUID in AvatarConverter; reversed unregister-remove task sequence such that GUID-less object is not allowed to exist in a stable object hierarchy
working Loadout loading
added identification functions to GlobalDefinitions; echo ObjectDelete back to client
accidentally got rid of something in WSA, but now restored; adding extra details to Terminal operations
separated Terminal into separate files and moved files into their own package under \objects\ for now; can delete loadouts now in WSA
better handling of ReloadMessage and MoveItemMessage
framework for better support involving dropping and picking up items
code comments and small modifications, such as the location and structure of the Terminal Equipment definitions
wrote comments in GlobalDefinitions; modified code so that a primitive form of player synchronization now occurs for future testing
added code to display already-dropped Equipment on the ground; limitations are explained; moved TaskResolver to more a global location, though I don't know if that helps
modified avatar unregister logic to ensure vacating player is deleted from other clients 'properly'
more comments; improved checks for MoveItemMessage; squared distances as necessary
subtle changes to login scripting so that test character is always offered
re-organizing the functions in WSA so that only the local objects separate the two message processing blocks
2017-05-30 18:46:01 -04:00
|
|
|
class PlayerTest extends Specification {
|
2018-03-24 00:28:02 -04:00
|
|
|
def TestPlayer(name : String, faction : PlanetSideEmpire.Value, sex : CharacterGender.Value, head : Int, voice : Int) : Player = {
|
|
|
|
|
new Player(Avatar(name, faction, sex, head, voice))
|
|
|
|
|
}
|
|
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"Player" should {
|
|
|
|
|
"construct" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.isAlive mustEqual false
|
|
|
|
|
obj.FacingYawUpper mustEqual 0
|
|
|
|
|
obj.Jumping mustEqual false
|
|
|
|
|
obj.Crouching mustEqual false
|
|
|
|
|
obj.Cloaked mustEqual false
|
|
|
|
|
|
|
|
|
|
obj.FacingYawUpper = 1.3f
|
|
|
|
|
obj.Jumping = true
|
|
|
|
|
obj.Crouching = true
|
|
|
|
|
obj.Cloaked = true
|
|
|
|
|
obj.FacingYawUpper mustEqual 1.3f
|
|
|
|
|
obj.Jumping mustEqual true
|
|
|
|
|
obj.Crouching mustEqual true
|
|
|
|
|
obj.Cloaked mustEqual true
|
|
|
|
|
}
|
new stuff for player server classes; this update is not yet complete
adjusted sample Reload code and added insertion and removal functions for inventory
more work on player classes; moving PacketResolution to another branch
decoupling GUIDs from objects; introduced Ammo enum; minor adjustments to inventory system; different object/class hierarchy
transferring basic files from another branch
converted from get/set to accessor/mutator; resolved conflict from name changes
refactored basic components such as GUID and location/orientation
utilities kludge; more fields are given accessor and mutators; create package for vehicle-specific classes
GUID assurance, now with less object creation
test files; changes to how AmmoBox initializes
sorry, a little bit of everything, so much I forgot to write it all down
switched to a unified fire mode object internal to a Tool
importing a heavily modified version of my GUID manager objects from the laternate branch; not finished or tested yet
created a Trait to make Key private, sources and selectors to allow NumberPools to exist independent of a NumberSource; placed Ascending into a misc folder
swapped the Return methods for selectors so that the more primitive logic is the one that needs to be overriden; renamed a selector to be more common; had to update some copyright messages
fixed major logic issue with NumberPool; added comments to NumberSource files
NumberSource tests
simplified and made more consistent the method naming convention of NumberSources
comments for NumberSelectors
starting on NumberSelector tests
modifications that should better support number pools; added a pool hub that acts on a predefined source
adjustment to how Tools and FireModeDefintion keep track of ammunition and ammunition slots; I don't think this is sufficient
small additions to Tools; filled out simple tests for other three Selectors
added object lookup notation for the pool hub
added more NumberSelector tests; removed the word 'Number' from subclass names
re-named classes, re-packaged classes, re-named packages; created new Selector, split pools to create a fallback for the NumberPoolHub
changes to NumberPool classes; tests on NumberPool classes
changes to NumberPool classes; tests on NumberPool classes2
some robust testing for NumberPoolHub, plus necessary modifications to other files
register and unregister functions now use Success and Failure conditions, save for one true thrown Exception
reduced the flow of certain algorithm chains, mainly by adding match statements and removing Exceptions
error message text
the same thing as the last commit, but with NumberPools rather than NumberPoolHub
various types of freeform registration
added sorting functions to Selectors to allow for hotswapping for number pools, especially to and from SpecificSelector; tests for NumberPoolHub
get numbers from an Array of indices, not the list of Numbers, in SimplePool
added a class to represent the four types of recovery kits
comments on Kit files
created package for supporting equipment classes; renamed /definition/ package
adding class for items that construct deployables, the router telepad included
added SimpleItem, classes for game Equipment that do not have internal state; re-organized ObjectDefinition files and the game objects they create to more naturally move around EquipmentSize and InventoryTile (size)
added SimpleItem tests (what they are...); removed example code that has hogging an import from AmmoBox
auto-sort for loading and fitting former inventory content back into the inventory
method of finding first available position to fit an certain size block in the inventory
changed CheckCollision return type to provide Try[List[Int]; fixed all existing references and tests
wrote comments for GridInventory methods; changed insertion param to be of form 'key -> element'
adding features to Player; created definitions for Player class; re-grouped ConstructionItem enumerations
initial work on implants; shuffled classes to better accommodate the new implant system, I think
wrote some tests for Implants; fixing Implant logic
wrote tests for Player class and made adjustments where necessary
basic initialization during Player creation based on exo-suit type
three wrapper Actors for the normal classes
comments on code
modified tests to improve accountability; added Resolver class to deal with multiple tasks that contribute to a larger task
changed Tools to an internal AmmoBox; don't have to def -= symbol if I def _= symbol
LivePlayerList -> MasterPlayerList, and added a Fit def for Player that checks holsters as well as inventory
example of packet conversion can be found with AmmoBoxDefinition
added conversion for ToolDefinition
added all Equipment packet conversion functionality; started working on Avatar-related conversions
continued effort towards a working Player packet conversion test
subclasses of Equipment apparently do not need to overide the type of the PacketConverter for generics
the logical conclusion: it doesn't matter what generics Packet returns so long as it returns an ObjectCreateConverter[] type
separated converters from definitions into files
changed some configuration information to final; added a bunch of converters, not fully tested though
changed function names in converters
replaced WSA packet-driven OCDM with Player object OCDM; upgrade to Float angular data
added partial support for LockerContainer; changed Equipment defaults to a common value
changes to AvatarConverter to include 5th slot; changes to VehicleConverter to make work; implementation of Fury in Vehicle->packet example in WSA
added a seat definition and renovated how the weapon controlled from a seat can be found
comments to files mainly; non-essential functionality to some classes, mostly access determination
moved converter tests to their own test file
write more of this test
added ServiceManager, as it is useful
pool range changes
added AvatarService, as it is useful
straightened out the GUID actors; added the static method for adding AmmoBoxes (to be converted later)
chnages to task resolution operation
complicated Task and TaskResolver logic is now possible; for example, you can schedule giving an AmmoBox a GUID, before giving a Tool a GUID, before placing the Tool in a player's hand; see Suppressor example in WSA
separated the Task trait and the TaskResolver actor into their own classes, moving the former RegistrationTaskResolver class into the /misc/ folder; deleted old backup copy of HubActor; modifications for PoC and supported tests
added better support and protection against putting things in the wrong hand when using inventories and the Player.Slot(n) function
GlobalDefinitions file; added laze pointer as an SItem, and gave it the command detonater management code; additionally fixed spelling of 'detonat[o]r' in Codec; early Terminal class work
updated tests to GlobalDefinitions entries; Terminal works but I don't like it
played with GUID pooling workflow, though to little avail; modifications to Terminal purchasing workflow, but still very volatile
modified NumberPoolActor and NumberPoolAccessor to make them more straightforward and not use akka ask as a go-between
fixed recovery options so that they do not cause more messages
trailing newline
InventoryItem (packet data) renamed InventoryItemData to remove ambiguity; Terminal functionality improved, allowing for swapping of exo-suits and the restoration of equipment positions
remove yet-unsupported Terminal messaging
made Terminal message more specific; can now put equipment into empty slot on exo-suit change; should report changes better
re-organized function calls to preserved items removed from holster slots on exo-suit change
moved predicate to the end of the list of params for recoverInventory so that repetition can be eliminated and a default value can be assigned
issues with making Tool; committing changes before revert of NumberPoolActor and NumberPoolAccessorActor to see if those broke it
a necessary evil, the reverting of these two Actors; subtask resolution does not work unless I do so, for now
restored the registration portion of tasking back to where it previously was (and better?)
NumberPoolActor and the ...AccessorActor are back to a comfortable place (and better?)
re-draw object in hand when switching exo-suits; build AmmoBoxes for Tool during Terminal-controlled creation, not Tool-controlled creation
order of task cleanup reversed to avoid index mismatch; added itsm to TerminalDefinition
common 5x5 AmmoBox size; added vehicle weapon ammo boxes to terminal
added error catching messages; stopped odd double-registering issue early
resolved issue where multiple subtasks started their main task multiple times; added checks that an object does not register a new GUID when it already has one
wrote unregistration code for Selling items back through the Terminal, repairing logic along the way; also, wrote a top-level GUID find for the Player for use of MoveItem
added framework for starting on Loadouts; managed issue with parent tasks starting before being summoned by child subtasks, often resulting in the complete skip of the execution phase of the parent; refactored registration tasks in WSA
modified Tool structure, exposing the AmmoSlot list a bit more
stuff stuff Tool ammo slot changes to default and comments
basic loadout framework for Infantry; need to integrate
initial work on FavoritesRequest packet
tests for FavoritesRequest packet
increased size of number pool for testing; wrote an algorithm that translates to and from the simplified version of objects stored in loadouts
refactored the tasking for adding Equipment and removing Equipment
updated the inventory so the Map of items does not have to rely on the GUID of an item being set before the item is inserted
untested routine for registering a player character; pushing all changes before making significant changes to the client init code structure
added to comments of BeginZoningMessage; transitioned player through and initial step of a more proper login GUID association
the current avatar is properly registered and there is something of a workflow with the messages and packets
corrected another bit of logic where inventories used to be indexed by object GUID in AvatarConverter; reversed unregister-remove task sequence such that GUID-less object is not allowed to exist in a stable object hierarchy
working Loadout loading
added identification functions to GlobalDefinitions; echo ObjectDelete back to client
accidentally got rid of something in WSA, but now restored; adding extra details to Terminal operations
separated Terminal into separate files and moved files into their own package under \objects\ for now; can delete loadouts now in WSA
better handling of ReloadMessage and MoveItemMessage
framework for better support involving dropping and picking up items
code comments and small modifications, such as the location and structure of the Terminal Equipment definitions
wrote comments in GlobalDefinitions; modified code so that a primitive form of player synchronization now occurs for future testing
added code to display already-dropped Equipment on the ground; limitations are explained; moved TaskResolver to more a global location, though I don't know if that helps
modified avatar unregister logic to ensure vacating player is deleted from other clients 'properly'
more comments; improved checks for MoveItemMessage; squared distances as necessary
subtle changes to login scripting so that test character is always offered
re-organizing the functions in WSA so that only the local objects separate the two message processing blocks
2017-05-30 18:46:01 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"different players" in {
|
|
|
|
|
(TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) ==
|
|
|
|
|
TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)) mustEqual true
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
(TestPlayer("Chord1", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) ==
|
|
|
|
|
TestPlayer("Chord2", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)) mustEqual false
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
(TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) ==
|
|
|
|
|
TestPlayer("Chord", PlanetSideEmpire.NC, CharacterGender.Male, 0, 5)) mustEqual false
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
(TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) ==
|
|
|
|
|
TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Female, 0, 5)) mustEqual false
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
(TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) ==
|
|
|
|
|
TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 1, 5)) mustEqual false
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
(TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5) ==
|
|
|
|
|
TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 6)) mustEqual false
|
|
|
|
|
}
|
2017-12-05 00:37:24 -05:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"(re)spawn" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.isAlive mustEqual false
|
|
|
|
|
obj.Health mustEqual 0
|
|
|
|
|
obj.Stamina mustEqual 0
|
|
|
|
|
obj.Armor mustEqual 0
|
|
|
|
|
obj.MaxHealth mustEqual 100
|
|
|
|
|
obj.MaxStamina mustEqual 100
|
|
|
|
|
obj.MaxArmor mustEqual 50
|
|
|
|
|
obj.Spawn
|
|
|
|
|
obj.isAlive mustEqual true
|
|
|
|
|
obj.Health mustEqual 100
|
|
|
|
|
obj.Stamina mustEqual 100
|
|
|
|
|
obj.Armor mustEqual 50
|
|
|
|
|
}
|
2017-12-05 00:37:24 -05:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"will not (re)spawn if not dead" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.Spawn
|
|
|
|
|
obj.Health mustEqual 100
|
|
|
|
|
obj.Armor mustEqual 50
|
|
|
|
|
obj.isAlive mustEqual true
|
|
|
|
|
|
|
|
|
|
obj.Health = 10
|
|
|
|
|
obj.Armor = 10
|
|
|
|
|
obj.Health mustEqual 10
|
|
|
|
|
obj.Armor mustEqual 10
|
|
|
|
|
obj.Spawn
|
|
|
|
|
obj.Health mustEqual 10
|
|
|
|
|
obj.Armor mustEqual 10
|
|
|
|
|
}
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"can die" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.Spawn
|
|
|
|
|
obj.Armor = 35 //50 -> 35
|
|
|
|
|
obj.isAlive mustEqual true
|
|
|
|
|
obj.Health mustEqual obj.MaxHealth
|
|
|
|
|
obj.Stamina mustEqual obj.MaxStamina
|
|
|
|
|
obj.Armor mustEqual 35
|
|
|
|
|
obj.Die
|
|
|
|
|
obj.isAlive mustEqual false
|
|
|
|
|
obj.Health mustEqual 0
|
|
|
|
|
obj.Stamina mustEqual 0
|
|
|
|
|
obj.Armor mustEqual 35
|
|
|
|
|
}
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"can not become a backpack if alive" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.Spawn
|
|
|
|
|
obj.isAlive mustEqual true
|
|
|
|
|
obj.isBackpack mustEqual false
|
|
|
|
|
obj.Release
|
|
|
|
|
obj.isAlive mustEqual true
|
|
|
|
|
obj.isBackpack mustEqual false
|
|
|
|
|
}
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"can become a backpack" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.isAlive mustEqual false
|
|
|
|
|
obj.isBackpack mustEqual false
|
|
|
|
|
obj.Release
|
|
|
|
|
obj.isAlive mustEqual false
|
|
|
|
|
obj.isBackpack mustEqual true
|
|
|
|
|
}
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"set new maximum values (health, stamina)" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.MaxHealth mustEqual 100
|
|
|
|
|
obj.MaxStamina mustEqual 100
|
|
|
|
|
obj.MaxHealth = 123
|
|
|
|
|
obj.MaxStamina = 456
|
|
|
|
|
obj.Spawn
|
|
|
|
|
obj.Health mustEqual 123
|
|
|
|
|
obj.Stamina mustEqual 456
|
|
|
|
|
}
|
new stuff for player server classes; this update is not yet complete
adjusted sample Reload code and added insertion and removal functions for inventory
more work on player classes; moving PacketResolution to another branch
decoupling GUIDs from objects; introduced Ammo enum; minor adjustments to inventory system; different object/class hierarchy
transferring basic files from another branch
converted from get/set to accessor/mutator; resolved conflict from name changes
refactored basic components such as GUID and location/orientation
utilities kludge; more fields are given accessor and mutators; create package for vehicle-specific classes
GUID assurance, now with less object creation
test files; changes to how AmmoBox initializes
sorry, a little bit of everything, so much I forgot to write it all down
switched to a unified fire mode object internal to a Tool
importing a heavily modified version of my GUID manager objects from the laternate branch; not finished or tested yet
created a Trait to make Key private, sources and selectors to allow NumberPools to exist independent of a NumberSource; placed Ascending into a misc folder
swapped the Return methods for selectors so that the more primitive logic is the one that needs to be overriden; renamed a selector to be more common; had to update some copyright messages
fixed major logic issue with NumberPool; added comments to NumberSource files
NumberSource tests
simplified and made more consistent the method naming convention of NumberSources
comments for NumberSelectors
starting on NumberSelector tests
modifications that should better support number pools; added a pool hub that acts on a predefined source
adjustment to how Tools and FireModeDefintion keep track of ammunition and ammunition slots; I don't think this is sufficient
small additions to Tools; filled out simple tests for other three Selectors
added object lookup notation for the pool hub
added more NumberSelector tests; removed the word 'Number' from subclass names
re-named classes, re-packaged classes, re-named packages; created new Selector, split pools to create a fallback for the NumberPoolHub
changes to NumberPool classes; tests on NumberPool classes
changes to NumberPool classes; tests on NumberPool classes2
some robust testing for NumberPoolHub, plus necessary modifications to other files
register and unregister functions now use Success and Failure conditions, save for one true thrown Exception
reduced the flow of certain algorithm chains, mainly by adding match statements and removing Exceptions
error message text
the same thing as the last commit, but with NumberPools rather than NumberPoolHub
various types of freeform registration
added sorting functions to Selectors to allow for hotswapping for number pools, especially to and from SpecificSelector; tests for NumberPoolHub
get numbers from an Array of indices, not the list of Numbers, in SimplePool
added a class to represent the four types of recovery kits
comments on Kit files
created package for supporting equipment classes; renamed /definition/ package
adding class for items that construct deployables, the router telepad included
added SimpleItem, classes for game Equipment that do not have internal state; re-organized ObjectDefinition files and the game objects they create to more naturally move around EquipmentSize and InventoryTile (size)
added SimpleItem tests (what they are...); removed example code that has hogging an import from AmmoBox
auto-sort for loading and fitting former inventory content back into the inventory
method of finding first available position to fit an certain size block in the inventory
changed CheckCollision return type to provide Try[List[Int]; fixed all existing references and tests
wrote comments for GridInventory methods; changed insertion param to be of form 'key -> element'
adding features to Player; created definitions for Player class; re-grouped ConstructionItem enumerations
initial work on implants; shuffled classes to better accommodate the new implant system, I think
wrote some tests for Implants; fixing Implant logic
wrote tests for Player class and made adjustments where necessary
basic initialization during Player creation based on exo-suit type
three wrapper Actors for the normal classes
comments on code
modified tests to improve accountability; added Resolver class to deal with multiple tasks that contribute to a larger task
changed Tools to an internal AmmoBox; don't have to def -= symbol if I def _= symbol
LivePlayerList -> MasterPlayerList, and added a Fit def for Player that checks holsters as well as inventory
example of packet conversion can be found with AmmoBoxDefinition
added conversion for ToolDefinition
added all Equipment packet conversion functionality; started working on Avatar-related conversions
continued effort towards a working Player packet conversion test
subclasses of Equipment apparently do not need to overide the type of the PacketConverter for generics
the logical conclusion: it doesn't matter what generics Packet returns so long as it returns an ObjectCreateConverter[] type
separated converters from definitions into files
changed some configuration information to final; added a bunch of converters, not fully tested though
changed function names in converters
replaced WSA packet-driven OCDM with Player object OCDM; upgrade to Float angular data
added partial support for LockerContainer; changed Equipment defaults to a common value
changes to AvatarConverter to include 5th slot; changes to VehicleConverter to make work; implementation of Fury in Vehicle->packet example in WSA
added a seat definition and renovated how the weapon controlled from a seat can be found
comments to files mainly; non-essential functionality to some classes, mostly access determination
moved converter tests to their own test file
write more of this test
added ServiceManager, as it is useful
pool range changes
added AvatarService, as it is useful
straightened out the GUID actors; added the static method for adding AmmoBoxes (to be converted later)
chnages to task resolution operation
complicated Task and TaskResolver logic is now possible; for example, you can schedule giving an AmmoBox a GUID, before giving a Tool a GUID, before placing the Tool in a player's hand; see Suppressor example in WSA
separated the Task trait and the TaskResolver actor into their own classes, moving the former RegistrationTaskResolver class into the /misc/ folder; deleted old backup copy of HubActor; modifications for PoC and supported tests
added better support and protection against putting things in the wrong hand when using inventories and the Player.Slot(n) function
GlobalDefinitions file; added laze pointer as an SItem, and gave it the command detonater management code; additionally fixed spelling of 'detonat[o]r' in Codec; early Terminal class work
updated tests to GlobalDefinitions entries; Terminal works but I don't like it
played with GUID pooling workflow, though to little avail; modifications to Terminal purchasing workflow, but still very volatile
modified NumberPoolActor and NumberPoolAccessor to make them more straightforward and not use akka ask as a go-between
fixed recovery options so that they do not cause more messages
trailing newline
InventoryItem (packet data) renamed InventoryItemData to remove ambiguity; Terminal functionality improved, allowing for swapping of exo-suits and the restoration of equipment positions
remove yet-unsupported Terminal messaging
made Terminal message more specific; can now put equipment into empty slot on exo-suit change; should report changes better
re-organized function calls to preserved items removed from holster slots on exo-suit change
moved predicate to the end of the list of params for recoverInventory so that repetition can be eliminated and a default value can be assigned
issues with making Tool; committing changes before revert of NumberPoolActor and NumberPoolAccessorActor to see if those broke it
a necessary evil, the reverting of these two Actors; subtask resolution does not work unless I do so, for now
restored the registration portion of tasking back to where it previously was (and better?)
NumberPoolActor and the ...AccessorActor are back to a comfortable place (and better?)
re-draw object in hand when switching exo-suits; build AmmoBoxes for Tool during Terminal-controlled creation, not Tool-controlled creation
order of task cleanup reversed to avoid index mismatch; added itsm to TerminalDefinition
common 5x5 AmmoBox size; added vehicle weapon ammo boxes to terminal
added error catching messages; stopped odd double-registering issue early
resolved issue where multiple subtasks started their main task multiple times; added checks that an object does not register a new GUID when it already has one
wrote unregistration code for Selling items back through the Terminal, repairing logic along the way; also, wrote a top-level GUID find for the Player for use of MoveItem
added framework for starting on Loadouts; managed issue with parent tasks starting before being summoned by child subtasks, often resulting in the complete skip of the execution phase of the parent; refactored registration tasks in WSA
modified Tool structure, exposing the AmmoSlot list a bit more
stuff stuff Tool ammo slot changes to default and comments
basic loadout framework for Infantry; need to integrate
initial work on FavoritesRequest packet
tests for FavoritesRequest packet
increased size of number pool for testing; wrote an algorithm that translates to and from the simplified version of objects stored in loadouts
refactored the tasking for adding Equipment and removing Equipment
updated the inventory so the Map of items does not have to rely on the GUID of an item being set before the item is inserted
untested routine for registering a player character; pushing all changes before making significant changes to the client init code structure
added to comments of BeginZoningMessage; transitioned player through and initial step of a more proper login GUID association
the current avatar is properly registered and there is something of a workflow with the messages and packets
corrected another bit of logic where inventories used to be indexed by object GUID in AvatarConverter; reversed unregister-remove task sequence such that GUID-less object is not allowed to exist in a stable object hierarchy
working Loadout loading
added identification functions to GlobalDefinitions; echo ObjectDelete back to client
accidentally got rid of something in WSA, but now restored; adding extra details to Terminal operations
separated Terminal into separate files and moved files into their own package under \objects\ for now; can delete loadouts now in WSA
better handling of ReloadMessage and MoveItemMessage
framework for better support involving dropping and picking up items
code comments and small modifications, such as the location and structure of the Terminal Equipment definitions
wrote comments in GlobalDefinitions; modified code so that a primitive form of player synchronization now occurs for future testing
added code to display already-dropped Equipment on the ground; limitations are explained; moved TaskResolver to more a global location, though I don't know if that helps
modified avatar unregister logic to ensure vacating player is deleted from other clients 'properly'
more comments; improved checks for MoveItemMessage; squared distances as necessary
subtle changes to login scripting so that test character is always offered
re-organizing the functions in WSA so that only the local objects separate the two message processing blocks
2017-05-30 18:46:01 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"set new values (health, armor, stamina) but only when alive" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.Health = 23
|
|
|
|
|
obj.Armor = 34
|
|
|
|
|
obj.Stamina = 45
|
|
|
|
|
obj.Health mustEqual 0
|
|
|
|
|
obj.Armor mustEqual 0
|
|
|
|
|
obj.Stamina mustEqual 0
|
|
|
|
|
|
|
|
|
|
obj.Spawn
|
|
|
|
|
obj.Health mustEqual obj.MaxHealth
|
|
|
|
|
obj.Armor mustEqual obj.MaxArmor
|
|
|
|
|
obj.Stamina mustEqual obj.MaxStamina
|
|
|
|
|
obj.Health = 23
|
|
|
|
|
obj.Armor = 34
|
|
|
|
|
obj.Stamina = 45
|
|
|
|
|
obj.Health mustEqual 23
|
|
|
|
|
obj.Armor mustEqual 34
|
|
|
|
|
obj.Stamina mustEqual 45
|
|
|
|
|
}
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"has visible slots" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.VisibleSlots mustEqual Set(0,1,2,3,4)
|
|
|
|
|
obj.ExoSuit = ExoSuitType.MAX
|
|
|
|
|
obj.VisibleSlots mustEqual Set(0)
|
|
|
|
|
}
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"init (Standard Exo-Suit)" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.ExoSuit mustEqual ExoSuitType.Standard
|
|
|
|
|
obj.Slot(0).Size mustEqual EquipmentSize.Pistol
|
|
|
|
|
obj.Slot(1).Size mustEqual EquipmentSize.Blocked
|
|
|
|
|
obj.Slot(2).Size mustEqual EquipmentSize.Rifle
|
|
|
|
|
obj.Slot(3).Size mustEqual EquipmentSize.Blocked
|
|
|
|
|
obj.Slot(4).Size mustEqual EquipmentSize.Melee
|
|
|
|
|
obj.Inventory.Width mustEqual 9
|
|
|
|
|
obj.Inventory.Height mustEqual 6
|
|
|
|
|
obj.Inventory.Offset mustEqual 6
|
|
|
|
|
}
|
new stuff for player server classes; this update is not yet complete
adjusted sample Reload code and added insertion and removal functions for inventory
more work on player classes; moving PacketResolution to another branch
decoupling GUIDs from objects; introduced Ammo enum; minor adjustments to inventory system; different object/class hierarchy
transferring basic files from another branch
converted from get/set to accessor/mutator; resolved conflict from name changes
refactored basic components such as GUID and location/orientation
utilities kludge; more fields are given accessor and mutators; create package for vehicle-specific classes
GUID assurance, now with less object creation
test files; changes to how AmmoBox initializes
sorry, a little bit of everything, so much I forgot to write it all down
switched to a unified fire mode object internal to a Tool
importing a heavily modified version of my GUID manager objects from the laternate branch; not finished or tested yet
created a Trait to make Key private, sources and selectors to allow NumberPools to exist independent of a NumberSource; placed Ascending into a misc folder
swapped the Return methods for selectors so that the more primitive logic is the one that needs to be overriden; renamed a selector to be more common; had to update some copyright messages
fixed major logic issue with NumberPool; added comments to NumberSource files
NumberSource tests
simplified and made more consistent the method naming convention of NumberSources
comments for NumberSelectors
starting on NumberSelector tests
modifications that should better support number pools; added a pool hub that acts on a predefined source
adjustment to how Tools and FireModeDefintion keep track of ammunition and ammunition slots; I don't think this is sufficient
small additions to Tools; filled out simple tests for other three Selectors
added object lookup notation for the pool hub
added more NumberSelector tests; removed the word 'Number' from subclass names
re-named classes, re-packaged classes, re-named packages; created new Selector, split pools to create a fallback for the NumberPoolHub
changes to NumberPool classes; tests on NumberPool classes
changes to NumberPool classes; tests on NumberPool classes2
some robust testing for NumberPoolHub, plus necessary modifications to other files
register and unregister functions now use Success and Failure conditions, save for one true thrown Exception
reduced the flow of certain algorithm chains, mainly by adding match statements and removing Exceptions
error message text
the same thing as the last commit, but with NumberPools rather than NumberPoolHub
various types of freeform registration
added sorting functions to Selectors to allow for hotswapping for number pools, especially to and from SpecificSelector; tests for NumberPoolHub
get numbers from an Array of indices, not the list of Numbers, in SimplePool
added a class to represent the four types of recovery kits
comments on Kit files
created package for supporting equipment classes; renamed /definition/ package
adding class for items that construct deployables, the router telepad included
added SimpleItem, classes for game Equipment that do not have internal state; re-organized ObjectDefinition files and the game objects they create to more naturally move around EquipmentSize and InventoryTile (size)
added SimpleItem tests (what they are...); removed example code that has hogging an import from AmmoBox
auto-sort for loading and fitting former inventory content back into the inventory
method of finding first available position to fit an certain size block in the inventory
changed CheckCollision return type to provide Try[List[Int]; fixed all existing references and tests
wrote comments for GridInventory methods; changed insertion param to be of form 'key -> element'
adding features to Player; created definitions for Player class; re-grouped ConstructionItem enumerations
initial work on implants; shuffled classes to better accommodate the new implant system, I think
wrote some tests for Implants; fixing Implant logic
wrote tests for Player class and made adjustments where necessary
basic initialization during Player creation based on exo-suit type
three wrapper Actors for the normal classes
comments on code
modified tests to improve accountability; added Resolver class to deal with multiple tasks that contribute to a larger task
changed Tools to an internal AmmoBox; don't have to def -= symbol if I def _= symbol
LivePlayerList -> MasterPlayerList, and added a Fit def for Player that checks holsters as well as inventory
example of packet conversion can be found with AmmoBoxDefinition
added conversion for ToolDefinition
added all Equipment packet conversion functionality; started working on Avatar-related conversions
continued effort towards a working Player packet conversion test
subclasses of Equipment apparently do not need to overide the type of the PacketConverter for generics
the logical conclusion: it doesn't matter what generics Packet returns so long as it returns an ObjectCreateConverter[] type
separated converters from definitions into files
changed some configuration information to final; added a bunch of converters, not fully tested though
changed function names in converters
replaced WSA packet-driven OCDM with Player object OCDM; upgrade to Float angular data
added partial support for LockerContainer; changed Equipment defaults to a common value
changes to AvatarConverter to include 5th slot; changes to VehicleConverter to make work; implementation of Fury in Vehicle->packet example in WSA
added a seat definition and renovated how the weapon controlled from a seat can be found
comments to files mainly; non-essential functionality to some classes, mostly access determination
moved converter tests to their own test file
write more of this test
added ServiceManager, as it is useful
pool range changes
added AvatarService, as it is useful
straightened out the GUID actors; added the static method for adding AmmoBoxes (to be converted later)
chnages to task resolution operation
complicated Task and TaskResolver logic is now possible; for example, you can schedule giving an AmmoBox a GUID, before giving a Tool a GUID, before placing the Tool in a player's hand; see Suppressor example in WSA
separated the Task trait and the TaskResolver actor into their own classes, moving the former RegistrationTaskResolver class into the /misc/ folder; deleted old backup copy of HubActor; modifications for PoC and supported tests
added better support and protection against putting things in the wrong hand when using inventories and the Player.Slot(n) function
GlobalDefinitions file; added laze pointer as an SItem, and gave it the command detonater management code; additionally fixed spelling of 'detonat[o]r' in Codec; early Terminal class work
updated tests to GlobalDefinitions entries; Terminal works but I don't like it
played with GUID pooling workflow, though to little avail; modifications to Terminal purchasing workflow, but still very volatile
modified NumberPoolActor and NumberPoolAccessor to make them more straightforward and not use akka ask as a go-between
fixed recovery options so that they do not cause more messages
trailing newline
InventoryItem (packet data) renamed InventoryItemData to remove ambiguity; Terminal functionality improved, allowing for swapping of exo-suits and the restoration of equipment positions
remove yet-unsupported Terminal messaging
made Terminal message more specific; can now put equipment into empty slot on exo-suit change; should report changes better
re-organized function calls to preserved items removed from holster slots on exo-suit change
moved predicate to the end of the list of params for recoverInventory so that repetition can be eliminated and a default value can be assigned
issues with making Tool; committing changes before revert of NumberPoolActor and NumberPoolAccessorActor to see if those broke it
a necessary evil, the reverting of these two Actors; subtask resolution does not work unless I do so, for now
restored the registration portion of tasking back to where it previously was (and better?)
NumberPoolActor and the ...AccessorActor are back to a comfortable place (and better?)
re-draw object in hand when switching exo-suits; build AmmoBoxes for Tool during Terminal-controlled creation, not Tool-controlled creation
order of task cleanup reversed to avoid index mismatch; added itsm to TerminalDefinition
common 5x5 AmmoBox size; added vehicle weapon ammo boxes to terminal
added error catching messages; stopped odd double-registering issue early
resolved issue where multiple subtasks started their main task multiple times; added checks that an object does not register a new GUID when it already has one
wrote unregistration code for Selling items back through the Terminal, repairing logic along the way; also, wrote a top-level GUID find for the Player for use of MoveItem
added framework for starting on Loadouts; managed issue with parent tasks starting before being summoned by child subtasks, often resulting in the complete skip of the execution phase of the parent; refactored registration tasks in WSA
modified Tool structure, exposing the AmmoSlot list a bit more
stuff stuff Tool ammo slot changes to default and comments
basic loadout framework for Infantry; need to integrate
initial work on FavoritesRequest packet
tests for FavoritesRequest packet
increased size of number pool for testing; wrote an algorithm that translates to and from the simplified version of objects stored in loadouts
refactored the tasking for adding Equipment and removing Equipment
updated the inventory so the Map of items does not have to rely on the GUID of an item being set before the item is inserted
untested routine for registering a player character; pushing all changes before making significant changes to the client init code structure
added to comments of BeginZoningMessage; transitioned player through and initial step of a more proper login GUID association
the current avatar is properly registered and there is something of a workflow with the messages and packets
corrected another bit of logic where inventories used to be indexed by object GUID in AvatarConverter; reversed unregister-remove task sequence such that GUID-less object is not allowed to exist in a stable object hierarchy
working Loadout loading
added identification functions to GlobalDefinitions; echo ObjectDelete back to client
accidentally got rid of something in WSA, but now restored; adding extra details to Terminal operations
separated Terminal into separate files and moved files into their own package under \objects\ for now; can delete loadouts now in WSA
better handling of ReloadMessage and MoveItemMessage
framework for better support involving dropping and picking up items
code comments and small modifications, such as the location and structure of the Terminal Equipment definitions
wrote comments in GlobalDefinitions; modified code so that a primitive form of player synchronization now occurs for future testing
added code to display already-dropped Equipment on the ground; limitations are explained; moved TaskResolver to more a global location, though I don't know if that helps
modified avatar unregister logic to ensure vacating player is deleted from other clients 'properly'
more comments; improved checks for MoveItemMessage; squared distances as necessary
subtle changes to login scripting so that test character is always offered
re-organizing the functions in WSA so that only the local objects separate the two message processing blocks
2017-05-30 18:46:01 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"draw equipped holsters only" in {
|
|
|
|
|
val wep = SimpleItem(SimpleItemDefinition(149))
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.Slot(1).Size = EquipmentSize.Pistol
|
|
|
|
|
obj.Slot(1).Equipment = wep
|
|
|
|
|
obj.DrawnSlot mustEqual Player.HandsDownSlot
|
|
|
|
|
obj.DrawnSlot = 0
|
|
|
|
|
obj.DrawnSlot mustEqual Player.HandsDownSlot
|
|
|
|
|
obj.DrawnSlot = 1
|
|
|
|
|
obj.DrawnSlot mustEqual 1
|
|
|
|
|
}
|
new stuff for player server classes; this update is not yet complete
adjusted sample Reload code and added insertion and removal functions for inventory
more work on player classes; moving PacketResolution to another branch
decoupling GUIDs from objects; introduced Ammo enum; minor adjustments to inventory system; different object/class hierarchy
transferring basic files from another branch
converted from get/set to accessor/mutator; resolved conflict from name changes
refactored basic components such as GUID and location/orientation
utilities kludge; more fields are given accessor and mutators; create package for vehicle-specific classes
GUID assurance, now with less object creation
test files; changes to how AmmoBox initializes
sorry, a little bit of everything, so much I forgot to write it all down
switched to a unified fire mode object internal to a Tool
importing a heavily modified version of my GUID manager objects from the laternate branch; not finished or tested yet
created a Trait to make Key private, sources and selectors to allow NumberPools to exist independent of a NumberSource; placed Ascending into a misc folder
swapped the Return methods for selectors so that the more primitive logic is the one that needs to be overriden; renamed a selector to be more common; had to update some copyright messages
fixed major logic issue with NumberPool; added comments to NumberSource files
NumberSource tests
simplified and made more consistent the method naming convention of NumberSources
comments for NumberSelectors
starting on NumberSelector tests
modifications that should better support number pools; added a pool hub that acts on a predefined source
adjustment to how Tools and FireModeDefintion keep track of ammunition and ammunition slots; I don't think this is sufficient
small additions to Tools; filled out simple tests for other three Selectors
added object lookup notation for the pool hub
added more NumberSelector tests; removed the word 'Number' from subclass names
re-named classes, re-packaged classes, re-named packages; created new Selector, split pools to create a fallback for the NumberPoolHub
changes to NumberPool classes; tests on NumberPool classes
changes to NumberPool classes; tests on NumberPool classes2
some robust testing for NumberPoolHub, plus necessary modifications to other files
register and unregister functions now use Success and Failure conditions, save for one true thrown Exception
reduced the flow of certain algorithm chains, mainly by adding match statements and removing Exceptions
error message text
the same thing as the last commit, but with NumberPools rather than NumberPoolHub
various types of freeform registration
added sorting functions to Selectors to allow for hotswapping for number pools, especially to and from SpecificSelector; tests for NumberPoolHub
get numbers from an Array of indices, not the list of Numbers, in SimplePool
added a class to represent the four types of recovery kits
comments on Kit files
created package for supporting equipment classes; renamed /definition/ package
adding class for items that construct deployables, the router telepad included
added SimpleItem, classes for game Equipment that do not have internal state; re-organized ObjectDefinition files and the game objects they create to more naturally move around EquipmentSize and InventoryTile (size)
added SimpleItem tests (what they are...); removed example code that has hogging an import from AmmoBox
auto-sort for loading and fitting former inventory content back into the inventory
method of finding first available position to fit an certain size block in the inventory
changed CheckCollision return type to provide Try[List[Int]; fixed all existing references and tests
wrote comments for GridInventory methods; changed insertion param to be of form 'key -> element'
adding features to Player; created definitions for Player class; re-grouped ConstructionItem enumerations
initial work on implants; shuffled classes to better accommodate the new implant system, I think
wrote some tests for Implants; fixing Implant logic
wrote tests for Player class and made adjustments where necessary
basic initialization during Player creation based on exo-suit type
three wrapper Actors for the normal classes
comments on code
modified tests to improve accountability; added Resolver class to deal with multiple tasks that contribute to a larger task
changed Tools to an internal AmmoBox; don't have to def -= symbol if I def _= symbol
LivePlayerList -> MasterPlayerList, and added a Fit def for Player that checks holsters as well as inventory
example of packet conversion can be found with AmmoBoxDefinition
added conversion for ToolDefinition
added all Equipment packet conversion functionality; started working on Avatar-related conversions
continued effort towards a working Player packet conversion test
subclasses of Equipment apparently do not need to overide the type of the PacketConverter for generics
the logical conclusion: it doesn't matter what generics Packet returns so long as it returns an ObjectCreateConverter[] type
separated converters from definitions into files
changed some configuration information to final; added a bunch of converters, not fully tested though
changed function names in converters
replaced WSA packet-driven OCDM with Player object OCDM; upgrade to Float angular data
added partial support for LockerContainer; changed Equipment defaults to a common value
changes to AvatarConverter to include 5th slot; changes to VehicleConverter to make work; implementation of Fury in Vehicle->packet example in WSA
added a seat definition and renovated how the weapon controlled from a seat can be found
comments to files mainly; non-essential functionality to some classes, mostly access determination
moved converter tests to their own test file
write more of this test
added ServiceManager, as it is useful
pool range changes
added AvatarService, as it is useful
straightened out the GUID actors; added the static method for adding AmmoBoxes (to be converted later)
chnages to task resolution operation
complicated Task and TaskResolver logic is now possible; for example, you can schedule giving an AmmoBox a GUID, before giving a Tool a GUID, before placing the Tool in a player's hand; see Suppressor example in WSA
separated the Task trait and the TaskResolver actor into their own classes, moving the former RegistrationTaskResolver class into the /misc/ folder; deleted old backup copy of HubActor; modifications for PoC and supported tests
added better support and protection against putting things in the wrong hand when using inventories and the Player.Slot(n) function
GlobalDefinitions file; added laze pointer as an SItem, and gave it the command detonater management code; additionally fixed spelling of 'detonat[o]r' in Codec; early Terminal class work
updated tests to GlobalDefinitions entries; Terminal works but I don't like it
played with GUID pooling workflow, though to little avail; modifications to Terminal purchasing workflow, but still very volatile
modified NumberPoolActor and NumberPoolAccessor to make them more straightforward and not use akka ask as a go-between
fixed recovery options so that they do not cause more messages
trailing newline
InventoryItem (packet data) renamed InventoryItemData to remove ambiguity; Terminal functionality improved, allowing for swapping of exo-suits and the restoration of equipment positions
remove yet-unsupported Terminal messaging
made Terminal message more specific; can now put equipment into empty slot on exo-suit change; should report changes better
re-organized function calls to preserved items removed from holster slots on exo-suit change
moved predicate to the end of the list of params for recoverInventory so that repetition can be eliminated and a default value can be assigned
issues with making Tool; committing changes before revert of NumberPoolActor and NumberPoolAccessorActor to see if those broke it
a necessary evil, the reverting of these two Actors; subtask resolution does not work unless I do so, for now
restored the registration portion of tasking back to where it previously was (and better?)
NumberPoolActor and the ...AccessorActor are back to a comfortable place (and better?)
re-draw object in hand when switching exo-suits; build AmmoBoxes for Tool during Terminal-controlled creation, not Tool-controlled creation
order of task cleanup reversed to avoid index mismatch; added itsm to TerminalDefinition
common 5x5 AmmoBox size; added vehicle weapon ammo boxes to terminal
added error catching messages; stopped odd double-registering issue early
resolved issue where multiple subtasks started their main task multiple times; added checks that an object does not register a new GUID when it already has one
wrote unregistration code for Selling items back through the Terminal, repairing logic along the way; also, wrote a top-level GUID find for the Player for use of MoveItem
added framework for starting on Loadouts; managed issue with parent tasks starting before being summoned by child subtasks, often resulting in the complete skip of the execution phase of the parent; refactored registration tasks in WSA
modified Tool structure, exposing the AmmoSlot list a bit more
stuff stuff Tool ammo slot changes to default and comments
basic loadout framework for Infantry; need to integrate
initial work on FavoritesRequest packet
tests for FavoritesRequest packet
increased size of number pool for testing; wrote an algorithm that translates to and from the simplified version of objects stored in loadouts
refactored the tasking for adding Equipment and removing Equipment
updated the inventory so the Map of items does not have to rely on the GUID of an item being set before the item is inserted
untested routine for registering a player character; pushing all changes before making significant changes to the client init code structure
added to comments of BeginZoningMessage; transitioned player through and initial step of a more proper login GUID association
the current avatar is properly registered and there is something of a workflow with the messages and packets
corrected another bit of logic where inventories used to be indexed by object GUID in AvatarConverter; reversed unregister-remove task sequence such that GUID-less object is not allowed to exist in a stable object hierarchy
working Loadout loading
added identification functions to GlobalDefinitions; echo ObjectDelete back to client
accidentally got rid of something in WSA, but now restored; adding extra details to Terminal operations
separated Terminal into separate files and moved files into their own package under \objects\ for now; can delete loadouts now in WSA
better handling of ReloadMessage and MoveItemMessage
framework for better support involving dropping and picking up items
code comments and small modifications, such as the location and structure of the Terminal Equipment definitions
wrote comments in GlobalDefinitions; modified code so that a primitive form of player synchronization now occurs for future testing
added code to display already-dropped Equipment on the ground; limitations are explained; moved TaskResolver to more a global location, though I don't know if that helps
modified avatar unregister logic to ensure vacating player is deleted from other clients 'properly'
more comments; improved checks for MoveItemMessage; squared distances as necessary
subtle changes to login scripting so that test character is always offered
re-organizing the functions in WSA so that only the local objects separate the two message processing blocks
2017-05-30 18:46:01 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"remember the last drawn holster" in {
|
|
|
|
|
val wep1 = SimpleItem(SimpleItemDefinition(149))
|
|
|
|
|
val wep2 = SimpleItem(SimpleItemDefinition(149))
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.Slot(0).Size = EquipmentSize.Pistol
|
|
|
|
|
obj.Slot(0).Equipment = wep1
|
|
|
|
|
obj.Slot(1).Size = EquipmentSize.Pistol
|
|
|
|
|
obj.Slot(1).Equipment = wep2
|
|
|
|
|
obj.DrawnSlot mustEqual Player.HandsDownSlot //default value
|
|
|
|
|
obj.LastDrawnSlot mustEqual Player.HandsDownSlot //default value
|
|
|
|
|
|
|
|
|
|
obj.DrawnSlot = 1
|
|
|
|
|
obj.DrawnSlot mustEqual 1
|
|
|
|
|
obj.LastDrawnSlot mustEqual 1
|
|
|
|
|
|
|
|
|
|
obj.DrawnSlot = 0
|
|
|
|
|
obj.DrawnSlot mustEqual 0
|
|
|
|
|
obj.LastDrawnSlot mustEqual 0
|
|
|
|
|
|
|
|
|
|
obj.DrawnSlot = Player.HandsDownSlot
|
|
|
|
|
obj.DrawnSlot mustEqual Player.HandsDownSlot
|
|
|
|
|
obj.LastDrawnSlot mustEqual 0
|
|
|
|
|
|
|
|
|
|
obj.DrawnSlot = 1
|
|
|
|
|
obj.DrawnSlot mustEqual 1
|
|
|
|
|
obj.LastDrawnSlot mustEqual 1
|
|
|
|
|
|
|
|
|
|
obj.DrawnSlot = 0
|
|
|
|
|
obj.DrawnSlot mustEqual 0
|
|
|
|
|
obj.LastDrawnSlot mustEqual 0
|
|
|
|
|
|
|
|
|
|
obj.DrawnSlot = 1
|
|
|
|
|
obj.DrawnSlot mustEqual 1
|
|
|
|
|
obj.LastDrawnSlot mustEqual 1
|
|
|
|
|
|
|
|
|
|
obj.DrawnSlot = Player.HandsDownSlot
|
|
|
|
|
obj.DrawnSlot mustEqual Player.HandsDownSlot
|
|
|
|
|
obj.LastDrawnSlot mustEqual 1
|
|
|
|
|
}
|
new stuff for player server classes; this update is not yet complete
adjusted sample Reload code and added insertion and removal functions for inventory
more work on player classes; moving PacketResolution to another branch
decoupling GUIDs from objects; introduced Ammo enum; minor adjustments to inventory system; different object/class hierarchy
transferring basic files from another branch
converted from get/set to accessor/mutator; resolved conflict from name changes
refactored basic components such as GUID and location/orientation
utilities kludge; more fields are given accessor and mutators; create package for vehicle-specific classes
GUID assurance, now with less object creation
test files; changes to how AmmoBox initializes
sorry, a little bit of everything, so much I forgot to write it all down
switched to a unified fire mode object internal to a Tool
importing a heavily modified version of my GUID manager objects from the laternate branch; not finished or tested yet
created a Trait to make Key private, sources and selectors to allow NumberPools to exist independent of a NumberSource; placed Ascending into a misc folder
swapped the Return methods for selectors so that the more primitive logic is the one that needs to be overriden; renamed a selector to be more common; had to update some copyright messages
fixed major logic issue with NumberPool; added comments to NumberSource files
NumberSource tests
simplified and made more consistent the method naming convention of NumberSources
comments for NumberSelectors
starting on NumberSelector tests
modifications that should better support number pools; added a pool hub that acts on a predefined source
adjustment to how Tools and FireModeDefintion keep track of ammunition and ammunition slots; I don't think this is sufficient
small additions to Tools; filled out simple tests for other three Selectors
added object lookup notation for the pool hub
added more NumberSelector tests; removed the word 'Number' from subclass names
re-named classes, re-packaged classes, re-named packages; created new Selector, split pools to create a fallback for the NumberPoolHub
changes to NumberPool classes; tests on NumberPool classes
changes to NumberPool classes; tests on NumberPool classes2
some robust testing for NumberPoolHub, plus necessary modifications to other files
register and unregister functions now use Success and Failure conditions, save for one true thrown Exception
reduced the flow of certain algorithm chains, mainly by adding match statements and removing Exceptions
error message text
the same thing as the last commit, but with NumberPools rather than NumberPoolHub
various types of freeform registration
added sorting functions to Selectors to allow for hotswapping for number pools, especially to and from SpecificSelector; tests for NumberPoolHub
get numbers from an Array of indices, not the list of Numbers, in SimplePool
added a class to represent the four types of recovery kits
comments on Kit files
created package for supporting equipment classes; renamed /definition/ package
adding class for items that construct deployables, the router telepad included
added SimpleItem, classes for game Equipment that do not have internal state; re-organized ObjectDefinition files and the game objects they create to more naturally move around EquipmentSize and InventoryTile (size)
added SimpleItem tests (what they are...); removed example code that has hogging an import from AmmoBox
auto-sort for loading and fitting former inventory content back into the inventory
method of finding first available position to fit an certain size block in the inventory
changed CheckCollision return type to provide Try[List[Int]; fixed all existing references and tests
wrote comments for GridInventory methods; changed insertion param to be of form 'key -> element'
adding features to Player; created definitions for Player class; re-grouped ConstructionItem enumerations
initial work on implants; shuffled classes to better accommodate the new implant system, I think
wrote some tests for Implants; fixing Implant logic
wrote tests for Player class and made adjustments where necessary
basic initialization during Player creation based on exo-suit type
three wrapper Actors for the normal classes
comments on code
modified tests to improve accountability; added Resolver class to deal with multiple tasks that contribute to a larger task
changed Tools to an internal AmmoBox; don't have to def -= symbol if I def _= symbol
LivePlayerList -> MasterPlayerList, and added a Fit def for Player that checks holsters as well as inventory
example of packet conversion can be found with AmmoBoxDefinition
added conversion for ToolDefinition
added all Equipment packet conversion functionality; started working on Avatar-related conversions
continued effort towards a working Player packet conversion test
subclasses of Equipment apparently do not need to overide the type of the PacketConverter for generics
the logical conclusion: it doesn't matter what generics Packet returns so long as it returns an ObjectCreateConverter[] type
separated converters from definitions into files
changed some configuration information to final; added a bunch of converters, not fully tested though
changed function names in converters
replaced WSA packet-driven OCDM with Player object OCDM; upgrade to Float angular data
added partial support for LockerContainer; changed Equipment defaults to a common value
changes to AvatarConverter to include 5th slot; changes to VehicleConverter to make work; implementation of Fury in Vehicle->packet example in WSA
added a seat definition and renovated how the weapon controlled from a seat can be found
comments to files mainly; non-essential functionality to some classes, mostly access determination
moved converter tests to their own test file
write more of this test
added ServiceManager, as it is useful
pool range changes
added AvatarService, as it is useful
straightened out the GUID actors; added the static method for adding AmmoBoxes (to be converted later)
chnages to task resolution operation
complicated Task and TaskResolver logic is now possible; for example, you can schedule giving an AmmoBox a GUID, before giving a Tool a GUID, before placing the Tool in a player's hand; see Suppressor example in WSA
separated the Task trait and the TaskResolver actor into their own classes, moving the former RegistrationTaskResolver class into the /misc/ folder; deleted old backup copy of HubActor; modifications for PoC and supported tests
added better support and protection against putting things in the wrong hand when using inventories and the Player.Slot(n) function
GlobalDefinitions file; added laze pointer as an SItem, and gave it the command detonater management code; additionally fixed spelling of 'detonat[o]r' in Codec; early Terminal class work
updated tests to GlobalDefinitions entries; Terminal works but I don't like it
played with GUID pooling workflow, though to little avail; modifications to Terminal purchasing workflow, but still very volatile
modified NumberPoolActor and NumberPoolAccessor to make them more straightforward and not use akka ask as a go-between
fixed recovery options so that they do not cause more messages
trailing newline
InventoryItem (packet data) renamed InventoryItemData to remove ambiguity; Terminal functionality improved, allowing for swapping of exo-suits and the restoration of equipment positions
remove yet-unsupported Terminal messaging
made Terminal message more specific; can now put equipment into empty slot on exo-suit change; should report changes better
re-organized function calls to preserved items removed from holster slots on exo-suit change
moved predicate to the end of the list of params for recoverInventory so that repetition can be eliminated and a default value can be assigned
issues with making Tool; committing changes before revert of NumberPoolActor and NumberPoolAccessorActor to see if those broke it
a necessary evil, the reverting of these two Actors; subtask resolution does not work unless I do so, for now
restored the registration portion of tasking back to where it previously was (and better?)
NumberPoolActor and the ...AccessorActor are back to a comfortable place (and better?)
re-draw object in hand when switching exo-suits; build AmmoBoxes for Tool during Terminal-controlled creation, not Tool-controlled creation
order of task cleanup reversed to avoid index mismatch; added itsm to TerminalDefinition
common 5x5 AmmoBox size; added vehicle weapon ammo boxes to terminal
added error catching messages; stopped odd double-registering issue early
resolved issue where multiple subtasks started their main task multiple times; added checks that an object does not register a new GUID when it already has one
wrote unregistration code for Selling items back through the Terminal, repairing logic along the way; also, wrote a top-level GUID find for the Player for use of MoveItem
added framework for starting on Loadouts; managed issue with parent tasks starting before being summoned by child subtasks, often resulting in the complete skip of the execution phase of the parent; refactored registration tasks in WSA
modified Tool structure, exposing the AmmoSlot list a bit more
stuff stuff Tool ammo slot changes to default and comments
basic loadout framework for Infantry; need to integrate
initial work on FavoritesRequest packet
tests for FavoritesRequest packet
increased size of number pool for testing; wrote an algorithm that translates to and from the simplified version of objects stored in loadouts
refactored the tasking for adding Equipment and removing Equipment
updated the inventory so the Map of items does not have to rely on the GUID of an item being set before the item is inserted
untested routine for registering a player character; pushing all changes before making significant changes to the client init code structure
added to comments of BeginZoningMessage; transitioned player through and initial step of a more proper login GUID association
the current avatar is properly registered and there is something of a workflow with the messages and packets
corrected another bit of logic where inventories used to be indexed by object GUID in AvatarConverter; reversed unregister-remove task sequence such that GUID-less object is not allowed to exist in a stable object hierarchy
working Loadout loading
added identification functions to GlobalDefinitions; echo ObjectDelete back to client
accidentally got rid of something in WSA, but now restored; adding extra details to Terminal operations
separated Terminal into separate files and moved files into their own package under \objects\ for now; can delete loadouts now in WSA
better handling of ReloadMessage and MoveItemMessage
framework for better support involving dropping and picking up items
code comments and small modifications, such as the location and structure of the Terminal Equipment definitions
wrote comments in GlobalDefinitions; modified code so that a primitive form of player synchronization now occurs for future testing
added code to display already-dropped Equipment on the ground; limitations are explained; moved TaskResolver to more a global location, though I don't know if that helps
modified avatar unregister logic to ensure vacating player is deleted from other clients 'properly'
more comments; improved checks for MoveItemMessage; squared distances as necessary
subtle changes to login scripting so that test character is always offered
re-organizing the functions in WSA so that only the local objects separate the two message processing blocks
2017-05-30 18:46:01 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"hold something in their free hand" in {
|
|
|
|
|
val wep = SimpleItem(SimpleItemDefinition(149))
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.Slot(Player.FreeHandSlot).Equipment = wep
|
2017-12-05 00:37:24 -05:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
obj.Slot(Player.FreeHandSlot).Equipment.get.Definition.ObjectId mustEqual 149
|
|
|
|
|
}
|
2017-12-05 00:37:24 -05:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"provide an invalid hand that can not hold anything" in {
|
|
|
|
|
val wep = SimpleItem(SimpleItemDefinition(149))
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.Slot(-1).Equipment = wep
|
2017-12-05 00:37:24 -05:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
obj.Slot(-1).Equipment mustEqual None
|
|
|
|
|
}
|
2017-12-05 00:37:24 -05:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"search for the smallest available slot in which to store equipment" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.Inventory.Resize(3,3) //fits one item
|
2017-12-05 00:37:24 -05:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
obj.Fit(Tool(GlobalDefinitions.beamer)) mustEqual Some(0)
|
2017-12-05 00:37:24 -05:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
obj.Fit(Tool(GlobalDefinitions.suppressor)) mustEqual Some(2)
|
2017-12-05 00:37:24 -05:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
val ammo = AmmoBox(GlobalDefinitions.bullet_9mm)
|
|
|
|
|
val ammo2 = AmmoBox(GlobalDefinitions.bullet_9mm)
|
|
|
|
|
val ammo3 = AmmoBox(GlobalDefinitions.bullet_9mm)
|
|
|
|
|
obj.Fit(ammo) mustEqual Some(6)
|
|
|
|
|
obj.Slot(6).Equipment = ammo
|
|
|
|
|
obj.Fit(ammo2) mustEqual Some(Player.FreeHandSlot)
|
|
|
|
|
obj.Slot(Player.FreeHandSlot).Equipment = ammo2
|
|
|
|
|
obj.Fit(ammo3) mustEqual None
|
|
|
|
|
}
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"can use their free hand to hold things" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
val ammo = AmmoBox(GlobalDefinitions.bullet_9mm)
|
|
|
|
|
obj.FreeHand.Equipment mustEqual None
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
obj.FreeHand.Equipment = ammo
|
|
|
|
|
obj.FreeHand.Equipment mustEqual Some(ammo)
|
|
|
|
|
}
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"can access the player's locker-space" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.Slot(5).Equipment.get.isInstanceOf[LockerContainer] mustEqual true
|
|
|
|
|
}
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"can find equipment" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.Slot(0).Equipment = {
|
|
|
|
|
val item = Tool(beamer)
|
|
|
|
|
item.GUID = PlanetSideGUID(1)
|
|
|
|
|
item
|
|
|
|
|
}
|
|
|
|
|
obj.Slot(4).Equipment = {
|
|
|
|
|
val item = Tool(forceblade)
|
|
|
|
|
item.GUID = PlanetSideGUID(2)
|
|
|
|
|
item
|
|
|
|
|
}
|
|
|
|
|
obj.Slot(6).Equipment = {
|
|
|
|
|
val item = ConstructionItem(ace)
|
|
|
|
|
item.GUID = PlanetSideGUID(3)
|
|
|
|
|
item
|
|
|
|
|
}
|
|
|
|
|
obj.Locker.Slot(6).Equipment = {
|
|
|
|
|
val item = Kit(medkit)
|
|
|
|
|
item.GUID = PlanetSideGUID(4)
|
|
|
|
|
item
|
|
|
|
|
}
|
|
|
|
|
obj.FreeHand.Equipment = {
|
|
|
|
|
val item = SimpleItem(remote_electronics_kit)
|
|
|
|
|
item.GUID = PlanetSideGUID(5)
|
|
|
|
|
item
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
obj.Find(PlanetSideGUID(1)) mustEqual Some(0) //holsters
|
|
|
|
|
obj.Find(PlanetSideGUID(2)) mustEqual Some(4) //holsters, melee
|
|
|
|
|
obj.Find(PlanetSideGUID(3)) mustEqual Some(6) //inventory
|
|
|
|
|
obj.Find(PlanetSideGUID(4)) mustEqual None //can not find in locker-space
|
|
|
|
|
obj.Find(PlanetSideGUID(5)) mustEqual Some(Player.FreeHandSlot) //free hand
|
|
|
|
|
obj.Find(PlanetSideGUID(6)) mustEqual None //not here
|
|
|
|
|
}
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"does equipment collision checking (are we already holding something there?)" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
val item1 = Tool(beamer)
|
|
|
|
|
val item2 = Kit(medkit)
|
|
|
|
|
val item3 = AmmoBox(GlobalDefinitions.bullet_9mm)
|
|
|
|
|
obj.Slot(0).Equipment = item1
|
|
|
|
|
obj.Slot(6).Equipment = item2
|
|
|
|
|
obj.FreeHand.Equipment = item3
|
|
|
|
|
|
|
|
|
|
obj.Collisions(0, 1, 1) match {
|
|
|
|
|
case Success(List(item)) =>
|
|
|
|
|
item.obj mustEqual item1
|
|
|
|
|
item.start mustEqual 0
|
|
|
|
|
case _ =>
|
|
|
|
|
ko
|
|
|
|
|
} //holsters
|
|
|
|
|
|
|
|
|
|
obj.Collisions(1, 1, 1) match {
|
|
|
|
|
case Success(List()) => ;
|
|
|
|
|
case _ =>
|
|
|
|
|
ko
|
|
|
|
|
} //holsters, nothing
|
|
|
|
|
|
|
|
|
|
obj.Collisions(6, 1, 1)match {
|
|
|
|
|
case Success(List(item)) =>
|
|
|
|
|
item.obj mustEqual item2
|
|
|
|
|
item.start mustEqual 6
|
|
|
|
|
case _ =>
|
|
|
|
|
ko
|
|
|
|
|
} //inventory
|
|
|
|
|
|
|
|
|
|
obj.Collisions(Player.FreeHandSlot, 1, 1)match {
|
|
|
|
|
case Success(List(item)) =>
|
|
|
|
|
item.obj mustEqual item3
|
|
|
|
|
item.start mustEqual Player.FreeHandSlot
|
|
|
|
|
case _ =>
|
|
|
|
|
ko
|
|
|
|
|
} //free hand
|
|
|
|
|
}
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"battle experience point values of the avatar" in {
|
|
|
|
|
val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
val player = Player(avatar)
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
player.BEP mustEqual avatar.BEP
|
|
|
|
|
avatar.BEP = 1002
|
|
|
|
|
player.BEP mustEqual avatar.BEP
|
|
|
|
|
}
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"command experience point values of the avatar" in {
|
|
|
|
|
val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
val player = Player(avatar)
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
player.CEP mustEqual avatar.CEP
|
|
|
|
|
avatar.CEP = 1002
|
|
|
|
|
player.CEP mustEqual avatar.CEP
|
|
|
|
|
}
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"can get a quick summary of implant slots (default)" in {
|
|
|
|
|
val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
val player = Player(avatar)
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
player.Implants mustEqual Array.empty
|
|
|
|
|
}
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"can get a quick summary of implant slots (two unlocked, one installed)" in {
|
|
|
|
|
val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
val player = Player(avatar)
|
|
|
|
|
val temp = new ImplantDefinition(1)
|
|
|
|
|
avatar.Implants(0).Unlocked = true
|
|
|
|
|
avatar.InstallImplant(new ImplantDefinition(1))
|
|
|
|
|
avatar.Implants(1).Unlocked = true
|
|
|
|
|
avatar.InstallImplant(new ImplantDefinition(2))
|
|
|
|
|
avatar.UninstallImplant(temp.Type)
|
|
|
|
|
|
|
|
|
|
val list = player.Implants
|
|
|
|
|
//slot 0
|
|
|
|
|
val (implant1, init1, active1) = list(0)
|
|
|
|
|
implant1 mustEqual ImplantType.None
|
|
|
|
|
init1 mustEqual -1
|
|
|
|
|
active1 mustEqual false
|
|
|
|
|
//slot 1
|
|
|
|
|
val (implant2, init2, active2) = list(1)
|
|
|
|
|
implant2 mustEqual ImplantType(2)
|
|
|
|
|
init2 mustEqual 0
|
|
|
|
|
active2 mustEqual false
|
|
|
|
|
}
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"can get a quick summary of implant slots (all unlocked, first two installed)" in {
|
|
|
|
|
val avatar = Avatar("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
val player = Player(avatar)
|
|
|
|
|
avatar.Implants(0).Unlocked = true
|
|
|
|
|
avatar.InstallImplant(new ImplantDefinition(1))
|
|
|
|
|
avatar.Implants(0).Initialized = true
|
|
|
|
|
avatar.Implants(0).Active = true
|
|
|
|
|
avatar.Implants(1).Unlocked = true
|
|
|
|
|
avatar.InstallImplant(new ImplantDefinition(2))
|
|
|
|
|
avatar.Implants(1).Initialized = true
|
|
|
|
|
avatar.Implants(1).Active = false
|
|
|
|
|
avatar.Implants(2).Unlocked = true
|
|
|
|
|
|
|
|
|
|
val list = player.Implants
|
|
|
|
|
//slot 0
|
|
|
|
|
val (implant1, init1, active1) = list(0)
|
|
|
|
|
implant1 mustEqual ImplantType(1)
|
|
|
|
|
init1 mustEqual 0
|
|
|
|
|
active1 mustEqual true
|
|
|
|
|
//slot 1
|
|
|
|
|
val (implant2, init2, active2) = list(1)
|
|
|
|
|
implant2 mustEqual ImplantType(2)
|
|
|
|
|
init2 mustEqual 0
|
|
|
|
|
active2 mustEqual false
|
|
|
|
|
//slot 2
|
|
|
|
|
val (implant3, init3, active3) = list(2)
|
|
|
|
|
implant3 mustEqual ImplantType.None
|
|
|
|
|
init3 mustEqual -1
|
|
|
|
|
active3 mustEqual false
|
|
|
|
|
}
|
new stuff for player server classes; this update is not yet complete
adjusted sample Reload code and added insertion and removal functions for inventory
more work on player classes; moving PacketResolution to another branch
decoupling GUIDs from objects; introduced Ammo enum; minor adjustments to inventory system; different object/class hierarchy
transferring basic files from another branch
converted from get/set to accessor/mutator; resolved conflict from name changes
refactored basic components such as GUID and location/orientation
utilities kludge; more fields are given accessor and mutators; create package for vehicle-specific classes
GUID assurance, now with less object creation
test files; changes to how AmmoBox initializes
sorry, a little bit of everything, so much I forgot to write it all down
switched to a unified fire mode object internal to a Tool
importing a heavily modified version of my GUID manager objects from the laternate branch; not finished or tested yet
created a Trait to make Key private, sources and selectors to allow NumberPools to exist independent of a NumberSource; placed Ascending into a misc folder
swapped the Return methods for selectors so that the more primitive logic is the one that needs to be overriden; renamed a selector to be more common; had to update some copyright messages
fixed major logic issue with NumberPool; added comments to NumberSource files
NumberSource tests
simplified and made more consistent the method naming convention of NumberSources
comments for NumberSelectors
starting on NumberSelector tests
modifications that should better support number pools; added a pool hub that acts on a predefined source
adjustment to how Tools and FireModeDefintion keep track of ammunition and ammunition slots; I don't think this is sufficient
small additions to Tools; filled out simple tests for other three Selectors
added object lookup notation for the pool hub
added more NumberSelector tests; removed the word 'Number' from subclass names
re-named classes, re-packaged classes, re-named packages; created new Selector, split pools to create a fallback for the NumberPoolHub
changes to NumberPool classes; tests on NumberPool classes
changes to NumberPool classes; tests on NumberPool classes2
some robust testing for NumberPoolHub, plus necessary modifications to other files
register and unregister functions now use Success and Failure conditions, save for one true thrown Exception
reduced the flow of certain algorithm chains, mainly by adding match statements and removing Exceptions
error message text
the same thing as the last commit, but with NumberPools rather than NumberPoolHub
various types of freeform registration
added sorting functions to Selectors to allow for hotswapping for number pools, especially to and from SpecificSelector; tests for NumberPoolHub
get numbers from an Array of indices, not the list of Numbers, in SimplePool
added a class to represent the four types of recovery kits
comments on Kit files
created package for supporting equipment classes; renamed /definition/ package
adding class for items that construct deployables, the router telepad included
added SimpleItem, classes for game Equipment that do not have internal state; re-organized ObjectDefinition files and the game objects they create to more naturally move around EquipmentSize and InventoryTile (size)
added SimpleItem tests (what they are...); removed example code that has hogging an import from AmmoBox
auto-sort for loading and fitting former inventory content back into the inventory
method of finding first available position to fit an certain size block in the inventory
changed CheckCollision return type to provide Try[List[Int]; fixed all existing references and tests
wrote comments for GridInventory methods; changed insertion param to be of form 'key -> element'
adding features to Player; created definitions for Player class; re-grouped ConstructionItem enumerations
initial work on implants; shuffled classes to better accommodate the new implant system, I think
wrote some tests for Implants; fixing Implant logic
wrote tests for Player class and made adjustments where necessary
basic initialization during Player creation based on exo-suit type
three wrapper Actors for the normal classes
comments on code
modified tests to improve accountability; added Resolver class to deal with multiple tasks that contribute to a larger task
changed Tools to an internal AmmoBox; don't have to def -= symbol if I def _= symbol
LivePlayerList -> MasterPlayerList, and added a Fit def for Player that checks holsters as well as inventory
example of packet conversion can be found with AmmoBoxDefinition
added conversion for ToolDefinition
added all Equipment packet conversion functionality; started working on Avatar-related conversions
continued effort towards a working Player packet conversion test
subclasses of Equipment apparently do not need to overide the type of the PacketConverter for generics
the logical conclusion: it doesn't matter what generics Packet returns so long as it returns an ObjectCreateConverter[] type
separated converters from definitions into files
changed some configuration information to final; added a bunch of converters, not fully tested though
changed function names in converters
replaced WSA packet-driven OCDM with Player object OCDM; upgrade to Float angular data
added partial support for LockerContainer; changed Equipment defaults to a common value
changes to AvatarConverter to include 5th slot; changes to VehicleConverter to make work; implementation of Fury in Vehicle->packet example in WSA
added a seat definition and renovated how the weapon controlled from a seat can be found
comments to files mainly; non-essential functionality to some classes, mostly access determination
moved converter tests to their own test file
write more of this test
added ServiceManager, as it is useful
pool range changes
added AvatarService, as it is useful
straightened out the GUID actors; added the static method for adding AmmoBoxes (to be converted later)
chnages to task resolution operation
complicated Task and TaskResolver logic is now possible; for example, you can schedule giving an AmmoBox a GUID, before giving a Tool a GUID, before placing the Tool in a player's hand; see Suppressor example in WSA
separated the Task trait and the TaskResolver actor into their own classes, moving the former RegistrationTaskResolver class into the /misc/ folder; deleted old backup copy of HubActor; modifications for PoC and supported tests
added better support and protection against putting things in the wrong hand when using inventories and the Player.Slot(n) function
GlobalDefinitions file; added laze pointer as an SItem, and gave it the command detonater management code; additionally fixed spelling of 'detonat[o]r' in Codec; early Terminal class work
updated tests to GlobalDefinitions entries; Terminal works but I don't like it
played with GUID pooling workflow, though to little avail; modifications to Terminal purchasing workflow, but still very volatile
modified NumberPoolActor and NumberPoolAccessor to make them more straightforward and not use akka ask as a go-between
fixed recovery options so that they do not cause more messages
trailing newline
InventoryItem (packet data) renamed InventoryItemData to remove ambiguity; Terminal functionality improved, allowing for swapping of exo-suits and the restoration of equipment positions
remove yet-unsupported Terminal messaging
made Terminal message more specific; can now put equipment into empty slot on exo-suit change; should report changes better
re-organized function calls to preserved items removed from holster slots on exo-suit change
moved predicate to the end of the list of params for recoverInventory so that repetition can be eliminated and a default value can be assigned
issues with making Tool; committing changes before revert of NumberPoolActor and NumberPoolAccessorActor to see if those broke it
a necessary evil, the reverting of these two Actors; subtask resolution does not work unless I do so, for now
restored the registration portion of tasking back to where it previously was (and better?)
NumberPoolActor and the ...AccessorActor are back to a comfortable place (and better?)
re-draw object in hand when switching exo-suits; build AmmoBoxes for Tool during Terminal-controlled creation, not Tool-controlled creation
order of task cleanup reversed to avoid index mismatch; added itsm to TerminalDefinition
common 5x5 AmmoBox size; added vehicle weapon ammo boxes to terminal
added error catching messages; stopped odd double-registering issue early
resolved issue where multiple subtasks started their main task multiple times; added checks that an object does not register a new GUID when it already has one
wrote unregistration code for Selling items back through the Terminal, repairing logic along the way; also, wrote a top-level GUID find for the Player for use of MoveItem
added framework for starting on Loadouts; managed issue with parent tasks starting before being summoned by child subtasks, often resulting in the complete skip of the execution phase of the parent; refactored registration tasks in WSA
modified Tool structure, exposing the AmmoSlot list a bit more
stuff stuff Tool ammo slot changes to default and comments
basic loadout framework for Infantry; need to integrate
initial work on FavoritesRequest packet
tests for FavoritesRequest packet
increased size of number pool for testing; wrote an algorithm that translates to and from the simplified version of objects stored in loadouts
refactored the tasking for adding Equipment and removing Equipment
updated the inventory so the Map of items does not have to rely on the GUID of an item being set before the item is inserted
untested routine for registering a player character; pushing all changes before making significant changes to the client init code structure
added to comments of BeginZoningMessage; transitioned player through and initial step of a more proper login GUID association
the current avatar is properly registered and there is something of a workflow with the messages and packets
corrected another bit of logic where inventories used to be indexed by object GUID in AvatarConverter; reversed unregister-remove task sequence such that GUID-less object is not allowed to exist in a stable object hierarchy
working Loadout loading
added identification functions to GlobalDefinitions; echo ObjectDelete back to client
accidentally got rid of something in WSA, but now restored; adding extra details to Terminal operations
separated Terminal into separate files and moved files into their own package under \objects\ for now; can delete loadouts now in WSA
better handling of ReloadMessage and MoveItemMessage
framework for better support involving dropping and picking up items
code comments and small modifications, such as the location and structure of the Terminal Equipment definitions
wrote comments in GlobalDefinitions; modified code so that a primitive form of player synchronization now occurs for future testing
added code to display already-dropped Equipment on the ground; limitations are explained; moved TaskResolver to more a global location, though I don't know if that helps
modified avatar unregister logic to ensure vacating player is deleted from other clients 'properly'
more comments; improved checks for MoveItemMessage; squared distances as necessary
subtle changes to login scripting so that test character is always offered
re-organizing the functions in WSA so that only the local objects separate the two message processing blocks
2017-05-30 18:46:01 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"seat in a vehicle" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.VehicleSeated mustEqual None
|
|
|
|
|
obj.VehicleSeated = PlanetSideGUID(65)
|
|
|
|
|
obj.VehicleSeated mustEqual Some(PlanetSideGUID(65))
|
|
|
|
|
obj.VehicleSeated = None
|
|
|
|
|
obj.VehicleSeated mustEqual None
|
|
|
|
|
}
|
2017-12-05 00:37:24 -05:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"own in a vehicle" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.VehicleOwned mustEqual None
|
|
|
|
|
obj.VehicleOwned = PlanetSideGUID(65)
|
|
|
|
|
obj.VehicleOwned mustEqual Some(PlanetSideGUID(65))
|
|
|
|
|
obj.VehicleOwned = None
|
|
|
|
|
obj.VehicleOwned mustEqual None
|
|
|
|
|
}
|
2017-12-05 00:37:24 -05:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"remember what zone he is in" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.Continent mustEqual "home2"
|
|
|
|
|
obj.Continent = "ugd01"
|
|
|
|
|
obj.Continent mustEqual "ugd01"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"special is typically normal and can not be changed from normal" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
|
|
|
|
|
obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Shielded
|
|
|
|
|
obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"a TR MAX can change its special to Overdrive or Anchored" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.ExoSuit = ExoSuitType.MAX
|
|
|
|
|
obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
|
|
|
|
|
obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Anchored
|
|
|
|
|
obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Anchored
|
|
|
|
|
obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Normal
|
|
|
|
|
obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
|
|
|
|
|
obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Overdrive
|
|
|
|
|
obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Overdrive
|
|
|
|
|
//note
|
|
|
|
|
obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Anchored
|
|
|
|
|
obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Overdrive
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"an NC MAX can change its special to Shielded" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.NC, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.ExoSuit = ExoSuitType.MAX
|
|
|
|
|
obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
|
|
|
|
|
obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Shielded
|
|
|
|
|
obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Shielded
|
|
|
|
|
obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Normal
|
|
|
|
|
obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"one faction can not use the other's specials" in {
|
|
|
|
|
val objtr = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
objtr.ExoSuit = ExoSuitType.MAX
|
|
|
|
|
objtr.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
|
|
|
|
|
objtr.UsingSpecial = SpecialExoSuitDefinition.Mode.Shielded
|
|
|
|
|
objtr.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
|
|
|
|
|
|
|
|
|
|
val objnc = TestPlayer("Chord", PlanetSideEmpire.NC, CharacterGender.Male, 0, 5)
|
|
|
|
|
objnc.ExoSuit = ExoSuitType.MAX
|
|
|
|
|
objnc.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
|
|
|
|
|
objnc.UsingSpecial = SpecialExoSuitDefinition.Mode.Overdrive
|
|
|
|
|
objnc.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
|
|
|
|
|
objnc.UsingSpecial = SpecialExoSuitDefinition.Mode.Anchored
|
|
|
|
|
objnc.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"changing exo-suit type resets the special to Normal (and changing back does not revert it again)" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.ExoSuit = ExoSuitType.MAX
|
|
|
|
|
obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
|
|
|
|
|
obj.UsingSpecial = SpecialExoSuitDefinition.Mode.Anchored
|
|
|
|
|
obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Anchored
|
|
|
|
|
|
|
|
|
|
val test = obj.UsingSpecial
|
|
|
|
|
obj.ExoSuit = ExoSuitType.Standard
|
|
|
|
|
obj.UsingSpecial mustEqual SpecialExoSuitDefinition.Mode.Normal
|
|
|
|
|
obj.ExoSuit = ExoSuitType.MAX
|
|
|
|
|
obj.UsingSpecial != test mustEqual true
|
|
|
|
|
}
|
2017-12-05 00:37:24 -05:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
"toString" in {
|
|
|
|
|
val obj = TestPlayer("Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, 5)
|
|
|
|
|
obj.toString mustEqual "TR Chord 0/100 0/50"
|
2018-03-24 00:28:02 -04:00
|
|
|
|
2018-05-18 20:48:52 -04:00
|
|
|
obj.GUID = PlanetSideGUID(455)
|
|
|
|
|
obj.Continent = "z3"
|
|
|
|
|
obj.toString mustEqual "TR Chord z3-455 0/100 0/50"
|
|
|
|
|
}
|
new stuff for player server classes; this update is not yet complete
adjusted sample Reload code and added insertion and removal functions for inventory
more work on player classes; moving PacketResolution to another branch
decoupling GUIDs from objects; introduced Ammo enum; minor adjustments to inventory system; different object/class hierarchy
transferring basic files from another branch
converted from get/set to accessor/mutator; resolved conflict from name changes
refactored basic components such as GUID and location/orientation
utilities kludge; more fields are given accessor and mutators; create package for vehicle-specific classes
GUID assurance, now with less object creation
test files; changes to how AmmoBox initializes
sorry, a little bit of everything, so much I forgot to write it all down
switched to a unified fire mode object internal to a Tool
importing a heavily modified version of my GUID manager objects from the laternate branch; not finished or tested yet
created a Trait to make Key private, sources and selectors to allow NumberPools to exist independent of a NumberSource; placed Ascending into a misc folder
swapped the Return methods for selectors so that the more primitive logic is the one that needs to be overriden; renamed a selector to be more common; had to update some copyright messages
fixed major logic issue with NumberPool; added comments to NumberSource files
NumberSource tests
simplified and made more consistent the method naming convention of NumberSources
comments for NumberSelectors
starting on NumberSelector tests
modifications that should better support number pools; added a pool hub that acts on a predefined source
adjustment to how Tools and FireModeDefintion keep track of ammunition and ammunition slots; I don't think this is sufficient
small additions to Tools; filled out simple tests for other three Selectors
added object lookup notation for the pool hub
added more NumberSelector tests; removed the word 'Number' from subclass names
re-named classes, re-packaged classes, re-named packages; created new Selector, split pools to create a fallback for the NumberPoolHub
changes to NumberPool classes; tests on NumberPool classes
changes to NumberPool classes; tests on NumberPool classes2
some robust testing for NumberPoolHub, plus necessary modifications to other files
register and unregister functions now use Success and Failure conditions, save for one true thrown Exception
reduced the flow of certain algorithm chains, mainly by adding match statements and removing Exceptions
error message text
the same thing as the last commit, but with NumberPools rather than NumberPoolHub
various types of freeform registration
added sorting functions to Selectors to allow for hotswapping for number pools, especially to and from SpecificSelector; tests for NumberPoolHub
get numbers from an Array of indices, not the list of Numbers, in SimplePool
added a class to represent the four types of recovery kits
comments on Kit files
created package for supporting equipment classes; renamed /definition/ package
adding class for items that construct deployables, the router telepad included
added SimpleItem, classes for game Equipment that do not have internal state; re-organized ObjectDefinition files and the game objects they create to more naturally move around EquipmentSize and InventoryTile (size)
added SimpleItem tests (what they are...); removed example code that has hogging an import from AmmoBox
auto-sort for loading and fitting former inventory content back into the inventory
method of finding first available position to fit an certain size block in the inventory
changed CheckCollision return type to provide Try[List[Int]; fixed all existing references and tests
wrote comments for GridInventory methods; changed insertion param to be of form 'key -> element'
adding features to Player; created definitions for Player class; re-grouped ConstructionItem enumerations
initial work on implants; shuffled classes to better accommodate the new implant system, I think
wrote some tests for Implants; fixing Implant logic
wrote tests for Player class and made adjustments where necessary
basic initialization during Player creation based on exo-suit type
three wrapper Actors for the normal classes
comments on code
modified tests to improve accountability; added Resolver class to deal with multiple tasks that contribute to a larger task
changed Tools to an internal AmmoBox; don't have to def -= symbol if I def _= symbol
LivePlayerList -> MasterPlayerList, and added a Fit def for Player that checks holsters as well as inventory
example of packet conversion can be found with AmmoBoxDefinition
added conversion for ToolDefinition
added all Equipment packet conversion functionality; started working on Avatar-related conversions
continued effort towards a working Player packet conversion test
subclasses of Equipment apparently do not need to overide the type of the PacketConverter for generics
the logical conclusion: it doesn't matter what generics Packet returns so long as it returns an ObjectCreateConverter[] type
separated converters from definitions into files
changed some configuration information to final; added a bunch of converters, not fully tested though
changed function names in converters
replaced WSA packet-driven OCDM with Player object OCDM; upgrade to Float angular data
added partial support for LockerContainer; changed Equipment defaults to a common value
changes to AvatarConverter to include 5th slot; changes to VehicleConverter to make work; implementation of Fury in Vehicle->packet example in WSA
added a seat definition and renovated how the weapon controlled from a seat can be found
comments to files mainly; non-essential functionality to some classes, mostly access determination
moved converter tests to their own test file
write more of this test
added ServiceManager, as it is useful
pool range changes
added AvatarService, as it is useful
straightened out the GUID actors; added the static method for adding AmmoBoxes (to be converted later)
chnages to task resolution operation
complicated Task and TaskResolver logic is now possible; for example, you can schedule giving an AmmoBox a GUID, before giving a Tool a GUID, before placing the Tool in a player's hand; see Suppressor example in WSA
separated the Task trait and the TaskResolver actor into their own classes, moving the former RegistrationTaskResolver class into the /misc/ folder; deleted old backup copy of HubActor; modifications for PoC and supported tests
added better support and protection against putting things in the wrong hand when using inventories and the Player.Slot(n) function
GlobalDefinitions file; added laze pointer as an SItem, and gave it the command detonater management code; additionally fixed spelling of 'detonat[o]r' in Codec; early Terminal class work
updated tests to GlobalDefinitions entries; Terminal works but I don't like it
played with GUID pooling workflow, though to little avail; modifications to Terminal purchasing workflow, but still very volatile
modified NumberPoolActor and NumberPoolAccessor to make them more straightforward and not use akka ask as a go-between
fixed recovery options so that they do not cause more messages
trailing newline
InventoryItem (packet data) renamed InventoryItemData to remove ambiguity; Terminal functionality improved, allowing for swapping of exo-suits and the restoration of equipment positions
remove yet-unsupported Terminal messaging
made Terminal message more specific; can now put equipment into empty slot on exo-suit change; should report changes better
re-organized function calls to preserved items removed from holster slots on exo-suit change
moved predicate to the end of the list of params for recoverInventory so that repetition can be eliminated and a default value can be assigned
issues with making Tool; committing changes before revert of NumberPoolActor and NumberPoolAccessorActor to see if those broke it
a necessary evil, the reverting of these two Actors; subtask resolution does not work unless I do so, for now
restored the registration portion of tasking back to where it previously was (and better?)
NumberPoolActor and the ...AccessorActor are back to a comfortable place (and better?)
re-draw object in hand when switching exo-suits; build AmmoBoxes for Tool during Terminal-controlled creation, not Tool-controlled creation
order of task cleanup reversed to avoid index mismatch; added itsm to TerminalDefinition
common 5x5 AmmoBox size; added vehicle weapon ammo boxes to terminal
added error catching messages; stopped odd double-registering issue early
resolved issue where multiple subtasks started their main task multiple times; added checks that an object does not register a new GUID when it already has one
wrote unregistration code for Selling items back through the Terminal, repairing logic along the way; also, wrote a top-level GUID find for the Player for use of MoveItem
added framework for starting on Loadouts; managed issue with parent tasks starting before being summoned by child subtasks, often resulting in the complete skip of the execution phase of the parent; refactored registration tasks in WSA
modified Tool structure, exposing the AmmoSlot list a bit more
stuff stuff Tool ammo slot changes to default and comments
basic loadout framework for Infantry; need to integrate
initial work on FavoritesRequest packet
tests for FavoritesRequest packet
increased size of number pool for testing; wrote an algorithm that translates to and from the simplified version of objects stored in loadouts
refactored the tasking for adding Equipment and removing Equipment
updated the inventory so the Map of items does not have to rely on the GUID of an item being set before the item is inserted
untested routine for registering a player character; pushing all changes before making significant changes to the client init code structure
added to comments of BeginZoningMessage; transitioned player through and initial step of a more proper login GUID association
the current avatar is properly registered and there is something of a workflow with the messages and packets
corrected another bit of logic where inventories used to be indexed by object GUID in AvatarConverter; reversed unregister-remove task sequence such that GUID-less object is not allowed to exist in a stable object hierarchy
working Loadout loading
added identification functions to GlobalDefinitions; echo ObjectDelete back to client
accidentally got rid of something in WSA, but now restored; adding extra details to Terminal operations
separated Terminal into separate files and moved files into their own package under \objects\ for now; can delete loadouts now in WSA
better handling of ReloadMessage and MoveItemMessage
framework for better support involving dropping and picking up items
code comments and small modifications, such as the location and structure of the Terminal Equipment definitions
wrote comments in GlobalDefinitions; modified code so that a primitive form of player synchronization now occurs for future testing
added code to display already-dropped Equipment on the ground; limitations are explained; moved TaskResolver to more a global location, though I don't know if that helps
modified avatar unregister logic to ensure vacating player is deleted from other clients 'properly'
more comments; improved checks for MoveItemMessage; squared distances as necessary
subtle changes to login scripting so that test character is always offered
re-organizing the functions in WSA so that only the local objects separate the two message processing blocks
2017-05-30 18:46:01 -04:00
|
|
|
}
|
|
|
|
|
}
|