NetSerializer has been updated and moved to the latest version. This
means that the static nonsense it previously had is fixed and we can
properly use ISS14Serializer.
* Fixes a rare crash
Fixes a crash that occurs from the following
>return AngleDirections[(int)Math.Floor(angle/45f)];
System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'
That occurs most likely due to a float rounding error
* Apparently this works fine
* Changed GameObjects.Component namespace back to GameObjects.Components namespace to prevent colliding with GameObjects.Component class.
* Changed IComponent.HandleComponentState to use polymorphism instead of dynamic keyword.
Cleaned up nesting in each implementation of IComponent.HandleComponentState.
* Moved all shared ComponentStates to the SS14.Shared.GameObjects namespace to be more in line with client & server components.
Made all ComponentStates immutable, as they should be.
* Unhardcode content pack locations.
The previous hardcoded path was causing problems for the content repo.
Now the content packs are loaded from the executable directory.
The build system copies the pack from the Resources/ folder now.
* Fix CI
* Clean up build targets and output dirs.
All old Any CPU targets and mixed ones have been removed. They wouldn't have worked anyways due to SFML.
Cleaned up all the build output directories to be neat and clean.
* Fix Travis
* Upgrades OpenTK 1.6 to 3.0pre in SS14.Client.Graphics project.
Adds OpenTK to all projects so that the math library is available.
Adds helper functions to SFML and OpenTK vectors for better compatibility.
* Fixed issue with OpenTK.dll.config needing to be copied to output.
The esc menu would previously dispose of itself if you used the X button, however this menu is meant simply to toggle invisbility on and off when you press X or esc.
Fixes#296
* Move TransformComponent to use interfaces accessible from Shared.
* Documentation and interface conversion for DirectionComponent.
* Clickable component cleaned up and Shared.
* VelocityComponent standardized.
* Update doc comments on IClientClickable
Somewhere along one of the refactors the code using it got lost.
Also made the server config be relative to the executable if unspecified, relative to the working dir when specified (through terminal for example).
* Remove ComponentFamily, remove "game" components.
The entire ComponentFamily system has been removed entirely.
Components now require explicit registration into the IComponentFactory.
This registration spawns the component as dummy and checks reads some data off it like name, netID...
"Reference" types can also be registered using RegisterReference<TTarget, TInterface>().
These references allow you to get components from entities too, so you can reference by interfaces.
This should allow us to inverse the direct fetching and provide a component API available from Shared.
Note that these reference CANNOT be used to spawn a new component. Only a concrete registration can.
Targeted component family messaging no longer exists.
The messaging system still exist, but it's always to ALL components.
The system should probably be killed completely later.
To fill the gap, all cases where family-targeted messaging was used, it now uses references and simple interfaces.
To reference components accross the network, the component now needs to define a "Net ID".
These net IDs should be unique (but matching between client and server).
I made a set of constants for these IDs too in NetIDs.cs
Names are no longer used in netcode (replaced by net IDs). Should reduce bandwidth usage from string names.
Because a LOT of code got in the way, most "game" content was cut. This includes (among others) items and interaction.
This had to be reimplemented in content, and most of the code was terrible anyways.
Also removed the messaging profiling system. It got in my way and I don't understand it (and I doubt anybody does).
It's in the git history if somebody cares.
Fixes#262, Fixes#250, Fixes#74.
* Attempt to fix unit tests, not yet done.
* Fix unit tests, properly.
* Remove debug message.
* Fix rendering on WearableAnimatedSprite.
It wasn't being registered as ISpriteRenderableComponent because of a typo. The ComponentFactory now detects this error too.
* Basic timing class.
* Added new timing class to use as a central location for keeping track of time.
Enhanced/fixed main loop of server.
* Replaced the Win32 TimerQueue with the System.Thread.Timer version.
* Moved the timing system into IoC.
* The timer was a mistake.
* Final Cleanup.
* Fixed visual bug with the TickRate log message.
* gotta go
* Work cleaning up entity prototypes.
Added handling for the data field in entity prototypes. Closes#131.
Cleaned up a bunch of the YAML handling.
Made missing components throw errors and added a (to be done) error ignore
list.
This'll allow me to unify the prototypes of client and server later.
* Unify client and server prototypes.
* Saving progress of the SS14.Server.Network*, SS14.Server.Player*, and SS14.Server.SS14Server.cs rewrite.
It compiles, but does not run.
* Nightly commit, Still bugged, but compiles.
Made progress, it can now show the map!
* Runs OK, time to purge lidgren from the rest of the server.
* Finished removing most of lidgren from SS14.Server.
General cleanup of networking system.
* Merged the client NetManager into the shared version.
* Removed the giant packet processing switch.
Fixed a few misc bugs.
* Adds the INetServerManager interfaces for servers to use.
Remade the StringTable system into it's own class.
Fixed a few random annoying bugs.
* Got the OnConnecting event working, other modules can accept/deny incoming connections.
Removed the giant block of private config vars in BaseServer.
* Fixed exception issues, now networks exceptions are caught when a packet fails to deserialize.
Final housekeeping.
* More bugfixes.
* Travis fixes 1
* Travis Fixes 2
* Code review changes.
The files have been obsolete with the advent of the (faster) buildResourcePack.py.
There's no reason to use the old ones, and this sets Python 3.6 as a hard build dependency.
* Fixed SFML Fonts throwing StreamClosed errors.
Fixed misspelled font name causing chat box to use default font.
Fixed crash when trying to quit the client from inside a round.
Fixed? backslash issue with the resource pack path.
Removed obsolete unused Player_config.xml.
* More path separator fixing.
Fixed the player sprite moonwalking bug.
* Reverted changes of last commit.
* IoC Field Injection base changes. Usages not converted yet.
* Fix issues with the csproj file.
* Work on converting the client.
* We're done here. All implemented and good.