1. IPv6 support. Woo!
2. NetManager can now explicitly bind to adresses and work with multiple peers. ~~I thought I needed this for IPv6 because I forgot about IPv4-mapped adresses, but the code's written so let's keep it.~~ OpenBSD doesn't support IPv4-mapped IPv6 addresses so effort not wasted.
* VV Refactor.
Yes I just wrote it and it's already inadequate and filled with legacy code.
Instances and sessions were a terrible idea, they're getting replaced with "traits".
It's not even more modular.
Practical difference: it now supports private members, fields and displaying things implementing IEnumerable.
* Clean up code, fix some bugs. Document everything.
* Fix broken unit tests.
* Engine culling.
Sandbox is gone.
Anything resembling "content" such as prototypes and textures is gone.
The engine can no longer load up directly
(short of the client's main menu, of course).
* Make tile prototype definitions workable.
Still not great though.
You can now manually specify their insertion order,
so technically tile ID.
* Switch from storing the components on each entity to a central database inside of ComponentManager.
* Better deferred component remove.
* Turn the IEntity component functions into proxies of the ComponentManager functions.
* Remove Update() base function from Components. If components need to update, an EntitySystem needs to do it.
Resolves#618.
### Purpose
* Merge ServerConsole and ClientConsoleHost shells into one system named ConsoleShell.
* Migrate all server side commands to the new ConsoleShell system.
* Add a PermissionGroup system, for 'ranks' like user/mod/admin/owner.
* Track per-client permission group, allow clients to elevate permission with global 'sudo' password.
* Changed `IWritableDirProvider.Open()` to return a `Stream` instead of a `FileStream` to help test-ability.
Resolves#612.
### Open Questions and Pre-Merge TODOs
- [x] This fix is tested on the same branch it is PR'ed to.
- [x] I correctly commented my code.
- [x] This PR does not include any unnecessary .meta, .prefab or .unity (scene) changes.
- [x] This PR does not bring up any new compile errors.
- [x] This PR has been tested in editor.
- [x] This PR has been tested in multiplayer.
* Added the new writable VFS API. Resolves#566.
* Moved resource interfaces into the new Interfaces.Resource namespace.
* Adds the property `ResourcePath.Directory`.
Removes the obsolete property `IResourceManager.ConfigDirectory`.
* Marked string version of content functions as obsolete.
* Removed unused `System.IO` using statements.
* Removed the System.IO namespace from a bunch of files.
Made the string version of IResourceCache obsolete, and converted everything to use the ResourcePath versions.
This should Resolve#567.
* Fixing some bugs.
* Un-Obsolete the string functions in IResourceCache and IResourceManager.
* Rename SS14.Server/GameState directory.
* Server now runs at 60 FPS.
* RegisterNetMessage<T> more generic!
Also started refactoring game states.
* HOLY SHIT I CAN MOVE AROUND.
* Dirty(); calls and improvements.
* Implement deletions + mark components as dirty initially.
* Remove bsdiff submodule.
* Remove Bsdiff.
* Fix System.ValueTuple reference.
* Server no longer crashes when the gun is used.
* Optimize player sync.
* Prevent constant dirtiness from player input mover.
* Sawmills
* They seem to work on the server now, sorta.
* They work.
* More shit that works.
* Shit works yo.
* File logging for the server.
* Adds some debug commands and finishing touches.
* Oh yeah change this default.
* Fix unit tests.
* RSI WiP
* More work but we're doing bsdiff now
* RSI loading seems to mostly work.
* Vector2u deserialization test.
* Add in packages again.
* This is the part where I realize I need a path manipulation library.
* The start of a path class but it's late so I'm going to bed.
* HIGHLY theoretical ResourcePath code.
Partially tested but not really.
* Allow x86 for unit tests I guess jesus christ.
Thanks Microsoft for still not shipping x64 VS in 2018.
* Resource paths work & are tested.
* I missed a doc spot.
* ResourcePaths implemented on the server.
* Client works with resource paths.
TIME FOR A REFACTOR.
* Some work but this might be a stupid idea so I migh throw it in the trash.
* Resources refactored completely.
They now only get the requested resourcepath.
They're in charge of opening files to load.
* RSI Loader WORKS.
* Update AudioResource for new loading support.
* Fix package references.
* Fix more references.
* Gonna work now?
* bsdiff submodule
* All the other stuff
* Upgrade to 0.2 of SS14.Shared.BSdiff
* Use streams. Even faster!
* All rendering refactors should start with the killing of the SFML submodule. Trust me I've done this before!
* And after that comes the removal of the references in the project files!
Of course, neither of these compile. Meh.
* IoC loads, now to port the entire client over.
* More work
* Trying to debug the null exception.
* More messy WiP code
* More WiP
* Transform components now make Node2Ds inside the scene tree.
* Work on the UI system.
* Redo project configurations to work better.
* More work on the Godot GUI binding.
Added BaseButton and Button bindings, including events for them.
More APIs on Controls like GetChild() and alike.
Ability to instance a Godot PackedScene and have it automatically be wrapped by the SS14 GUI wrapper, thus allowing the usage of Godot's GUI editor while maintaining the good C# API.
* Fix incorrect sRGB profile on bootsplash.png
* LineEdit API.
* Maybe commit the csproj too.
* Exit button works now!
* Change MainMenu root to a normal Control.
* Some stuff messing with window popups.
* Fix popup not scaling down again after housing large text.
* Make popup dialog helper.
* Auto wrap controls that spawn others when not instancing.
* Nice typo me.
* Work getting server connections working.
* Server didn't start anymore due to still trying to load removed zip packs.
* Made MainMenu dump UI elements in shutdown.
* We now successfully connect to the server.
* WE Ingame NOW!
* Basic map rendering works now!
* Camera & Input work.
Though I'm not sure whether the input issues are this piss poor laptop or actual bugs.
* Fix input issues.
KeyHeld() was firing KeyUp() into States, which broke everything.
* WiP Debug console.
UI Works, command processing doesn't.
* Remove some debug logs.
* Fixing focusing issues with the Debug Console.
* In which I copy paste in the DebugConsole code.
* More WiP DebugConsole work.
* Use RichTextLabel for DebugConsole.
* Disable DebugConsole test text.
Also disable context menu on the IP Box because of font size issues.
* ITextureSource for texture wrapping.
* Make resource loading not copy every build.
It now loads from repo root. Release builds are TODO.
* Bsdiff 0.3 for fixed targets.
* Fix iCCP sRGB errors.
* Give full texture paths to prototypes.
* Sprite component old API restored. *shudder*
* Finish sprite rendering.
By hitting delete on basically everything.
* Fixing camera delay with this one weird trick!
The input lag was because the camera lagged, not because the input lagged. I didn't have visualization.
* Use greyshirt as temporary human replacement.
* FPS Counter.
* Fix Windows, re-add space tile def.
Windows broke because Mono on Windows can't use System.IO.Compression.
The GZIP streams use by MsgFullState have been moved to
ICSharpCode.SharpZipLib.GZip. Works fine.
Also re-added the space tile def because everything blows up otherwise I
guess.
* Debug colliders works.
* Highly WiP varied Window code.
* Work on the quit button. Doesn't work yet. Needs state overhaul.
* Do a better job of freeing Godot objects correctly.
* Simplify game states.
States are no longer cached. They're GC'd after shut down. Their creation has been simplified too due to IoCManager.InjectDependencies().
This makes returning to main menu work GUI wise.
* Be less aggressive on resource freeing. Only dispose Mono handles now.
* More work getting quit to work.
* Grids get cleared upon disconnect correctly.
* Disable rendering of the filler space tile.
I'll leave a nice parallax background up to content.
* Oops forgot to stage these.
* Fix issues in the csproj file.
* Make controls have own namespace.
* Chatbox GUI, other stuff.
Compiles but doesn't quite work yet.
* Git fuck you
* Chat works.
* Clicking on a not-control removes focus now.
* Fix an exception.
* Update mono. Use enums instead of constants now!
* Fix window dragging
* Fix chat stealing focus from other LineEdits on MacOS I guess.
* Correctly handle client shutdown & server disconnect.
* Fix error spam on client shutdown probably.
* Tiny amount of lighting code to have access to it from other computers
* Lighting works mostly.
* Godot.Texture.Flags -> FlagsEnum
* More WiP lighting code
* Turns out you can't control custom layers with cameras eh.
* WiP lighting almost works
* Lighting WORKS!
* Lobby thing.
* Some options menu work. I'm gonna try something
* Options menu works.
* More improvements.
* In game options menu works.
* Remove a debug log.
* Fix Window Movement and Drag.
* Huh Godot edited these scenes.
* Forgot to commit projects
* It compiles.
* I never claimed that.
* Update sandbox csprojs a bit.
* Makes sandbox load.
Client goes ingame but dies due to broken map manager networking code.
* Fix grids.
* Fix relogging duplicating entities inside Godot.
* Eyes!
* How about removing the TODO entry.
* Auto fetch bsdiffwrap.
* Update TODO.
* Remove TODO list.
* Tilemaps get cleaned on disconnect now.
* Fix bsdiff submodule HOPEFULLY
* Highly WiP and not compiling or working placement.
Yes this is the best way for me to share code between my computers.
* Fix bsdiff with spaces in path names bloody MSBuild + cmd.
* PLACEMENT KINDA WORKS.
NO RENDERING OR TILES YET.
ALSO I NEED TO REBASE THIS.
* Kill EngineContentPack.zip
* Fix map code and remove sprite components from the server.
* Ok entity placement mostly works.
* Grid lines sorta work but SnapgridCenter is still broke.
* Fix Center Grid Rendering.
* Work getting tile spawns to work. Not quite there yet.
* Fix placement and remove tiledef networking.
It werks!
* Remove SolutionSpecific.targets
Didn't end up being needed.
* Kill off wearableanimatedsprite component states.
* Do not put binaries relative to the solution.
* Remove shaders, reorganize prototypes for content.
* Reimplement SpriteComponent color.
* Correctly set __engine_human DrawDepth.
* Round coordinates passed to Godot to pixels to prevent issues.
* Remove some GUI log spam.
* Resource cache now uses the VFS more-proper but still awfully.
* Fix color reading code on SpriteComponent.
See, e94bf4854b106da51c89eeeab9a609be369f9622 did work.
The problem was all the code it NEEDED to work was broken.
* Step one into trying to fix Travis and AppVeyor.
* Auto download GodotSharp on Travis.
* Let's not make dumb mistakes with the cache directories.
* 2018 and requests still isn't in the stdlib.
* This maybe?
* This maybe?
* AppVeyor time.
* How 'bout we don't download sonarqube at all outside master.
* Try to cache on AppVeyor.
* Fix mac builds maybe.
* Finishing up Godot: cleanup.
* Eh this works too for SS14Loader.
* Remove some dead files
* Make Omnisharp not choke on buildchecker.
* Controls for box containers.
* Remove debug port from project.godot.
* Control and drawing improvements.
Controls are now properly capable of overriding Godot virtuals.
Importantly minsize calculations and stuff like HasPoint.
There is now a system for doing direct drawing on controls.
This is done with a DrawingHandle system.
TextureSource has been renamed to Texture.
Also there's a wrapping for Godot's style boxes now.
* Yeah don't insult omnisharp.
* Stylebox fixes and margin API on controls.
* Hey it compiles!
* Fix things.
* Fix null godot texture conversion.
* Fix client transform parenting.
* Fix movement sticking to north.
* Some updates.
* Work on exports.
* Unstubs client/Godot timing code.
It's mostly implemented now.
* Client unit tests work.
Jesus Christ.
* Let's figure out why AppVeyor hates me.
* Does the remie.
* Update GodotSharp download URL.
* Export templates for the builds server.
* Remove mac export icon.
* TO THE BUILDS SERVER.
* Probably implement the effects system in Godot.
* Fix mouse handling everywhere.
* Fix some CollidableComponent exceptions.
* Effects system works + unshaded option for LAZORS.
* Let's not fuck with Angle yet.
* Make file/line numbers show up on Windows Godot.
* Added Unit Tests for GameTiming.
* Added GameLoop class.
* Removed TimeScale.
* Switched server to the new GameLoop.
* Client now uses GameLoop.
* Allowed friend assemblies in release builds, so TravisCI can run tests.
* Moved GameStateManager functions out of BaseServer.
* Moved PlayerManager NetMsgs out of BaseServer.
* Moved MapManager NetMsg out of BaseServer.
* Moved TryLoadAssembly from BaseServer to AssemblyLoader.
* Removed some service locator calls.
* YAML deserializer is coming along.
Nightly work.
* Should be pretty much working now.
* Converted most of the server components over.
* Entity loading/saving works.
* Grid saving/loading works.
* Cleans up old code.
* Saving and Loading of blueprints works.
* Improved map commands a bit.
* MapLoader fixes grid and map IDs in blueprint.
Can now load blueprints from the VFS.
* Removed Entity.LoadData(YamlMappingNode).
* Updated the nuget 'YamlDotNet' package to 4.3.0.
* Fixed Sandbox entry point.
Unit tests pass again.
Changes way content loads instead of using config, attempts content then loads sandbox instead
Fixes some compiler warnings
Adds a field needed for content player mob
* Lidgren removed from Client.
ScreenBlocker control removed.
* Lidgren removed from server.
Lidgren removed from UnitTesting.
Lidgren only referenced in SS14.Shared.Network.
* Removed useless traffic debug printing.
Fix a bug with Keybinds being sent to server.
* NetMessages enum is finally gone :D
* Add warning for receiving NetMsgs without a registered callback.
* Moved some of the RegisterNetMessage calls out of BaseServer.
Added 'netaudit' concmd to list NetMsg callbacks on the server.
* Fixed exceptions, it works now.
LocalCoordinates.IsValidLocation() added.
* Moved all objects out of the SS14.Shared root namespace.
* Remove IoC self-referencing in MapManager.
* Added Circle to the math library.
Made LocalCoordinates equatable.
MapManager refactoring.
Light refactoring.
* Removed LightArea.
* GetEntities* functions now check mapIds.
PlacementManager does not place things in null space.
Prop Edit window "works" again.
* Lightmasks work.
* Adds skeleton Sandbox Content projects to the solution.
* Change BuildChecker output type to Class Library so that Resharper stops complaining about the project not having a Main() function.
* Added basic player event hooks to BaseServer.
Moved Server run level from PlayerManager to BaseServer.
Added concmds to switch between run levels on server.
* Forgot to commit project file.
* Entry points got changed a bit.
* You can now join a game without a map loaded on the server.
* Moved map loading to Content.
* Adds 'tp' command.
* Added 'addmap' command. Client crashes when used.
* Teleporting between maps works.
* Added GridId and MapId types.
Removed Test concmd, it was useless.
Misc formatting/cleanup.
* Tile placement kinda works.
* Added OnPlayerStatusChanged event.
* Server now auto starts the round.
* HandlePlayerStatusChanged works better now.
* Removed PlayerJoined* events from BaseServer, PlayerStatusChanged event does the same thing.
* Changed default platform of Sandbox from AnyCPU to x86.
Added "content.dllprefix" ConVar so that the config file can specify which content dll to load.
Changed LoadContentAssembly name argument to contain the entire name of the dll being searched for.
* SS14.Shared now copies Lidgren to the output directory.
More project configuration changes to remove the AnyCPU nonsense.
* Extracted the logic from DebugConsole into a new ClientConsole class.
* ClientConsole moved to IoC system.
Verb system replaced with concmds.
* Shared Cleanup
* ClientChatConsole skeleton.
* DebugConsole and LobbyChat are now both subscribed to ClientChatConsole.
* Removed server chat commands.
* cleaned up server command sysyem.
* More chat handling, and aliasing.
* Nightly work on Say command.
* Fixes a bug in Maths.Angle.
* Chat channel colors moved to ClientChatConsole.
* Now Server commands are sent without opening DebugConsole.
* Emotes work.
Clientside chat formatting works.
* Fixed angle unit test.
* Added BaseClient.
Moved connecting system into BaseClient.
* Added ConnectFailed event to ClientNetManager.
BaseClient properly handles failed connection attempts.
* Session Rework
* Client now knows about other clients that are connected to the server.
* Reconnecting with the client works now.
* Allow Dupe IP.
* Shared PlayerManager shell.
* More session work.
* TWO PEOPLE CAN ACTUALLY CONNECT.
* Added some event functions to BaseClient.
* Basic multiplayer works again.
* Fixed MsgPlayerList buffer overrun.
* Lobby Updates.
Simplified MsgPlayerList, and cleaned up some networking.
* Cleaned up misc dead code.
Added DocComments to IBaseClient and BaseClient.
* Fixes spelling issues and adds more Doc Comments.
* The million error march
This commit replaces many of the vector2's with their appropriate version of either LocalCoordinates, WorldCoordinates, or ScreenCoordinates
* Change transforms to send back worldcoordinates for position instead
* Adds coordinate class file
* What the fuck is going onnnnnn
* What the fuck is goign onnnnnnnnnnnn
* Changes some shit to use multiple maps instead
Fixes the compile errors in shared first
* Compile errors mostly fixed, about to rebase
* Merge branch 'master-wizfederation' into multiplemaps
# Conflicts:
# SS14.Client.Graphics/CluwneLib.cs
# SS14.Client/GameObjects/ClientEntityManager.cs
# SS14.Client/GameObjects/Components/Renderable/AnimatedSpriteComponent.cs
# SS14.Client/GameObjects/Components/Renderable/ItemSpriteComponent.cs
# SS14.Client/GameObjects/Components/Renderable/ParticleSystemComponent.cs
# SS14.Client/GameObjects/Components/Renderable/SpriteComponent.cs
# SS14.Client/GameObjects/Components/Transform/TransformComponent.cs
# SS14.Client/Interfaces/GameObjects/IClickTargetComponent.cs
# SS14.Client/Placement/Modes/AlignSimilar.cs
# SS14.Client/Placement/Modes/AlignSnapgridBorder.cs
# SS14.Client/Placement/Modes/AlignSnapgridCenter.cs
# SS14.Client/Placement/Modes/AlignTileAny.cs
# SS14.Client/Placement/Modes/AlignTileEmpty.cs
# SS14.Client/Placement/Modes/AlignTileNonSolid.cs
# SS14.Client/Placement/Modes/AlignTileSolid.cs
# SS14.Client/Placement/Modes/AlignWall.cs
# SS14.Client/Placement/PlacementManager.cs
# SS14.Server/GameObjects/ServerEntityManager.cs
# SS14.Server/Interfaces/Player/IPlayerManager.cs
# SS14.Server/Player/PlayerManager.cs
* Whops
* Compiles, loads somewhat, lights nonfunctional, many TODOs left
* serializes states, fixes incorrect spawn
* Fix map sending to the client
* Makes things only render on the correct zlevel
* Makes entity manager wait to intiialize shit after the maps arrive
* Fixes placement net messages
* Improves some of the placement managers, others need a bit of testing and tidying up again
* Transform fix
* Polishing, make coordinates into structs
* Remove resolved comments
* Last commit before master merge
* Fix the rest of the conflicts
* Fixes super spooky bug
* Fixes cross zlevel collisions
* Fix the rendering system to render the tile system regardless of grid location
* * CluwneLib.cs: Make _window a local variable
* BaseCollection.cs: Formatting issue
* BaseServer.cs: Removed unused parameter
* ChatManager.cs: Made public encapsulated fields
* BoundKeyEventArgs.cs: Public encapsulated parameters
* CVarFlags.cs: Explicit variable setting
* ComponentFactory.cs: unused variable
* * CluwneLib.cs: Make _window a local variable
* BaseCollection.cs: Formatting issue
* BaseServer.cs: Removed unused parameter
* ChatManager.cs: Made public encapsulated fields
* BoundKeyEventArgs.cs: Public encapsulated parameters
* CVarFlags.cs: Explicit variable setting
* ComponentFactory.cs: unused variable
* CVar fixes
* Edited the OSX error message to be a little more helpful. (You have to edit the .dylibs because they come broken).
* Fixing the sprite movement problem
* Reverted error message
* Revert Again
* Creates a Snap Checking System
Creates a system that attempts to sanitize placement of objects when attempting to spawn them on snapping grids. This checks whether an object is trying to spawn specifically on a snap grid, and if it is checks against a snapflag of the type to see if other exclusive snappable objects are on that snap grid point.
Separates the spawnentityat into tryspawnentityat which checks for snappables, and forcespawnentityat which completely ignores that.
* Fixes the yaml placement
Fixes exemption from tryspawnentityat which didn't use the bool
Snap placement managers show when canspawnat is preventing them from spawning
* Improve snap placement managers again
Fix using prototype.name instead of prototype.ID
* Nope nope
* I need to unify these two types after the next refactor
* Move to strings for snap flags.
* Check
* 「s h i t c o d e」
* Gracias appveyor now I have seen the light
* Uses FloatMath.CloseTo() to check float equality
* "./Resources/" folder is now mounted instead of "./" in the ResourceManager.
Prototypes now use the ResourceManager.
Added FindFiles(string path) to recursively find files in the ResourceManager.
General FileHelper bug fixing and cleanup.
* Ran SS14.Shared/ContentPack* through the code cleanup again.
* Put PJB's comma back in.
* Makes walls into entities
* Fix the align tile empty placement mode, holy shit collision bounds is fucked
* Make shadowcasting from walls work again
* Fix lights on tiles
* Merged Client and Server Map interfaces into a Shared version.
Merged Client and Server MapManager system into a shared version.
* Added some encapsulation to the map system.
Added doc comments to client and server classes.
It compiles, but it DOES NOT WORK.
* Now with 89% more encapsulation.
Added a MapGrid object to the MapManager.
STILL A BUGGY MESS!
* Rendering bugs were fixed.
* Fixed alignment bug with GetTilesIntersecting.
* Cleanup the interfaces a bit.
* Code update.
* Merged client/server MapNetworkManager into shared version.
* Nightly work. Compiles, does not run.
* Shared networking looks like it works.
* Cleanup and remove SFML.
* Cleans up base Component.
* Clean up PhysicsComponent.
Merge VelocityComponent with PhysicsComponent.
* Renamed HitBoxComponent to BoundingBoxComponent.
Cleaned up BoundingBoxComponent.
Added Box2 to the serializer and SfmlCompatibility.
* Serverside movement works.
* Removed DirectionComponent.
Everything is broke, time to sleep.
* Removed BasicMoverComponent and SlaveMoverComponent.
Added Parenting skeleton to TransformComponent.
* Move ClickAbleComponent to Input.
Fixed lights.
* More general cleanup.
* Move Physics system into Shared.
* Removed ColliderComponent.
* Fixed AnimatedSprite Rotation.
* Added Vector2i as a type.
* Fixes StackOverflow bug by just not using SFML.Vector2f.
* Should fix Build issues.
* Removed pointless server console resizing.
Fixed Unit tests working in VS.
Updated PrototypeManager_Test.cs tests.
* Adds SS14.Shared/Maths/VecMath.cs helper functions.
* Switched to Angle type.
* Fix server crash on rejoin
* Makes it possible to rejoin without exception
* Proper fix by culling ALL the component lists when the entity manager shuts down
* Deprecate resource pack temporarily.
Temporarily being until we actually need content downloading from server.
Resources now get copied to the output directories directly.
* Move prototypes around.