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
|
|
|
|
|
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
import net.psforever.objects.{AmmoBox, SimpleItem, Tool}
|
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.definition.SimpleItemDefinition
|
2020-09-15 19:46:56 -04:00
|
|
|
import net.psforever.objects.inventory._
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
import net.psforever.objects.GlobalDefinitions.{bullet_9mm, suppressor}
|
2020-01-06 08:45:55 -05:00
|
|
|
import net.psforever.types.PlanetSideGUID
|
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._
|
|
|
|
|
|
|
|
|
|
import scala.collection.mutable.ListBuffer
|
2020-09-15 19:46:56 -04:00
|
|
|
import scala.util.{Failure, 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 InventoryTest extends Specification {
|
2020-07-14 05:54:05 +02:00
|
|
|
val bullet9mmBox1 = AmmoBox(bullet_9mm)
|
2018-01-09 20:28:36 -05:00
|
|
|
bullet9mmBox1.GUID = PlanetSideGUID(1)
|
2020-07-14 05:54:05 +02:00
|
|
|
val bullet9mmBox2 = AmmoBox(bullet_9mm)
|
2018-01-09 20:28:36 -05:00
|
|
|
bullet9mmBox2.GUID = PlanetSideGUID(2)
|
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
|
|
|
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
"InventoryDisarrayException" should {
|
|
|
|
|
"construct" in {
|
|
|
|
|
InventoryDisarrayException("slot out of bounds")
|
|
|
|
|
ok
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"construct (with Throwable)" in {
|
|
|
|
|
InventoryDisarrayException("slot out of bounds", new Throwable())
|
|
|
|
|
ok
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
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
|
|
|
"GridInventory" should {
|
|
|
|
|
"construct" in {
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory()
|
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
|
|
|
obj.TotalCapacity mustEqual 1
|
|
|
|
|
obj.Capacity mustEqual 1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"resize" in {
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(9, 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
|
|
|
obj.TotalCapacity mustEqual 54
|
|
|
|
|
obj.Capacity mustEqual 54
|
|
|
|
|
obj.Size mustEqual 0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"check for collision with inventory border" in {
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(3, 3)
|
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
|
|
|
//safe
|
|
|
|
|
obj.CheckCollisionsAsList(0, 3, 3) mustEqual Success(Nil)
|
|
|
|
|
//right
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
obj.CheckCollisionsAsList(-1, 3, 3) match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Failure(fail) =>
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
fail.isInstanceOf[IndexOutOfBoundsException] mustEqual true
|
|
|
|
|
case _ => ko
|
|
|
|
|
}
|
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
|
|
|
//left
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
obj.CheckCollisionsAsList(1, 3, 3) match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Failure(fail) =>
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
fail.isInstanceOf[IndexOutOfBoundsException] mustEqual true
|
|
|
|
|
case _ => ko
|
|
|
|
|
}
|
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
|
|
|
//bottom
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
obj.CheckCollisionsAsList(3, 3, 3) match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Failure(fail) =>
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
fail.isInstanceOf[IndexOutOfBoundsException] mustEqual true
|
|
|
|
|
case _ => ko
|
|
|
|
|
}
|
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
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"check for item collision (right insert)" in {
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(9, 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
|
|
|
obj += 0 -> bullet9mmBox1
|
|
|
|
|
obj.Capacity mustEqual 45
|
2020-07-14 05:54:05 +02:00
|
|
|
val w = bullet9mmBox2.Tile.Width
|
|
|
|
|
val h = bullet9mmBox2.Tile.Height
|
2017-08-18 09:40:29 -04:00
|
|
|
val list0 = obj.CheckCollisionsAsList(0, w, h)
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
obj.CheckCollisionsAsList(0, w, h) match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.length mustEqual 1
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
val list1 = obj.CheckCollisionsAsList(1, w, h)
|
|
|
|
|
list1 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.length mustEqual 1
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
val list2 = obj.CheckCollisionsAsList(2, w, h)
|
|
|
|
|
list2 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.length mustEqual 1
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
val list3 = obj.CheckCollisionsAsList(3, w, h)
|
|
|
|
|
list3 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.isEmpty mustEqual true
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
obj.CheckCollisionsAsGrid(0, w, h) mustEqual list0
|
|
|
|
|
obj.CheckCollisionsAsGrid(1, w, h) mustEqual list1
|
|
|
|
|
obj.CheckCollisionsAsGrid(2, w, h) mustEqual list2
|
|
|
|
|
obj.CheckCollisionsAsGrid(3, w, h) mustEqual list3
|
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
|
|
|
obj.Clear()
|
|
|
|
|
ok
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"check for item collision (left insert)" in {
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(9, 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
|
|
|
obj += 3 -> bullet9mmBox1
|
|
|
|
|
obj.Capacity mustEqual 45
|
2020-07-14 05:54:05 +02:00
|
|
|
val w = bullet9mmBox2.Tile.Width
|
|
|
|
|
val h = bullet9mmBox2.Tile.Height
|
2017-08-18 09:40:29 -04:00
|
|
|
val list0 = obj.CheckCollisionsAsList(3, w, h)
|
|
|
|
|
list0 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.length mustEqual 1
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
val list1 = obj.CheckCollisionsAsList(2, w, h)
|
|
|
|
|
list1 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.length mustEqual 1
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
val list2 = obj.CheckCollisionsAsList(1, w, h)
|
|
|
|
|
list2 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.length mustEqual 1
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
val list3 = obj.CheckCollisionsAsList(0, w, h)
|
|
|
|
|
list3 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.isEmpty mustEqual true
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
obj.CheckCollisionsAsGrid(3, w, h) mustEqual list0
|
|
|
|
|
obj.CheckCollisionsAsGrid(2, w, h) mustEqual list1
|
|
|
|
|
obj.CheckCollisionsAsGrid(1, w, h) mustEqual list2
|
|
|
|
|
obj.CheckCollisionsAsGrid(0, w, h) mustEqual list3
|
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
|
|
|
obj.Clear()
|
|
|
|
|
ok
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"check for item collision (below insert)" in {
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(9, 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
|
|
|
obj += 0 -> bullet9mmBox1
|
|
|
|
|
obj.Capacity mustEqual 45
|
2020-07-14 05:54:05 +02:00
|
|
|
val w = bullet9mmBox2.Tile.Width
|
|
|
|
|
val h = bullet9mmBox2.Tile.Height
|
2017-08-18 09:40:29 -04:00
|
|
|
val list0 = obj.CheckCollisionsAsList(0, w, h)
|
|
|
|
|
list0 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.length mustEqual 1
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
val list1 = obj.CheckCollisionsAsList(9, w, h)
|
|
|
|
|
list1 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.length mustEqual 1
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
val list2 = obj.CheckCollisionsAsList(18, w, h)
|
|
|
|
|
list2 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.length mustEqual 1
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
val list3 = obj.CheckCollisionsAsList(27, w, h)
|
|
|
|
|
list3 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.isEmpty mustEqual true
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
obj.CheckCollisionsAsGrid(0, w, h) mustEqual list0
|
|
|
|
|
obj.CheckCollisionsAsGrid(9, w, h) mustEqual list1
|
|
|
|
|
obj.CheckCollisionsAsGrid(18, w, h) mustEqual list2
|
|
|
|
|
obj.CheckCollisionsAsGrid(27, w, h) mustEqual list3
|
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
|
|
|
obj.Clear()
|
|
|
|
|
ok
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"check for item collision (above insert)" in {
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(9, 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
|
|
|
obj += 27 -> bullet9mmBox1
|
|
|
|
|
obj.Capacity mustEqual 45
|
2020-07-14 05:54:05 +02:00
|
|
|
val w = bullet9mmBox2.Tile.Width
|
|
|
|
|
val h = bullet9mmBox2.Tile.Height
|
2017-08-18 09:40:29 -04:00
|
|
|
val list0 = obj.CheckCollisionsAsList(27, w, h)
|
|
|
|
|
list0 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.length mustEqual 1
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
val list1 = obj.CheckCollisionsAsList(18, w, h)
|
|
|
|
|
list1 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.length mustEqual 1
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
val list2 = obj.CheckCollisionsAsList(9, w, h)
|
|
|
|
|
list2 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.length mustEqual 1
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
val list3 = obj.CheckCollisionsAsList(0, w, h)
|
|
|
|
|
list3 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.isEmpty mustEqual true
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
obj.CheckCollisionsAsGrid(27, w, h) mustEqual list0
|
|
|
|
|
obj.CheckCollisionsAsGrid(18, w, h) mustEqual list1
|
|
|
|
|
obj.CheckCollisionsAsGrid(9, w, h) mustEqual list2
|
|
|
|
|
obj.CheckCollisionsAsGrid(0, w, h) mustEqual list3
|
|
|
|
|
obj.Clear()
|
|
|
|
|
ok
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"check for item collision (diagonal insert)" in {
|
|
|
|
|
/*
|
|
|
|
|
Number indicates upper-left corner of attempted 3x3 insertion by list#
|
|
|
|
|
0 - - - - - 2 - - - - -
|
|
|
|
|
- 1 - - - 3 - - - - - -
|
|
|
|
|
- - - - - - - - - - - -
|
|
|
|
|
- - - X X X - - - - - -
|
|
|
|
|
- - - X X X - - - - - -
|
|
|
|
|
- 5 - X X 7 - - - - - -
|
|
|
|
|
4 - - - - - 6 - - - - -
|
|
|
|
|
- - - - - - - - - - - -
|
|
|
|
|
- - - - - - - - - - - -
|
|
|
|
|
*/
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(12, 9)
|
2017-08-18 09:40:29 -04:00
|
|
|
obj += 39 -> bullet9mmBox1
|
|
|
|
|
obj.Capacity mustEqual 99 //108 - 9
|
2020-07-14 05:54:05 +02:00
|
|
|
val w = bullet9mmBox2.Tile.Width
|
|
|
|
|
val h = bullet9mmBox2.Tile.Height
|
2017-08-18 09:40:29 -04:00
|
|
|
val list0 = obj.CheckCollisionsAsList(0, w, h)
|
|
|
|
|
list0 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.isEmpty mustEqual true
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
val list1 = obj.CheckCollisionsAsList(13, w, h)
|
|
|
|
|
list1 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.length mustEqual 1
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
val list2 = obj.CheckCollisionsAsList(6, w, h)
|
|
|
|
|
list2 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.isEmpty mustEqual true
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
val list3 = obj.CheckCollisionsAsList(17, w, h)
|
|
|
|
|
list3 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.length mustEqual 1
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
val list4 = obj.CheckCollisionsAsList(72, w, h)
|
|
|
|
|
list4 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.isEmpty mustEqual true
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
val list5 = obj.CheckCollisionsAsList(61, w, h)
|
|
|
|
|
list5 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.length mustEqual 1
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
val list6 = obj.CheckCollisionsAsList(78, w, h)
|
|
|
|
|
list6 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.isEmpty mustEqual true
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
val list7 = obj.CheckCollisionsAsList(65, w, h)
|
|
|
|
|
list7 match {
|
2020-07-14 05:54:05 +02:00
|
|
|
case Success(list) => list.length mustEqual 1
|
|
|
|
|
case Failure(_) => ko
|
2017-08-18 09:40:29 -04:00
|
|
|
}
|
|
|
|
|
obj.CheckCollisionsAsGrid(0, w, h) mustEqual list0
|
|
|
|
|
obj.CheckCollisionsAsGrid(13, w, h) mustEqual list1
|
|
|
|
|
obj.CheckCollisionsAsGrid(6, w, h) mustEqual list2
|
|
|
|
|
obj.CheckCollisionsAsGrid(17, w, h) mustEqual list3
|
|
|
|
|
obj.CheckCollisionsAsGrid(72, w, h) mustEqual list4
|
|
|
|
|
obj.CheckCollisionsAsGrid(61, w, h) mustEqual list5
|
|
|
|
|
obj.CheckCollisionsAsGrid(78, w, h) mustEqual list6
|
|
|
|
|
obj.CheckCollisionsAsGrid(65, w, h) mustEqual list7
|
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
|
|
|
obj.Clear()
|
|
|
|
|
ok
|
|
|
|
|
}
|
|
|
|
|
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
"insert item" in {
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(9, 6)
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
obj.CheckCollisions(23, bullet9mmBox1) mustEqual Success(Nil)
|
|
|
|
|
obj += 2 -> bullet9mmBox1
|
|
|
|
|
obj.TotalCapacity mustEqual 54
|
|
|
|
|
obj.Capacity mustEqual 45
|
|
|
|
|
obj.Size mustEqual 1
|
|
|
|
|
obj.hasItem(PlanetSideGUID(1)).contains(bullet9mmBox1) mustEqual true
|
|
|
|
|
obj.Clear()
|
|
|
|
|
obj.Size mustEqual 0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"not insert into an invalid slot (n < 0)" in {
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(9, 6)
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
obj.Capacity mustEqual 54
|
|
|
|
|
obj.Size mustEqual 0
|
|
|
|
|
obj.Insert(-1, bullet9mmBox1) must throwA[IndexOutOfBoundsException]
|
|
|
|
|
obj.Capacity mustEqual 54
|
|
|
|
|
obj.Size mustEqual 0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"not insert into an invalid slot (n > capacity)" in {
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(9, 6)
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
obj.Capacity mustEqual 54
|
|
|
|
|
obj.Size mustEqual 0
|
|
|
|
|
obj.Insert(55, bullet9mmBox1) must throwA[IndexOutOfBoundsException]
|
|
|
|
|
obj.Capacity mustEqual 54
|
|
|
|
|
obj.Size mustEqual 0
|
|
|
|
|
}
|
|
|
|
|
|
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
|
|
|
"block insertion if item collision" in {
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(9, 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
|
|
|
obj += 0 -> bullet9mmBox1
|
|
|
|
|
obj.Capacity mustEqual 45
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
obj.hasItem(PlanetSideGUID(1)).contains(bullet9mmBox1) 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
|
|
|
obj += 2 -> bullet9mmBox2
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
obj.hasItem(PlanetSideGUID(2)).isEmpty mustEqual true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"insert items quickly (risk overwriting entries)" in {
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(6, 6)
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
(obj += 0 -> bullet9mmBox1) mustEqual true
|
2020-07-14 05:54:05 +02:00
|
|
|
val collision1 = obj.CheckCollisions(0, 1, 1)
|
|
|
|
|
obj.CheckCollisions(1, 1, 1) mustEqual collision1
|
|
|
|
|
obj.CheckCollisions(2, 1, 1) mustEqual collision1
|
|
|
|
|
obj.CheckCollisions(6, 1, 1) mustEqual collision1
|
|
|
|
|
obj.CheckCollisions(7, 1, 1) mustEqual collision1
|
|
|
|
|
obj.CheckCollisions(8, 1, 1) mustEqual collision1
|
|
|
|
|
obj.CheckCollisions(12, 1, 1) mustEqual collision1
|
|
|
|
|
obj.CheckCollisions(13, 1, 1) mustEqual collision1
|
|
|
|
|
obj.CheckCollisions(14, 1, 1) mustEqual collision1
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
|
|
|
|
|
(obj += 7 -> bullet9mmBox2) mustEqual false //can not insert overlapping object
|
2020-07-14 05:54:05 +02:00
|
|
|
obj.CheckCollisions(0, 1, 1) mustEqual collision1
|
|
|
|
|
obj.CheckCollisions(1, 1, 1) mustEqual collision1
|
|
|
|
|
obj.CheckCollisions(2, 1, 1) mustEqual collision1
|
|
|
|
|
obj.CheckCollisions(6, 1, 1) mustEqual collision1
|
|
|
|
|
obj.CheckCollisions(7, 1, 1) mustEqual collision1
|
|
|
|
|
obj.CheckCollisions(8, 1, 1) mustEqual collision1
|
|
|
|
|
obj.CheckCollisions(12, 1, 1) mustEqual collision1
|
|
|
|
|
obj.CheckCollisions(13, 1, 1) mustEqual collision1
|
|
|
|
|
obj.CheckCollisions(14, 1, 1) mustEqual collision1
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
|
|
|
|
|
obj.InsertQuickly(7, bullet9mmBox2) mustEqual true //overwrite
|
2020-07-14 05:54:05 +02:00
|
|
|
val collision2 = obj.CheckCollisions(7, 1, 1)
|
|
|
|
|
obj.CheckCollisions(0, 1, 1) mustEqual collision1
|
|
|
|
|
obj.CheckCollisions(1, 1, 1) mustEqual collision1
|
|
|
|
|
obj.CheckCollisions(2, 1, 1) mustEqual collision1
|
|
|
|
|
obj.CheckCollisions(6, 1, 1) mustEqual collision1
|
|
|
|
|
obj.CheckCollisions(7, 1, 1) mustEqual collision2
|
|
|
|
|
obj.CheckCollisions(8, 1, 1) mustEqual collision2
|
|
|
|
|
obj.CheckCollisions(12, 1, 1) mustEqual collision1
|
|
|
|
|
obj.CheckCollisions(13, 1, 1) mustEqual collision2
|
|
|
|
|
obj.CheckCollisions(14, 1, 1) mustEqual collision2
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"clear all items" in {
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(9, 6)
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
obj += 2 -> bullet9mmBox1
|
|
|
|
|
obj.Size mustEqual 1
|
|
|
|
|
obj.hasItem(PlanetSideGUID(1)).contains(bullet9mmBox1) 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
|
|
|
obj.Clear()
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
obj.Size mustEqual 0
|
|
|
|
|
obj.hasItem(PlanetSideGUID(1)).isEmpty 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
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"remove item" in {
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(9, 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
|
|
|
obj += 0 -> bullet9mmBox1
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
obj.hasItem(PlanetSideGUID(1)).contains(bullet9mmBox1) 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
|
|
|
obj -= PlanetSideGUID(1)
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
obj.hasItem(PlanetSideGUID(1)).isEmpty 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
|
|
|
obj.Clear()
|
|
|
|
|
ok
|
|
|
|
|
}
|
|
|
|
|
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
"fail to remove from an invalid slot (n < 0)" in {
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(9, 6)
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
(obj -= -1) mustEqual false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"fail to remove from an invalid slot (n > capacity)" in {
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(9, 6)
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
(obj -= 55) 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
|
|
|
"unblock insertion on item removal" in {
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(9, 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
|
|
|
obj.CheckCollisions(23, bullet9mmBox1) mustEqual Success(Nil)
|
|
|
|
|
obj += 23 -> bullet9mmBox1
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
obj.hasItem(PlanetSideGUID(1)).contains(bullet9mmBox1) 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
|
|
|
obj.CheckCollisions(23, bullet9mmBox1) mustEqual Success(1 :: Nil)
|
|
|
|
|
obj -= PlanetSideGUID(1)
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
obj.hasItem(PlanetSideGUID(1)).isEmpty 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
|
|
|
obj.CheckCollisions(23, bullet9mmBox1) mustEqual Success(Nil)
|
|
|
|
|
obj.Clear()
|
|
|
|
|
ok
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"attempt to fit an item" in {
|
|
|
|
|
val sampleDef22 = new SimpleItemDefinition(149)
|
|
|
|
|
sampleDef22.Tile = InventoryTile.Tile22
|
|
|
|
|
val sampleDef33 = new SimpleItemDefinition(149)
|
|
|
|
|
sampleDef33.Tile = InventoryTile.Tile33
|
|
|
|
|
val sampleDef63 = new SimpleItemDefinition(149)
|
|
|
|
|
sampleDef63.Tile = InventoryTile.Tile63
|
|
|
|
|
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(9, 9)
|
|
|
|
|
obj += 0 -> SimpleItem(sampleDef22)
|
2018-05-10 23:03:34 -04:00
|
|
|
obj += 20 -> SimpleItem(sampleDef63)
|
|
|
|
|
obj += 56 -> SimpleItem(sampleDef33)
|
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
|
|
|
obj.Fit(InventoryTile.Tile33) match {
|
|
|
|
|
case Some(x) =>
|
|
|
|
|
x mustEqual 50
|
|
|
|
|
case None =>
|
|
|
|
|
ko
|
|
|
|
|
}
|
|
|
|
|
ok
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"attempt to fit all the items" in {
|
|
|
|
|
val sampleDef1 = new SimpleItemDefinition(149)
|
|
|
|
|
sampleDef1.Tile = InventoryTile.Tile22
|
|
|
|
|
val sampleDef2 = new SimpleItemDefinition(149)
|
|
|
|
|
sampleDef2.Tile = InventoryTile.Tile33
|
|
|
|
|
val sampleDef3 = new SimpleItemDefinition(149)
|
|
|
|
|
sampleDef3.Tile = InventoryTile.Tile42
|
|
|
|
|
val sampleDef4 = new SimpleItemDefinition(149)
|
|
|
|
|
sampleDef4.Tile = InventoryTile.Tile63
|
|
|
|
|
|
2020-07-14 05:54:05 +02:00
|
|
|
val list: ListBuffer[InventoryItem] = ListBuffer()
|
2018-05-10 23:03:34 -04:00
|
|
|
list += new InventoryItem(SimpleItem(sampleDef2), -1)
|
|
|
|
|
list += new InventoryItem(SimpleItem(sampleDef3), -1)
|
|
|
|
|
list += new InventoryItem(SimpleItem(sampleDef1), -1)
|
|
|
|
|
list += new InventoryItem(SimpleItem(sampleDef4), -1)
|
|
|
|
|
list += new InventoryItem(SimpleItem(sampleDef1), -1)
|
|
|
|
|
list += new InventoryItem(SimpleItem(sampleDef4), -1)
|
|
|
|
|
list += new InventoryItem(SimpleItem(sampleDef2), -1)
|
|
|
|
|
list += new InventoryItem(SimpleItem(sampleDef3), -1)
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(9, 9)
|
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
|
|
|
|
|
|
|
|
val (elements, out) = GridInventory.recoverInventory(list.toList, obj)
|
|
|
|
|
elements.length mustEqual 6
|
|
|
|
|
out.length mustEqual 2
|
|
|
|
|
elements.foreach(item => {
|
|
|
|
|
obj.Insert(item.start, item.obj) mustEqual true
|
|
|
|
|
})
|
|
|
|
|
out.head.Definition.Tile mustEqual InventoryTile.Tile22 //did not fit
|
2020-07-14 05:54:05 +02:00
|
|
|
out(1).Definition.Tile mustEqual InventoryTile.Tile22 //did not fit
|
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
|
|
|
ok
|
|
|
|
|
}
|
2018-06-10 00:23:59 -04:00
|
|
|
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
"confirm integrity of inventory as a grid" in {
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(6, 6)
|
|
|
|
|
(obj += 0 -> bullet9mmBox1) mustEqual true
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
(obj += 21 -> bullet9mmBox2) mustEqual true
|
|
|
|
|
//artificially pollute the inventory grid-space
|
|
|
|
|
obj.SetCells(10, 1, 1, 3)
|
|
|
|
|
obj.SetCells(19, 2, 2, 4)
|
|
|
|
|
obj.ElementsOnGridMatchList() mustEqual 5 //number of misses repaired
|
|
|
|
|
}
|
2018-06-10 00:23:59 -04:00
|
|
|
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
"confirm integrity of inventory as a list (no overlap)" in {
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(9, 9)
|
|
|
|
|
val gun = Tool(suppressor)
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
obj.InsertQuickly(0, gun)
|
|
|
|
|
obj.InsertQuickly(33, bullet9mmBox1)
|
|
|
|
|
//nothing should overlap
|
|
|
|
|
val lists = obj.ElementsInListCollideInGrid()
|
|
|
|
|
lists.size mustEqual 0
|
|
|
|
|
}
|
2018-06-10 00:23:59 -04:00
|
|
|
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
"confirm integrity of inventory as a list (normal overlap)" in {
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(9, 9)
|
|
|
|
|
val gun = Tool(suppressor)
|
|
|
|
|
val bullet9mmBox3 = AmmoBox(bullet_9mm)
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
obj.InsertQuickly(0, gun)
|
|
|
|
|
obj.InsertQuickly(18, bullet9mmBox1)
|
|
|
|
|
obj.InsertQuickly(38, bullet9mmBox2)
|
|
|
|
|
obj.InsertQuickly(33, bullet9mmBox3)
|
|
|
|
|
//gun and box1 should overlap
|
|
|
|
|
//box1 and box2 should overlap
|
|
|
|
|
//box3 should not overlap with anything
|
|
|
|
|
val lists = obj.ElementsInListCollideInGrid()
|
|
|
|
|
lists.size mustEqual 2
|
|
|
|
|
lists.foreach { list =>
|
|
|
|
|
val out = list.map { _.obj }
|
2020-07-14 05:54:05 +02:00
|
|
|
if (out.size == 2 && out.contains(gun) && out.contains(bullet9mmBox1)) {
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
ok
|
2020-07-14 05:54:05 +02:00
|
|
|
} else if (out.size == 2 && out.contains(bullet9mmBox1) && out.contains(bullet9mmBox2)) {
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
ok
|
2020-07-14 05:54:05 +02:00
|
|
|
} else {
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
ko
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ok
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"confirm integrity of inventory as a list (triple overlap)" in {
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(9, 9)
|
|
|
|
|
val gun = Tool(suppressor)
|
|
|
|
|
val bullet9mmBox3 = AmmoBox(bullet_9mm)
|
|
|
|
|
val bullet9mmBox4 = AmmoBox(bullet_9mm)
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
obj.InsertQuickly(0, gun)
|
|
|
|
|
obj.InsertQuickly(18, bullet9mmBox1)
|
|
|
|
|
obj.InsertQuickly(36, bullet9mmBox2)
|
|
|
|
|
obj.InsertQuickly(38, bullet9mmBox3)
|
|
|
|
|
obj.InsertQuickly(33, bullet9mmBox4)
|
|
|
|
|
//gun and box1 should overlap
|
|
|
|
|
//box1, box2, and box3 should overlap
|
|
|
|
|
//box4 should not overlap with anything
|
|
|
|
|
val lists = obj.ElementsInListCollideInGrid()
|
|
|
|
|
lists.size mustEqual 2
|
|
|
|
|
lists.foreach { list =>
|
|
|
|
|
val out = list.map { _.obj }
|
2020-07-14 05:54:05 +02:00
|
|
|
if (out.size == 2 && out.contains(gun) && out.contains(bullet9mmBox1)) {
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
ok
|
2020-07-14 05:54:05 +02:00
|
|
|
} else if (
|
|
|
|
|
out.size == 3 && out.contains(bullet9mmBox1) && out.contains(bullet9mmBox2) && out.contains(bullet9mmBox3)
|
|
|
|
|
) {
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
ok
|
2020-07-14 05:54:05 +02:00
|
|
|
} else {
|
Persistence (#337)
* constructed service actor to handle persistence of player on server beyond the reaches of WSA from one login to the next; created in PSLogin, interfaced with and updated in WSA
* for what it's worth, players can be completely logged out of the world after 60s of inactivity, alive Infantry only right now; some code was removed from WSA to make it accessible to other classes but it's incomparable to the new code; broke, fixed, compromised on the code that handles loadouts, server login time, etc.
* moved another common vehicle function into global space; persistence object for players in vehicles during log-out or relogging in a vehicle
* support for relogging when dead/released/unfound; silenced implant slot setup during character select screen
* tested and commented code for managing player avatar persistence
* clarificaion of WSA postStop
* test fixed
* postStop change to account for WSA being cut short during initialization
* clarification of SquadService logout
* player died during setup; probably a relog
* kill the doppelganger WSA; die when you are actually dead
* created manifest to assist with vehicle gating; vehicle gating now accomodates the persistence model much better
* fixed the test
* fixed initial vehicle seat access permissions; moved a subscription to AvatarService to support persistence
* bug fixes: safer GridInventory collision checks, plus specific exceptions; SessionRouter waits for the account intermediary before allowing itself to be started; WSA - match error colution, and MAX without arm now creates the arm it expects
* adjusted insertion and removal code to make inventory management less prone to partoial insertions of removals; inventory integrity checking code writen, but no plans on implementing it yet
2020-02-14 10:54:52 -05:00
|
|
|
ko
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ok
|
2018-06-10 00:23:59 -04:00
|
|
|
}
|
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
|
|
|
}
|
Let's Move Item, Together, Again (#445)
* mix-in code for akka messaging move item, currently testing on infantry only
* adjusted structure of COntainable so callbacks are separate from message-producing functions, are separate from message-sending functionality; massaged LockerContainer until it could support control agency and created a wrapper for its Equipment interfacing; the control structure starts and stops when PlayerControl starts and stops, and it converts whenever necessary
* added failsafe conditions to Containable, such as blocking certain messages while completing a MoveItem call, or blocking all messages to reset disruptive MoveItem calls; depiction message callbacks for Player, Locker, and Vehicle, to properly depict the manipulation of items; eliminated the old code from WSA
* added useful comments to Containable; moved functionality for deployables, and for container'ing, and dropping logic out from WSA and distributed it appropriately
* handling terminal operations - buying an exosuit and selecting an infantry loadout; starting work on support for more persistent equipment timers local to the avatar (that were removed in this update; see wsa changes)
* linked terminal page/message with routing policy
* tuning vehicle loadout management and display
* separated use time from purchase time and applied a system that limits either if that same event would recur too soon; tuning exosuit and loadout changes
* some ask timeout handling and comments
* normalizing item on ground interactions
* rearranging the project structure
* merged with master; commas removed
* fixing tests
* added description strings to Tasks; adjusted the completion conditions for some Tasks
* a failed purchase will not block future purchases; increased timeout on move-item tasks
* corpses, even one's own, should have properly moveable inventories
* for better persistence, until GlobalDefinitions is renovated, moved the object id->name map onto the avatar object, for the purpose of timers; replaced a use of values in GridInventory for a map conversion
* max loadouts and max exosuit switch use same cooldown now; hopefully better clarifcation regarding held arm position
* manual merge-rebase of master with hand reconstruction of WorldSessionActor and PlayerControl, and variations for other files necessary to maintain both inventory operations and login reliability
* test fixes; MAX exo-suit cooldown is now five minutes again
2020-06-04 16:39:08 -04:00
|
|
|
|
2020-09-15 19:46:56 -04:00
|
|
|
"LocallyRegisteredInventory" should {
|
|
|
|
|
"construct" in {
|
|
|
|
|
val obj: LocallyRegisteredInventory = new LocallyRegisteredInventory(List(15))
|
|
|
|
|
obj.TotalCapacity mustEqual 1
|
|
|
|
|
obj.Capacity mustEqual 1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"insert (and register) item" in {
|
|
|
|
|
val obj: LocallyRegisteredInventory = new LocallyRegisteredInventory(List(15))
|
|
|
|
|
obj.Resize(9, 6)
|
|
|
|
|
obj.Size mustEqual 0
|
|
|
|
|
val item = AmmoBox(bullet_9mm)
|
|
|
|
|
item.HasGUID mustEqual false
|
|
|
|
|
obj.CheckCollisions(2, item) mustEqual Success(Nil)
|
|
|
|
|
obj += 2 -> item
|
|
|
|
|
obj.Size mustEqual 1
|
|
|
|
|
obj.hasItem(PlanetSideGUID(15)).contains(item) mustEqual true
|
|
|
|
|
item.HasGUID mustEqual true
|
|
|
|
|
item.GUID mustEqual PlanetSideGUID(15)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"insert (and register) complex item" in {
|
|
|
|
|
val obj: LocallyRegisteredInventory = new LocallyRegisteredInventory(List(15, 16))
|
|
|
|
|
obj.Resize(9, 6)
|
|
|
|
|
obj.Size mustEqual 0
|
|
|
|
|
val item = Tool(suppressor)
|
|
|
|
|
item.HasGUID mustEqual false
|
|
|
|
|
item.AmmoSlot.Box.HasGUID mustEqual false
|
|
|
|
|
obj.CheckCollisions(2, item) mustEqual Success(Nil)
|
|
|
|
|
obj += 2 -> item
|
|
|
|
|
obj.Size mustEqual 1
|
|
|
|
|
item.HasGUID mustEqual true
|
|
|
|
|
item.AmmoSlot.Box.HasGUID mustEqual true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"not insert item if already registered" in {
|
|
|
|
|
val obj: LocallyRegisteredInventory = new LocallyRegisteredInventory(List(15))
|
|
|
|
|
obj.Resize(9, 6)
|
|
|
|
|
obj.Size mustEqual 0
|
|
|
|
|
val item = AmmoBox(bullet_9mm)
|
|
|
|
|
item.GUID = PlanetSideGUID(10) //artificially register
|
|
|
|
|
item.HasGUID mustEqual true
|
|
|
|
|
|
|
|
|
|
obj.CheckCollisions(2, item) mustEqual Success(Nil) //insert should be possible
|
|
|
|
|
obj += 2 -> item
|
|
|
|
|
obj.Size mustEqual 0
|
|
|
|
|
obj.hasItem(PlanetSideGUID(15)).isEmpty mustEqual true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"not insert (or register) item if no (more) GUID's are available" in {
|
|
|
|
|
val obj: LocallyRegisteredInventory = new LocallyRegisteredInventory(List(15))
|
|
|
|
|
obj.Resize(9, 6)
|
|
|
|
|
val item1 = AmmoBox(bullet_9mm)
|
|
|
|
|
val item2 = AmmoBox(bullet_9mm)
|
|
|
|
|
item1.HasGUID mustEqual false
|
|
|
|
|
item2.HasGUID mustEqual false
|
|
|
|
|
|
|
|
|
|
obj.CheckCollisions(2, item1) mustEqual Success(Nil) //insert should be possible
|
|
|
|
|
obj += 2 -> item1
|
|
|
|
|
obj.Size mustEqual 1
|
|
|
|
|
obj.hasItem(PlanetSideGUID(15)).contains(item1) mustEqual true
|
|
|
|
|
item1.HasGUID mustEqual true
|
|
|
|
|
item1.GUID mustEqual PlanetSideGUID(15)
|
|
|
|
|
|
|
|
|
|
obj.CheckCollisions(5, item2) mustEqual Success(Nil) //insert should be possible
|
|
|
|
|
obj += 5 -> item2
|
|
|
|
|
obj.Size mustEqual 1
|
|
|
|
|
item2.HasGUID mustEqual false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"not insert (or register) complex item if no (more) GUID's are available" in {
|
|
|
|
|
val item = Tool(suppressor)
|
|
|
|
|
val obj: LocallyRegisteredInventory = new LocallyRegisteredInventory(List(15))
|
|
|
|
|
obj.Resize(9, 6)
|
|
|
|
|
obj.Size mustEqual 0
|
|
|
|
|
item.HasGUID mustEqual false
|
|
|
|
|
item.AmmoSlot.Box.HasGUID mustEqual false
|
|
|
|
|
|
|
|
|
|
obj.CheckCollisions(2, item) mustEqual Success(Nil) //insert should be possible
|
|
|
|
|
obj += 2 -> item
|
|
|
|
|
obj.Size mustEqual 0
|
|
|
|
|
item.HasGUID mustEqual false
|
|
|
|
|
item.AmmoSlot.Box.HasGUID mustEqual false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"insert (and register) multiple items" in {
|
|
|
|
|
val obj: LocallyRegisteredInventory = new LocallyRegisteredInventory(List(15, 17))
|
|
|
|
|
obj.Resize(9, 6)
|
|
|
|
|
val item1 = AmmoBox(bullet_9mm)
|
|
|
|
|
val item2 = AmmoBox(bullet_9mm)
|
|
|
|
|
item1.HasGUID mustEqual false
|
|
|
|
|
item2.HasGUID mustEqual false
|
|
|
|
|
|
|
|
|
|
obj.CheckCollisions(2, item1) mustEqual Success(Nil) //insert should be possible
|
|
|
|
|
obj += 2 -> item1
|
|
|
|
|
obj.Size mustEqual 1
|
|
|
|
|
item1.HasGUID mustEqual true
|
|
|
|
|
|
|
|
|
|
obj.CheckCollisions(5, item2) mustEqual Success(Nil) //insert should be possible
|
|
|
|
|
obj += 5 -> item2
|
|
|
|
|
obj.Size mustEqual 2
|
|
|
|
|
item2.HasGUID mustEqual true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"clear (and unregister) all items" in {
|
|
|
|
|
val obj: LocallyRegisteredInventory = new LocallyRegisteredInventory(List(15, 17))
|
|
|
|
|
obj.Resize(9, 6)
|
|
|
|
|
val item1 = AmmoBox(bullet_9mm)
|
|
|
|
|
val item2 = AmmoBox(bullet_9mm)
|
|
|
|
|
obj += 2 -> item1
|
|
|
|
|
obj += 5 -> item2
|
|
|
|
|
obj.Size mustEqual 2
|
|
|
|
|
item1.HasGUID mustEqual true
|
|
|
|
|
item2.HasGUID mustEqual true
|
|
|
|
|
|
|
|
|
|
obj.Clear()
|
|
|
|
|
obj.Size mustEqual 0
|
|
|
|
|
item1.HasGUID mustEqual false
|
|
|
|
|
item2.HasGUID mustEqual false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"remove (and unregister) item" in {
|
|
|
|
|
val obj: LocallyRegisteredInventory = new LocallyRegisteredInventory(List(15, 17))
|
|
|
|
|
obj.Resize(9, 6)
|
|
|
|
|
val item1 = AmmoBox(bullet_9mm)
|
|
|
|
|
val item2 = AmmoBox(bullet_9mm)
|
|
|
|
|
obj += 2 -> item1
|
|
|
|
|
obj += 5 -> item2
|
|
|
|
|
obj.Size mustEqual 2
|
|
|
|
|
item1.HasGUID mustEqual true
|
|
|
|
|
item2.HasGUID mustEqual true
|
|
|
|
|
|
|
|
|
|
obj -= 2
|
|
|
|
|
obj.Size mustEqual 1
|
|
|
|
|
item1.HasGUID mustEqual false
|
|
|
|
|
item2.HasGUID mustEqual true
|
|
|
|
|
|
|
|
|
|
obj -= 5
|
|
|
|
|
obj.Size mustEqual 0
|
|
|
|
|
item1.HasGUID mustEqual false
|
|
|
|
|
item2.HasGUID mustEqual false
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"remove (and unregister) complex item" in {
|
|
|
|
|
val obj: LocallyRegisteredInventory = new LocallyRegisteredInventory(List(15, 17))
|
|
|
|
|
obj.Resize(9, 6)
|
|
|
|
|
val item = Tool(suppressor)
|
|
|
|
|
item.HasGUID mustEqual false
|
|
|
|
|
item.AmmoSlot.Box.HasGUID mustEqual false
|
|
|
|
|
obj.CheckCollisions(2, item) mustEqual Success(Nil)
|
|
|
|
|
obj += 2 -> item
|
|
|
|
|
obj.Size mustEqual 1
|
|
|
|
|
item.HasGUID mustEqual true
|
|
|
|
|
item.AmmoSlot.Box.HasGUID mustEqual true
|
|
|
|
|
|
|
|
|
|
obj -= 2
|
|
|
|
|
obj.Size mustEqual 0
|
|
|
|
|
item.HasGUID mustEqual false
|
|
|
|
|
item.AmmoSlot.Box.HasGUID mustEqual false
|
|
|
|
|
}
|
|
|
|
|
|
Let's Move Item, Together, Again (#445)
* mix-in code for akka messaging move item, currently testing on infantry only
* adjusted structure of COntainable so callbacks are separate from message-producing functions, are separate from message-sending functionality; massaged LockerContainer until it could support control agency and created a wrapper for its Equipment interfacing; the control structure starts and stops when PlayerControl starts and stops, and it converts whenever necessary
* added failsafe conditions to Containable, such as blocking certain messages while completing a MoveItem call, or blocking all messages to reset disruptive MoveItem calls; depiction message callbacks for Player, Locker, and Vehicle, to properly depict the manipulation of items; eliminated the old code from WSA
* added useful comments to Containable; moved functionality for deployables, and for container'ing, and dropping logic out from WSA and distributed it appropriately
* handling terminal operations - buying an exosuit and selecting an infantry loadout; starting work on support for more persistent equipment timers local to the avatar (that were removed in this update; see wsa changes)
* linked terminal page/message with routing policy
* tuning vehicle loadout management and display
* separated use time from purchase time and applied a system that limits either if that same event would recur too soon; tuning exosuit and loadout changes
* some ask timeout handling and comments
* normalizing item on ground interactions
* rearranging the project structure
* merged with master; commas removed
* fixing tests
* added description strings to Tasks; adjusted the completion conditions for some Tasks
* a failed purchase will not block future purchases; increased timeout on move-item tasks
* corpses, even one's own, should have properly moveable inventories
* for better persistence, until GlobalDefinitions is renovated, moved the object id->name map onto the avatar object, for the purpose of timers; replaced a use of values in GridInventory for a map conversion
* max loadouts and max exosuit switch use same cooldown now; hopefully better clarifcation regarding held arm position
* manual merge-rebase of master with hand reconstruction of WorldSessionActor and PlayerControl, and variations for other files necessary to maintain both inventory operations and login reliability
* test fixes; MAX exo-suit cooldown is now five minutes again
2020-06-04 16:39:08 -04:00
|
|
|
"InventoryEquiupmentSlot" should {
|
|
|
|
|
"insert, collide, insert" in {
|
2020-07-14 05:54:05 +02:00
|
|
|
val obj: GridInventory = GridInventory(7, 7)
|
Let's Move Item, Together, Again (#445)
* mix-in code for akka messaging move item, currently testing on infantry only
* adjusted structure of COntainable so callbacks are separate from message-producing functions, are separate from message-sending functionality; massaged LockerContainer until it could support control agency and created a wrapper for its Equipment interfacing; the control structure starts and stops when PlayerControl starts and stops, and it converts whenever necessary
* added failsafe conditions to Containable, such as blocking certain messages while completing a MoveItem call, or blocking all messages to reset disruptive MoveItem calls; depiction message callbacks for Player, Locker, and Vehicle, to properly depict the manipulation of items; eliminated the old code from WSA
* added useful comments to Containable; moved functionality for deployables, and for container'ing, and dropping logic out from WSA and distributed it appropriately
* handling terminal operations - buying an exosuit and selecting an infantry loadout; starting work on support for more persistent equipment timers local to the avatar (that were removed in this update; see wsa changes)
* linked terminal page/message with routing policy
* tuning vehicle loadout management and display
* separated use time from purchase time and applied a system that limits either if that same event would recur too soon; tuning exosuit and loadout changes
* some ask timeout handling and comments
* normalizing item on ground interactions
* rearranging the project structure
* merged with master; commas removed
* fixing tests
* added description strings to Tasks; adjusted the completion conditions for some Tasks
* a failed purchase will not block future purchases; increased timeout on move-item tasks
* corpses, even one's own, should have properly moveable inventories
* for better persistence, until GlobalDefinitions is renovated, moved the object id->name map onto the avatar object, for the purpose of timers; replaced a use of values in GridInventory for a map conversion
* max loadouts and max exosuit switch use same cooldown now; hopefully better clarifcation regarding held arm position
* manual merge-rebase of master with hand reconstruction of WorldSessionActor and PlayerControl, and variations for other files necessary to maintain both inventory operations and login reliability
* test fixes; MAX exo-suit cooldown is now five minutes again
2020-06-04 16:39:08 -04:00
|
|
|
obj.Slot(16).Equipment = bullet9mmBox1
|
|
|
|
|
//confirm all squares
|
2020-07-14 05:54:05 +02:00
|
|
|
obj.Slot(8).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(9).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(10).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(11).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(12).Equipment.nonEmpty mustEqual false
|
Let's Move Item, Together, Again (#445)
* mix-in code for akka messaging move item, currently testing on infantry only
* adjusted structure of COntainable so callbacks are separate from message-producing functions, are separate from message-sending functionality; massaged LockerContainer until it could support control agency and created a wrapper for its Equipment interfacing; the control structure starts and stops when PlayerControl starts and stops, and it converts whenever necessary
* added failsafe conditions to Containable, such as blocking certain messages while completing a MoveItem call, or blocking all messages to reset disruptive MoveItem calls; depiction message callbacks for Player, Locker, and Vehicle, to properly depict the manipulation of items; eliminated the old code from WSA
* added useful comments to Containable; moved functionality for deployables, and for container'ing, and dropping logic out from WSA and distributed it appropriately
* handling terminal operations - buying an exosuit and selecting an infantry loadout; starting work on support for more persistent equipment timers local to the avatar (that were removed in this update; see wsa changes)
* linked terminal page/message with routing policy
* tuning vehicle loadout management and display
* separated use time from purchase time and applied a system that limits either if that same event would recur too soon; tuning exosuit and loadout changes
* some ask timeout handling and comments
* normalizing item on ground interactions
* rearranging the project structure
* merged with master; commas removed
* fixing tests
* added description strings to Tasks; adjusted the completion conditions for some Tasks
* a failed purchase will not block future purchases; increased timeout on move-item tasks
* corpses, even one's own, should have properly moveable inventories
* for better persistence, until GlobalDefinitions is renovated, moved the object id->name map onto the avatar object, for the purpose of timers; replaced a use of values in GridInventory for a map conversion
* max loadouts and max exosuit switch use same cooldown now; hopefully better clarifcation regarding held arm position
* manual merge-rebase of master with hand reconstruction of WorldSessionActor and PlayerControl, and variations for other files necessary to maintain both inventory operations and login reliability
* test fixes; MAX exo-suit cooldown is now five minutes again
2020-06-04 16:39:08 -04:00
|
|
|
//
|
|
|
|
|
obj.Slot(15).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(16).Equipment.nonEmpty mustEqual true
|
|
|
|
|
obj.Slot(17).Equipment.nonEmpty mustEqual true
|
|
|
|
|
obj.Slot(18).Equipment.nonEmpty mustEqual true
|
|
|
|
|
obj.Slot(19).Equipment.nonEmpty mustEqual false
|
|
|
|
|
//
|
|
|
|
|
obj.Slot(22).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(23).Equipment.nonEmpty mustEqual true
|
|
|
|
|
obj.Slot(24).Equipment.nonEmpty mustEqual true
|
|
|
|
|
obj.Slot(25).Equipment.nonEmpty mustEqual true
|
|
|
|
|
obj.Slot(26).Equipment.nonEmpty mustEqual false
|
|
|
|
|
//
|
|
|
|
|
obj.Slot(29).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(30).Equipment.nonEmpty mustEqual true
|
|
|
|
|
obj.Slot(31).Equipment.nonEmpty mustEqual true
|
|
|
|
|
obj.Slot(32).Equipment.nonEmpty mustEqual true
|
|
|
|
|
obj.Slot(33).Equipment.nonEmpty mustEqual false
|
|
|
|
|
//
|
|
|
|
|
obj.Slot(36).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(37).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(38).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(39).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(40).Equipment.nonEmpty mustEqual false
|
|
|
|
|
//
|
|
|
|
|
//remove
|
|
|
|
|
obj.Slot(16).Equipment = None
|
2020-07-14 05:54:05 +02:00
|
|
|
obj.Slot(8).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(9).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(10).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(11).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(12).Equipment.nonEmpty mustEqual false
|
Let's Move Item, Together, Again (#445)
* mix-in code for akka messaging move item, currently testing on infantry only
* adjusted structure of COntainable so callbacks are separate from message-producing functions, are separate from message-sending functionality; massaged LockerContainer until it could support control agency and created a wrapper for its Equipment interfacing; the control structure starts and stops when PlayerControl starts and stops, and it converts whenever necessary
* added failsafe conditions to Containable, such as blocking certain messages while completing a MoveItem call, or blocking all messages to reset disruptive MoveItem calls; depiction message callbacks for Player, Locker, and Vehicle, to properly depict the manipulation of items; eliminated the old code from WSA
* added useful comments to Containable; moved functionality for deployables, and for container'ing, and dropping logic out from WSA and distributed it appropriately
* handling terminal operations - buying an exosuit and selecting an infantry loadout; starting work on support for more persistent equipment timers local to the avatar (that were removed in this update; see wsa changes)
* linked terminal page/message with routing policy
* tuning vehicle loadout management and display
* separated use time from purchase time and applied a system that limits either if that same event would recur too soon; tuning exosuit and loadout changes
* some ask timeout handling and comments
* normalizing item on ground interactions
* rearranging the project structure
* merged with master; commas removed
* fixing tests
* added description strings to Tasks; adjusted the completion conditions for some Tasks
* a failed purchase will not block future purchases; increased timeout on move-item tasks
* corpses, even one's own, should have properly moveable inventories
* for better persistence, until GlobalDefinitions is renovated, moved the object id->name map onto the avatar object, for the purpose of timers; replaced a use of values in GridInventory for a map conversion
* max loadouts and max exosuit switch use same cooldown now; hopefully better clarifcation regarding held arm position
* manual merge-rebase of master with hand reconstruction of WorldSessionActor and PlayerControl, and variations for other files necessary to maintain both inventory operations and login reliability
* test fixes; MAX exo-suit cooldown is now five minutes again
2020-06-04 16:39:08 -04:00
|
|
|
//
|
|
|
|
|
obj.Slot(15).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(16).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(17).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(18).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(19).Equipment.nonEmpty mustEqual false
|
|
|
|
|
//
|
|
|
|
|
obj.Slot(22).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(23).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(24).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(25).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(26).Equipment.nonEmpty mustEqual false
|
|
|
|
|
//
|
|
|
|
|
obj.Slot(29).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(30).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(31).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(32).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(33).Equipment.nonEmpty mustEqual false
|
|
|
|
|
//
|
|
|
|
|
obj.Slot(36).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(37).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(38).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(39).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(40).Equipment.nonEmpty mustEqual false
|
|
|
|
|
//insert again
|
|
|
|
|
obj.Slot(16).Equipment = bullet9mmBox2
|
2020-07-14 05:54:05 +02:00
|
|
|
obj.Slot(8).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(9).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(10).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(11).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(12).Equipment.nonEmpty mustEqual false
|
Let's Move Item, Together, Again (#445)
* mix-in code for akka messaging move item, currently testing on infantry only
* adjusted structure of COntainable so callbacks are separate from message-producing functions, are separate from message-sending functionality; massaged LockerContainer until it could support control agency and created a wrapper for its Equipment interfacing; the control structure starts and stops when PlayerControl starts and stops, and it converts whenever necessary
* added failsafe conditions to Containable, such as blocking certain messages while completing a MoveItem call, or blocking all messages to reset disruptive MoveItem calls; depiction message callbacks for Player, Locker, and Vehicle, to properly depict the manipulation of items; eliminated the old code from WSA
* added useful comments to Containable; moved functionality for deployables, and for container'ing, and dropping logic out from WSA and distributed it appropriately
* handling terminal operations - buying an exosuit and selecting an infantry loadout; starting work on support for more persistent equipment timers local to the avatar (that were removed in this update; see wsa changes)
* linked terminal page/message with routing policy
* tuning vehicle loadout management and display
* separated use time from purchase time and applied a system that limits either if that same event would recur too soon; tuning exosuit and loadout changes
* some ask timeout handling and comments
* normalizing item on ground interactions
* rearranging the project structure
* merged with master; commas removed
* fixing tests
* added description strings to Tasks; adjusted the completion conditions for some Tasks
* a failed purchase will not block future purchases; increased timeout on move-item tasks
* corpses, even one's own, should have properly moveable inventories
* for better persistence, until GlobalDefinitions is renovated, moved the object id->name map onto the avatar object, for the purpose of timers; replaced a use of values in GridInventory for a map conversion
* max loadouts and max exosuit switch use same cooldown now; hopefully better clarifcation regarding held arm position
* manual merge-rebase of master with hand reconstruction of WorldSessionActor and PlayerControl, and variations for other files necessary to maintain both inventory operations and login reliability
* test fixes; MAX exo-suit cooldown is now five minutes again
2020-06-04 16:39:08 -04:00
|
|
|
//
|
|
|
|
|
obj.Slot(15).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(16).Equipment.nonEmpty mustEqual true
|
|
|
|
|
obj.Slot(17).Equipment.nonEmpty mustEqual true
|
|
|
|
|
obj.Slot(18).Equipment.nonEmpty mustEqual true
|
|
|
|
|
obj.Slot(19).Equipment.nonEmpty mustEqual false
|
|
|
|
|
//
|
|
|
|
|
obj.Slot(22).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(23).Equipment.nonEmpty mustEqual true
|
|
|
|
|
obj.Slot(24).Equipment.nonEmpty mustEqual true
|
|
|
|
|
obj.Slot(25).Equipment.nonEmpty mustEqual true
|
|
|
|
|
obj.Slot(26).Equipment.nonEmpty mustEqual false
|
|
|
|
|
//
|
|
|
|
|
obj.Slot(29).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(30).Equipment.nonEmpty mustEqual true
|
|
|
|
|
obj.Slot(31).Equipment.nonEmpty mustEqual true
|
|
|
|
|
obj.Slot(32).Equipment.nonEmpty mustEqual true
|
|
|
|
|
obj.Slot(33).Equipment.nonEmpty mustEqual false
|
|
|
|
|
//
|
|
|
|
|
obj.Slot(36).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(37).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(38).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(39).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(40).Equipment.nonEmpty mustEqual false
|
|
|
|
|
//
|
|
|
|
|
//remove
|
|
|
|
|
obj.Slot(16).Equipment = None
|
2020-07-14 05:54:05 +02:00
|
|
|
obj.Slot(8).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(9).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(10).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(11).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(12).Equipment.nonEmpty mustEqual false
|
Let's Move Item, Together, Again (#445)
* mix-in code for akka messaging move item, currently testing on infantry only
* adjusted structure of COntainable so callbacks are separate from message-producing functions, are separate from message-sending functionality; massaged LockerContainer until it could support control agency and created a wrapper for its Equipment interfacing; the control structure starts and stops when PlayerControl starts and stops, and it converts whenever necessary
* added failsafe conditions to Containable, such as blocking certain messages while completing a MoveItem call, or blocking all messages to reset disruptive MoveItem calls; depiction message callbacks for Player, Locker, and Vehicle, to properly depict the manipulation of items; eliminated the old code from WSA
* added useful comments to Containable; moved functionality for deployables, and for container'ing, and dropping logic out from WSA and distributed it appropriately
* handling terminal operations - buying an exosuit and selecting an infantry loadout; starting work on support for more persistent equipment timers local to the avatar (that were removed in this update; see wsa changes)
* linked terminal page/message with routing policy
* tuning vehicle loadout management and display
* separated use time from purchase time and applied a system that limits either if that same event would recur too soon; tuning exosuit and loadout changes
* some ask timeout handling and comments
* normalizing item on ground interactions
* rearranging the project structure
* merged with master; commas removed
* fixing tests
* added description strings to Tasks; adjusted the completion conditions for some Tasks
* a failed purchase will not block future purchases; increased timeout on move-item tasks
* corpses, even one's own, should have properly moveable inventories
* for better persistence, until GlobalDefinitions is renovated, moved the object id->name map onto the avatar object, for the purpose of timers; replaced a use of values in GridInventory for a map conversion
* max loadouts and max exosuit switch use same cooldown now; hopefully better clarifcation regarding held arm position
* manual merge-rebase of master with hand reconstruction of WorldSessionActor and PlayerControl, and variations for other files necessary to maintain both inventory operations and login reliability
* test fixes; MAX exo-suit cooldown is now five minutes again
2020-06-04 16:39:08 -04:00
|
|
|
//
|
|
|
|
|
obj.Slot(15).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(16).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(17).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(18).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(19).Equipment.nonEmpty mustEqual false
|
|
|
|
|
//
|
|
|
|
|
obj.Slot(22).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(23).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(24).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(25).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(26).Equipment.nonEmpty mustEqual false
|
|
|
|
|
//
|
|
|
|
|
obj.Slot(29).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(30).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(31).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(32).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(33).Equipment.nonEmpty mustEqual false
|
|
|
|
|
//
|
|
|
|
|
obj.Slot(36).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(37).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(38).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(39).Equipment.nonEmpty mustEqual false
|
|
|
|
|
obj.Slot(40).Equipment.nonEmpty 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
|
|
|
}
|