Commit graph

48 commits

Author SHA1 Message Date
FateJH a513f4996e working vehicle loadouts from repair/rearm silos; code documentation and expanded tests 2018-05-16 00:27:25 -04:00
FateJH 2a4fe4865e partially-working vehicle favorites system; modifications to existing favorites system, identification of packet parameters 2018-05-15 08:05:33 -04:00
FateJH 9d7d1b0456 split previous Loadout into separate InfantryLoadout and VehicleLoadout classes; moved new Loadout code into its own package and corrected import statements; corrected Terminal code and tests 2018-05-13 23:06:01 -04:00
FateJH 1d956c834c improved object name exposure for log messages; removed 'init with GUID' constructors that were no longer necessary 2018-05-10 23:03:34 -04:00
FateJH 526ab7d5ec Removed duplicate code by moving the logic of Container around; removed duplicate code by producing a functional inventory search algorithm that handles both ammunition and weapon magazine options; corrected tests 2018-05-09 16:26:33 -04:00
FateJH 68422401e5 Another revamp to vehicle spawn process. Wrote tests. 2018-04-29 00:16:55 -04:00
FateJH 5d5c609a2f Reorganized vehicle spawning process and wrote tests for process. 2018-04-29 00:13:15 -04:00
FateJH fde49773cd Splitting single vehicle spawn control process into several subtasks. Vehicle event bus attached to zone objects, especially for interacting with VehicleSpawnControl. Importing SouNourS copy of ServerVehicleOverrideMessage packet and tests. 2018-04-29 00:13:15 -04:00
FateJH a31207322b accomodations for tests; adjusting conditions for proximity terminal operations; adding the medical terminals in Anguta 2018-04-19 19:51:04 -04:00
FateJH 35ed000ccc code documentation and tests 2018-04-19 08:03:06 -04:00
FateJH f444a35785 Changes to AvatarService packets and support actors in regards to corpse management and tests regarding corpse management. Seriously, those tests. 2018-03-31 20:03:40 -04:00
FateJH ddc2450541 Buildings now have simple type distinctions to work using the known output of a SpawnRequestMessage packet. Support for cross-continental respawning (actually a failure case for being unable to spawn). Corpse tuning and testing. 2018-03-31 19:59:11 -04:00
FateJH 8a21df429b The former Player class (former-former PlaterAvatar class) has been split into a persisting Avatar class and a transitory Player class. 2018-03-31 19:54:37 -04:00
FateJH 001f9a40e9 Anguta, Ceryshen, the Anguta Watchower, and Anguta's two bunkers have had their amenities wired together, excluding the door locks being connected to doors. Modified how things like spectator status, fly status and speed persist. 2018-03-31 19:51:01 -04:00
FateJH 33a7636f5e changing continent id and building id to normal data types in BroadcastWarpgateUpdate and BuildingInfoUpdate; implementing warp gates and branched logic for warp gate initialization in WSA; updating tests 2018-03-05 23:26:38 -05:00
FateJH eea01c8072 additional matrix terminal tests and error message correction 2018-03-01 11:09:17 -05:00
FateJH 72b7c35b3f tests and corrections 2018-03-01 10:39:34 -05:00
FateJH 74863858f7 adding tests for utilities and fixing tests for AMS; adding information to PAMessage; scaling back modifications to WSA 2018-03-01 10:24:56 -05:00
FateJH 0fe46311ad Deployment:
Class and Actor mixins for Deployment state.  The logic is surprisingly self-contained, mostly.

DriveState:

This is not the former DriveState Enumeration of /packet/game/objectcreate/.  This is now a /types/ Enumeration shared across /common/ objects and serves the functionality of both, at least to the extent that it is understood.  Functions are includes that define the logic order or state changes and divides states into (two) groups.

VehicleService:

The directory /pslogin/src/test has been created and tests have been migrated there.  Originally, the tests were located in the wrong place and were being skipped when not executed manually.  They should now appear in coverage reports and be run as a part of continuous integration.
2018-02-17 17:37:53 -05:00
FateJH 62b2c54b67 added utility filtering so that only valid indexed utilities are assigned GUIDs and are translated into OCM 2018-02-12 09:59:07 -05:00
FateJH 860edf9a97 Utility:
A container class for vehicle-installed Amenity objects that are owned by the vehicle.  It not only constructs the internalized Amenity but harbors logic that is required to setup the object at a more appropriate time (at start of VehicleControl).

OrderTerminalABDefinition:
Terminals built into the sides of the advanced mobile spawn, accessible when it deploys.

OCM packet converters, GUID registrtaion, and setup code allows the code to wire into the vehicle.
2018-02-12 00:22:57 -05:00
FateJH eefe4d2e20 Building:
Replaces class object/serverobject/door/Base.scala.  It performs nearly the exact same purpose but now has a list of owned objects called Amenities.  Buildings are now a PlanetSideServerObject (PSSO), which allows them to have accept a *Control Actor and possess FactionAffinity.

FoundationBuilder:
FoundationBuilder : Building :: ServerObjectBuilder : [T <: PlanetSideServerObject]

Amenity:
Most PSSO's now accept Amenity as their parent in class hierarchy.  Flagged PSSO's like Building and Vehicle are, on the other hand, capable of becoming the owner for these Amenity PSSOs, which allows them to inherit the same FactionAffinity.

FactionAffinity:
A trait that connects objects that are intended to communicate PlanetSideEmpire values.

MountableBhevaior:
Split between Mount and Dismount behavior.  Passes appropriate messages to ensure coherent workflows.

Control Actors:
FactionAffinityBehavior and MountableBehavior are PartialFunctions that get processed in series.

VehicleControl:
Distinguished behavior allowed between an operational vehicle and a deactivated one.

WSA:
Tightened up DismountVehicleMsg handling code, since MountableBehavior has been enhanced.

Minor:
Shotgun shell stacking goes from 32 to 16.  Various PSSO classes now have reliable Definition objects.

Tests:
We now have 1012 tests, some of them useful.
2018-02-08 14:22:05 -05:00
FateJH f4b913a5d9 Vector3 normal vector functions; locked door opening from inside mechanics; correction to item/equipment identification in WSA; quick solution to stop door from closing on player who opened it if that player is still standing within sqrt(15)m from it 2018-01-24 20:44:30 -05:00
FateJH f5182030da added support for Lockers and access to Locker contents; modified RequestDelete to handle Locker, as well as previously neglected vehicle trunk contents; added Lockers to Hart C shuttle observation room 2018-01-22 20:45:05 -05:00
FateJH 4059d50e72 shotgun pellet fire modes; fire mode for melee weapons; cleanup code for phoenix (decimator) and handling last phoneix rocket fire; temporary cleanup of grenades 2018-01-17 07:51:42 -05:00
FateJH 1f04c840d2 synchronized change fire mode; addsupport for fire mode in DetailedWeaponData; corrected bug with LastDrawnSlot/ObjectHeldMessage 2018-01-15 08:15:18 -05:00
FateJH 9e51e33246 synchronizing change ammo 2018-01-15 08:14:17 -05:00
FateJH 335b40cdfc correction for LoadoutTest 2017-12-30 21:44:10 -05:00
Fate-JH abbd5c35ed
Merge pull request #180 from Fate-JH/all-zones
All Zones
2017-12-28 19:04:52 -05:00
FateJH 17a8b8bf38 Zones:
Added continent stubs to InterstellarCluster init list.  All Maps and Zones are defined in temporary objects that may be subdivided further as they grow.

Builder:

Replaced trait ServerObjectBuilder[A] with class ServerObjectBuilder[A] that allows for much greater power.  In ZoneMap.Init override, LocalObject invocations that were previously 'LocalBuilder(FooObjectBuilder(ObjectDefintion, Int))` have been transformed into `LocalObject(ServerObjectBuilder(Int, (Int=>Foo))` where `Foo` is the type of object to be created by the curried function `(Int)=>Foo`.  The examples with Terminals and the VehicleSpawnPad should demonstrate what kind of power this syntax possesses in isolating constant (or at least initial) configuration settings.  At least five files, and some files not yet written, have been rendered obsolete and have been eliminated from the sim pertaining to these created objects.
2017-12-25 17:01:53 -05:00
FateJH 8fbbd31967 modified how subscriptions can subscribe and unsubscribe from specific channels (works now); vehicles now come with default loadouts at time of spawn; MoveItem is now a much more generic process that handles all Container objects; alternate fire modes now have correct ammunition values, but still do not change ammunition type properly; terminals are now distinctively split a bit more; LootItemMessage packet 2017-12-23 01:29:48 -05:00
FateJH 3aee0ab4e8 added and expanded tests in hopes of increasing code coverage score
added tests for AvatarService and PacketCodingActor; especially PCA tests
2017-12-06 19:51:43 -05:00
FateJH f9beb47073 Implant Terminals:
Implant terminals (mech) are now properly mountable and implant terminals (interface) are also properly interactive.  Player can select to equip or to remove implants properly.

Mountable:

Vehicles and implant terminal mechs now use common Mountable logic.

home3 Hart C:

All doors, save for those to the shuttle, and all implant terminals in this building are now rigged to operate.
2017-12-03 21:00:58 -05:00
FateJH e62adc4bc1 broke up GUIDTask tests into separate files; attempting to increase code coverage by modifying the first registering test 2017-11-28 22:58:54 -05:00
FateJH 5428bbbfbf Operational vehicle terminals:
Vehicles can now be pulled from assigned and initialized terminals.  The vehicle's chosen spawn pad controls (or paces) all aspects of the spawning process.  Support Actors ensure that a fully-realized Vehicle will be unloaded and unregistered if left alone, either right after spawning on the pad or after an extended period of time.  The latter half of the procedure used for spawning vehicles is a temporary workaround until future analysis and functionality of the server vehicle override packet is incorporated.

Weapons:

Weapons will now construct their own default magazines thanks to a switch from Ammo.Value to AmmoBoxDefinition in the ToolDefinition.

GenericObjectActionMessage :

The only thing this packet does, at the moment, is obscure the player when he is being promoted into the owner of a vehicle.
2017-11-25 20:55:12 -05:00
FateJH f24911cde8 tests for a variety of objects and scripts (currently 810); minor changes to align with proper object behavior 2017-11-06 10:24:36 -05:00
FateJH 8f658aa688 test Harasser to demonstrate synched vehicle actions: mounting, disembarking, driving, gunning, changing access permissions, changing ownership, kicking passengers, deconstructing 2017-11-04 01:11:28 -04:00
FateJH 040bea8b13 added tests 2017-10-17 00:27:19 -04:00
FateJH 92b6883fa0 switched NumberPoolAccessorActor out for UniqueNumberSystem; created file that enumerates object types for future reference
cleaned up folder object/guid, except for contents of objects/guid/selectors
2017-09-27 22:12:36 -04:00
FateJH 0a0a416585 standardized UNS reporting and recovery; added tests for UNS and better accommodated future Actor testing by splitting out ActorTest into its own file 2017-09-26 23:33:08 -04:00
FateJH 5b4ba246e1 simplified the implant management process by removing an unnecessary middleman object; corrected tests that included implants; worked implants into player PacketConverter 2017-09-08 19:58:20 -04:00
FateJH 85a6eb00fd added a LockerContainer global definition; adjusted how the lockers inhabit the fifthtSlot on players and how they are accessed; fixed converter tests to account for contents and added a quick content test; Live players will now register and unregister the contents of their fifthslot 2017-08-30 20:20:33 -04:00
FateJH a73e2f129c added DetailedLockerContainerData Codec; modified PacketConverter for LockerContainer; modified tests (2) 2017-08-30 09:35:38 -04:00
FateJH 5a453b6bb8 separating test classes, but keeping them in one file 2017-08-18 10:11:10 -04:00
FateJH 02ee06fd97 corrected missing Tile size for CUD and Laze Pointer; changed MoveItem tests to account for spatial inconsistency between modular holster slots and regional inventory cells 2017-08-18 09:40:29 -04:00
FateJH e6646c2352 deleted unnecessary intermediary class; modified current Actor tests to operate under akka-testkit, which required changing the dependencies 2017-08-16 18:23:09 -04:00
FateJH 404d083578 fixing tests 2017-08-15 23:29:10 -04:00
FateJH 4bcef8ce98 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-08-15 23:10:59 -04:00