diff --git a/.gitignore b/.gitignore index f413654f8a..e40481e459 100644 --- a/.gitignore +++ b/.gitignore @@ -268,3 +268,9 @@ release/ # Apple please go. .DS_Store + +BuildFiles/Mac/Space Station 14.app/Contents/MacOS/Godot +BuildFiles/Mac/Space Station 14.app/Contents/MacOS/GodotSharpTools.dll +BuildFiles/Mac/Space Station 14.app/Contents/MacOS/mscorlib.dll +BuildFiles/Mac/Space Station 14.app/Contents/MacOS/libmonosgen-2.0.dylib +BuildFiles/Windows/Godot/* diff --git a/BuildChecker/BuildChecker.csproj b/BuildChecker/BuildChecker.csproj index 5384696457..e2d01a14f6 100644 --- a/BuildChecker/BuildChecker.csproj +++ b/BuildChecker/BuildChecker.csproj @@ -17,6 +17,7 @@ https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild python3 py -3 {C899FCA4-7037-4E49-ABC2-44DE72487110} + .NETFramework, Version=v4.5.1 Library @@ -31,4 +32,8 @@ https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild - \ No newline at end of file + + + + + diff --git a/BuildChecker/git_helper.py b/BuildChecker/git_helper.py index 53bdc103f7..5d72e3f9b5 100644 --- a/BuildChecker/git_helper.py +++ b/BuildChecker/git_helper.py @@ -91,6 +91,6 @@ def reset_solution(): with SOLUTION_PATH.open("w") as f: f.write(content) -if __name__ == '__main__': - install_hooks() - update_submodules() +#if __name__ == '__main__': +# install_hooks() +# update_submodules() diff --git a/BuildFiles/Mac/Space Station 14.app/Contents/MacOS/SS14 b/BuildFiles/Mac/Space Station 14.app/Contents/MacOS/SS14 index b5bcdfbfe4..e69529e5b4 100755 --- a/BuildFiles/Mac/Space Station 14.app/Contents/MacOS/SS14 +++ b/BuildFiles/Mac/Space Station 14.app/Contents/MacOS/SS14 @@ -5,5 +5,4 @@ BASEDIR=$(dirname "$0") echo "$BASEDIR" cd "$BASEDIR" -# TODO: unhardcode this, probably ship Mono with SS14. -/Library/Frameworks/Mono.framework/Versions/Current/Commands/mono --arch=64 ./SS14.Client.exe +./Godot --path ./SS14.Client.Godot diff --git a/BuildFiles/Windows/launch.bat b/BuildFiles/Windows/launch.bat new file mode 100644 index 0000000000..12fea13879 --- /dev/null +++ b/BuildFiles/Windows/launch.bat @@ -0,0 +1 @@ +call Godot\godot.windows.tools.64.mono.exe --path SS14.Client.Godot diff --git a/Content.Client/Content.Client.csproj b/Content.Client/Content.Client.csproj index 8678e033df..19c65e36ac 100644 --- a/Content.Client/Content.Client.csproj +++ b/Content.Client/Content.Client.csproj @@ -1,5 +1,5 @@  - + Debug @@ -11,37 +11,46 @@ Content.Client v4.5.1 512 - ..\bin\Client\Resources\Assemblies\ + ..\engine\bin\Client\Resources\Assemblies\ ..\bin\Content.Client\ prompt - MinimumRecommendedRules.ruleset + MinimumRecommendedRules.ruleset true DEBUG;TRACE - full + portable x86 - TRACE + TRACE;RELEASE true x86 true DEBUG;TRACE - full + portable x64 - TRACE + TRACE;RELEASE true x64 + + TRACE;RELEASE + true + + + true + DEBUG;TRACE + portable + @@ -75,12 +84,8 @@ {59250baf-0000-0000-0000-000000000000} Lidgren.Network - - {302b877e-0000-0000-0000-000000000000} - SS14.Client.Graphics - - {0c31dfdf-0000-0000-0000-000000000000} + {83429BD6-6358-4B18-BE51-401DF8EA2673} SS14.Client @@ -102,4 +107,4 @@ - \ No newline at end of file + diff --git a/Content.Client/GameObjects/Components/Doors/ClientDoorComponent.cs b/Content.Client/GameObjects/Components/Doors/ClientDoorComponent.cs index 00f4f9315c..8c593d60f4 100644 --- a/Content.Client/GameObjects/Components/Doors/ClientDoorComponent.cs +++ b/Content.Client/GameObjects/Components/Doors/ClientDoorComponent.cs @@ -12,8 +12,8 @@ namespace Content.Client.GameObjects public bool Opened { get; private set; } private SpriteComponent spriteComponent; - private string OpenSprite = "door_ewo"; - private string CloseSprite = "door_ew"; + private string OpenSprite = "Objects/door_ewo.png"; + private string CloseSprite = "Objects/door_ew.png"; public override void Initialize() { diff --git a/Content.Client/GameObjects/Components/Items/ClientHandsComponent.cs b/Content.Client/GameObjects/Components/Items/ClientHandsComponent.cs index f61b86d245..e6aca6bea2 100644 --- a/Content.Client/GameObjects/Components/Items/ClientHandsComponent.cs +++ b/Content.Client/GameObjects/Components/Items/ClientHandsComponent.cs @@ -30,19 +30,27 @@ namespace Content.Client.GameObjects hands.Clear(); foreach (var hand in cast.Hands) { - hands[hand.Key] = Owner.EntityManager.GetEntity(hand.Value); + IEntity entity = null; + try + { + entity = Owner.EntityManager.GetEntity(hand.Value); + } + catch + { + // Nothing. + } + hands[hand.Key] = entity; } ActiveIndex = cast.ActiveIndex; - // Tell UI to update. var uiMgr = IoCManager.Resolve(); - if (!uiMgr.TryGetSingleComponent(out var component)) + if (!uiMgr.StateRoot.TryGetChild("HandsGui", out var control)) { - component = new HandsGui(); - uiMgr.AddComponent(component); + control = new HandsGui(); + uiMgr.StateRoot.AddChild(control); } - component.UpdateHandIcons(); + control.UpdateHandIcons(); } public void SendChangeHand(string index) diff --git a/Content.Client/UserInterface/HandsGui.cs b/Content.Client/UserInterface/HandsGui.cs index 8cd539f27b..d966235416 100644 --- a/Content.Client/UserInterface/HandsGui.cs +++ b/Content.Client/UserInterface/HandsGui.cs @@ -1,11 +1,13 @@ using Content.Client.Interfaces.GameObjects; using SS14.Client.GameObjects; using SS14.Client.Graphics; -using SS14.Client.Graphics.Input; -using SS14.Client.Graphics.Sprites; +using SS14.Client.Graphics.Drawing; +using SS14.Client.Input; using SS14.Client.Interfaces.Player; -using SS14.Client.Interfaces.Resource; +using SS14.Client.Interfaces.ResourceManagement; using SS14.Client.Interfaces.UserInterface; +using SS14.Client.ResourceManagement; +using SS14.Client.UserInterface; using SS14.Client.UserInterface.Controls; using SS14.Shared.Interfaces.GameObjects; using SS14.Shared.IoC; @@ -13,47 +15,53 @@ using SS14.Shared.Maths; namespace Content.Client.UserInterface { - public class HandsGui : Control + public class HandsGui : HBoxContainer { - private readonly Color _inactiveColor = new Color(90, 90, 90); + private static readonly Color _inactiveColor = new Color(90, 90, 90); + private const int BOX_SPACING = 1; + // The boxes are square so that's both width and height. + private const int BOX_SIZE = 50; private readonly IPlayerManager _playerManager = IoCManager.Resolve(); private readonly IUserInterfaceManager _userInterfaceManager = IoCManager.Resolve(); - private readonly Sprite handSlot; - private readonly int spacing = 1; + private StyleBoxTexture handBox; + private StyleBoxTexture inactiveHandBox; private UiHandInfo LeftHand; private UiHandInfo RightHand; private Box2i handL; private Box2i handR; - public HandsGui() + protected override void Initialize() { + base.Initialize(); + var _resMgr = IoCManager.Resolve(); - handSlot = _resMgr.GetSprite("hand"); - // OnCalcRect() calculates position so this needs to be ran - // as it doesn't automatically get called by the UI manager. - DoLayout(); + var handsBoxTexture = _resMgr.GetResource("Textures/UserInterface/handsbox.png"); + handBox = new StyleBoxTexture() + { + Texture = handsBoxTexture, + }; + handBox.SetMargin(StyleBox.Margin.All, 6); + inactiveHandBox = new StyleBoxTexture(handBox) + { + Modulate = _inactiveColor, + }; + SetMarginsPreset(LayoutPreset.CenterBottom); + SetAnchorPreset(LayoutPreset.CenterBottom); + + handL = new Box2i(0, 0, BOX_SIZE, BOX_SIZE); + handR = handL.Translated(new Vector2i(BOX_SIZE + BOX_SPACING, 0)); + SS14.Shared.Log.Logger.Debug($"{handL}, {handR}"); + MouseFilter = MouseFilterMode.Stop; } - protected override void OnCalcRect() + protected override Vector2 CalculateMinimumSize() { - // Individual size of the hand slot sprite. - var slotBounds = handSlot.LocalBounds; - var width = (int)((slotBounds.Width * 2) + spacing); - var height = (int)slotBounds.Height; - - // Force size because refactoring is HARD. - Size = new Vector2i(width, height); - ClientArea = Box2i.FromDimensions(0, 0, Width, Height); - - // Hell force position too what could go wrong! - Position = new Vector2i((int)(CluwneLib.Window.Viewport.Width - width) / 2, (int)CluwneLib.Window.Viewport.Height - height - 10); - handL = Box2i.FromDimensions(Position.X, Position.Y, (int)slotBounds.Width, (int)slotBounds.Height); - handR = Box2i.FromDimensions(Position.X + (int)slotBounds.Width + spacing, Position.Y, (int)slotBounds.Width, (int)slotBounds.Height); + return new Vector2(BOX_SIZE * 2 + 1, BOX_SIZE); } - protected override void DrawContents() + protected override void Draw(DrawingHandle handle) { if (_playerManager?.LocalPlayer == null) { @@ -68,37 +76,31 @@ namespace Content.Client.UserInterface var leftActive = hands.ActiveIndex == "left"; - handSlot.Color = Color.White; - handSlot.SetTransformToRect(leftActive ? handL : handR); - handSlot.Draw(); - - handSlot.Color = _inactiveColor; - handSlot.SetTransformToRect(leftActive ? handR : handL); - handSlot.Draw(); + handle.DrawStyleBox(handBox, leftActive ? handL : handR); + handle.DrawStyleBox(inactiveHandBox, leftActive ? handR : handL); if (LeftHand.Entity != null && LeftHand.HeldSprite != null) { - var bounds = LeftHand.HeldSprite.LocalBounds; - LeftHand.HeldSprite.SetTransformToRect( - Box2i.FromDimensions(handL.Left + (int)(handL.Width / 2f - bounds.Width / 2f), - handL.Top + (int)(handL.Height / 2f - bounds.Height / 2f), - (int)bounds.Width, (int)bounds.Height)); - LeftHand.HeldSprite.Draw(); + var bounds = LeftHand.HeldSprite.Size; + handle.DrawTextureRect(LeftHand.HeldSprite, + Box2i.FromDimensions(handL.Left + (int)(handL.Width / 2f - bounds.X / 2f), + handL.Top + (int)(handL.Height / 2f - bounds.Y / 2f), + (int)bounds.X, (int)bounds.Y), tile: false); } if (RightHand.Entity != null && RightHand.HeldSprite != null) { - var bounds = RightHand.HeldSprite.LocalBounds; - RightHand.HeldSprite.SetTransformToRect( - Box2i.FromDimensions(handR.Left + (int)(handR.Width / 2f - bounds.Width / 2f), - handR.Top + (int)(handR.Height / 2f - bounds.Height / 2f), - (int)bounds.Width, (int)bounds.Height)); - RightHand.HeldSprite.Draw(); + var bounds = RightHand.HeldSprite.Size; + handle.DrawTextureRect(RightHand.HeldSprite, + Box2i.FromDimensions(handR.Left + (int)(handR.Width / 2f - bounds.Y / 2f), + handR.Top + (int)(handR.Height / 2f - bounds.Y / 2f), + (int)bounds.X, (int)bounds.Y), tile: false); } } public void UpdateHandIcons() { + UpdateDraw(); if (_playerManager?.LocalPlayer.ControlledEntity == null) { return; @@ -152,39 +154,43 @@ namespace Content.Client.UserInterface hands.SendChangeHand(index); } - public override bool MouseDown(MouseButtonEventArgs e) + protected override bool HasPoint(Vector2 point) { - if (e.Button != Mouse.Button.Right) - { - return false; - } - if (handL.Contains(e.X, e.Y)) - { - SendSwitchHandTo("left"); - return true; - } - if (handR.Contains(e.X, e.Y)) - { - SendSwitchHandTo("right"); - return true; - } - return false; + return handL.Contains((Vector2i)point) || handR.Contains((Vector2i)point); } - private static Sprite GetIconSprite(IEntity entity) + protected override void MouseDown(GUIMouseButtonEventArgs args) { - Sprite icon = null; - if (entity.TryGetComponent(out var component)) + base.MouseDown(args); + + if (args.Button != Mouse.Button.Right) { - icon = component.Icon; + return; } - return icon ?? IoCManager.Resolve().DefaultSprite(); + + if (handL.Contains((Vector2i)args.RelativePosition)) + { + SendSwitchHandTo("left"); + } + if (handR.Contains((Vector2i)args.RelativePosition)) + { + SendSwitchHandTo("right"); + } + } + + private static Texture GetIconSprite(IEntity entity) + { + if (entity.TryGetComponent(out var component) && component.Icon != null) + { + return component.Icon; + } + return IoCManager.Resolve().GetFallback(); } private struct UiHandInfo { public IEntity Entity { get; set; } - public Sprite HeldSprite { get; set; } + public Texture HeldSprite { get; set; } } } } diff --git a/Content.Client/packages.config b/Content.Client/packages.config index 0072b14da4..ad225f30e9 100644 --- a/Content.Client/packages.config +++ b/Content.Client/packages.config @@ -1,6 +1,6 @@  - + - \ No newline at end of file + diff --git a/Content.Server/Content.Server.csproj b/Content.Server/Content.Server.csproj index 2fb2c2511d..b6f61fe713 100644 --- a/Content.Server/Content.Server.csproj +++ b/Content.Server/Content.Server.csproj @@ -1,5 +1,5 @@  - + Debug @@ -11,33 +11,42 @@ Content.Server v4.5.1 512 - ..\bin\Server\Resources\Assemblies\ + ..\engine\bin\Server\Resources\Assemblies\ ..\bin\Content.Server\ prompt - MinimumRecommendedRules.ruleset + MinimumRecommendedRules.ruleset true DEBUG;TRACE - full + portable x86 - TRACE + TRACE;RELEASE true x86 true DEBUG;TRACE - full + portable x64 - TRACE + TRACE;RELEASE true x64 + + TRACE;RELEASE + true + + + true + DEBUG;TRACE + portable + @@ -126,5 +135,4 @@ - - \ No newline at end of file + diff --git a/Content.Server/GameObjects/Components/Weapon/Ranged/Hitscan/HitscanWeaponComponent.cs b/Content.Server/GameObjects/Components/Weapon/Ranged/Hitscan/HitscanWeaponComponent.cs index 21629972e1..199e08793c 100644 --- a/Content.Server/GameObjects/Components/Weapon/Ranged/Hitscan/HitscanWeaponComponent.cs +++ b/Content.Server/GameObjects/Components/Weapon/Ranged/Hitscan/HitscanWeaponComponent.cs @@ -17,43 +17,45 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Hitscan { public override string Name => "HitscanWeapon"; - string spritename = "laser"; - + string spritename = "Objects/laser.png"; + protected override void Fire(IEntity user, LocalCoordinates clicklocation) { var userposition = user.GetComponent().WorldPosition; //Remember world positions are ephemeral and can only be used instantaneously var angle = new Angle(clicklocation.Position - userposition); - var theta = angle.Theta; - + var ray = new Ray(userposition, angle.ToVec()); var raycastresults = IoCManager.Resolve().IntersectRay(ray, 20, Owner.GetComponent().GetMapTransform().Owner); Hit(raycastresults); - AfterEffects(user, raycastresults, theta); + AfterEffects(user, raycastresults, angle); } protected virtual void Hit(RayCastResults ray) { - if(ray.HitEntity != null && ray.HitEntity.TryGetComponent(out DamageableComponent damage)) + if (ray.HitEntity != null && ray.HitEntity.TryGetComponent(out DamageableComponent damage)) { damage.TakeDamage(DamageType.Heat, 10); } } - - protected virtual void AfterEffects(IEntity user, RayCastResults ray, double theta) + + protected virtual void AfterEffects(IEntity user, RayCastResults ray, Angle angle) { var time = IoCManager.Resolve().CurTime; + var offset = angle.ToVec() * ray.Distance / 2; + EffectSystemMessage message = new EffectSystemMessage { EffectSprite = spritename, Born = time, DeathTime = time + TimeSpan.FromSeconds(1), Size = new Vector2(ray.Distance, 1f), - Coordinates = user.GetComponent().LocalPosition, + Coordinates = user.GetComponent().LocalPosition.Translated(offset), //Rotated from east facing - Rotation = (float)theta, + Rotation = (float)angle.Theta, ColorDelta = new Vector4(0, 0, 0, -1500f), - Color = new Vector4(255,255,255,750) + Color = new Vector4(255, 255, 255, 750), + Shaded = false }; IoCManager.Resolve().GetEntitySystem().CreateParticle(message); } diff --git a/Content.Server/packages.config b/Content.Server/packages.config index 0072b14da4..ad225f30e9 100644 --- a/Content.Server/packages.config +++ b/Content.Server/packages.config @@ -1,6 +1,6 @@  - + - \ No newline at end of file + diff --git a/Content.Shared/Content.Shared.csproj b/Content.Shared/Content.Shared.csproj index b26d1f0b4a..c538cc8029 100644 --- a/Content.Shared/Content.Shared.csproj +++ b/Content.Shared/Content.Shared.csproj @@ -1,5 +1,5 @@  - + Debug @@ -13,30 +13,39 @@ 512 bin\x86\Debug\ prompt - MinimumRecommendedRules.ruleset + MinimumRecommendedRules.ruleset true DEBUG;TRACE - full + portable x86 - TRACE + TRACE;RELEASE true x86 true DEBUG;TRACE - full + portable x64 - TRACE + TRACE;RELEASE true x64 + + TRACE;RELEASE + true + + + true + DEBUG;TRACE + portable + @@ -75,33 +84,17 @@ SS14.Client false + {83429BD6-6358-4B18-BE51-401DF8EA2673} SS14.Server false + {B04AAE71-0000-0000-0000-000000000000} - - - False - - - - - - - - Prototypes\Content\ - - - - - - - - \ No newline at end of file + diff --git a/Content.Shared/EntryPoint.cs b/Content.Shared/EntryPoint.cs index 7d0dd955d6..9681111932 100644 --- a/Content.Shared/EntryPoint.cs +++ b/Content.Shared/EntryPoint.cs @@ -1,4 +1,6 @@ using SS14.Shared.ContentPack; +using SS14.Shared.Interfaces; +using SS14.Shared.IoC; namespace Content.Shared { @@ -6,7 +8,10 @@ namespace Content.Shared { public override void Init() { - // TODO: Anything at all. +#if DEBUG + var resm = IoCManager.Resolve(); + resm.MountContentDirectory(@"../../../Resources/"); +#endif } } } diff --git a/Content.Shared/packages.config b/Content.Shared/packages.config index 0072b14da4..ad225f30e9 100644 --- a/Content.Shared/packages.config +++ b/Content.Shared/packages.config @@ -1,6 +1,6 @@  - + - \ No newline at end of file + diff --git a/Jenkinsfile b/Jenkinsfile index ff7bf04df8..104bce04c2 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -4,15 +4,15 @@ pipeline { stages { stage('Setup') { steps { - sh './RUN_THIS.py' + sh 'git submodule update --init --recursive' sh 'TMP=~/.cache/NuGet/ nuget restore' + sh 'engine/Tools/download_godotsharp.py' } } stage('Build') { steps { - sh './package_release_build.py' + sh './package_release_build.py -p windows linux --godot /home/pjbriers/builds_shared/godot --windows-godot-build /home/pjbriers/builds_shared/win' archiveArtifacts artifacts: 'release/*.zip' - archiveArtifacts artifacts: 'engine/Resources/ResourcePack.zip' } } } diff --git a/Resources/Prototypes/1_Temperature.yml b/Resources/Prototypes/1_Temperature.yml index f3c69ed49d..ab83e08513 100644 --- a/Resources/Prototypes/1_Temperature.yml +++ b/Resources/Prototypes/1_Temperature.yml @@ -6,10 +6,10 @@ - type: Clickable - type: Sprite sprites: - - shoes + - Items/shoes.png - type: Icon - icon: shoes + icon: Items/shoes.png - type: Damageable resistanceset: Standard diff --git a/Resources/Prototypes/Entities/Clothing.yml b/Resources/Prototypes/Entities/Clothing.yml index 5f4ec1b3ae..35872b0ef7 100644 --- a/Resources/Prototypes/Entities/Clothing.yml +++ b/Resources/Prototypes/Entities/Clothing.yml @@ -3,21 +3,19 @@ id: ShoesItem name: Shoes components: - - type: WearableAnimatedSprite - sprite: player_shoes - notWornSprite: shoes + - type: Sprite + sprite: Items/shoes.png - type: Icon - icon: shoes + icon: Items/shoes.png - type: entity parent: BaseItem id: JanitorUniformItem name: Janitor Jumpsuit components: - - type: WearableAnimatedSprite - sprite: player_jumpsuit_gray - notWornSprite: janitorsuit + - type: Sprite + sprite: Items/janitorsuit.png - type: Icon - icon: janitorsuit + icon: Items/janitorsuit.png diff --git a/Resources/Prototypes/Entities/Door.yml b/Resources/Prototypes/Entities/Door.yml index 15bc04eed8..56afd2a4a0 100644 --- a/Resources/Prototypes/Entities/Door.yml +++ b/Resources/Prototypes/Entities/Door.yml @@ -7,13 +7,14 @@ - type: Sprite drawdepth: FloorPlaceable sprites: - - door_ew - - door_ewo + - Objects/door_ew.png + - Objects/door_ewo.png - type: Icon - icon: door_ew + icon: Objects/door_ew.png - type: BoundingBox + aabb: "1,-0.75,2,0.75" sizeX: 1.9 offsetY: 1.5 - type: Collidable diff --git a/Resources/Prototypes/Entities/HitscanWeapons.yml b/Resources/Prototypes/Entities/HitscanWeapons.yml index 9bb823ddc5..e26f6e62e1 100644 --- a/Resources/Prototypes/Entities/HitscanWeapons.yml +++ b/Resources/Prototypes/Entities/HitscanWeapons.yml @@ -3,21 +3,19 @@ parent: BaseItem id: LaserItem components: - - type: WearableAnimatedSprite - notWornSprite: gun - sprite: gun + - type: Sprite + sprite: Objects/gun.png - type: Icon - icon: gun + icon: Objects/gun.png - type: HitscanWeapon - + - type: entity name: GUN parent: BaseItem id: GUNITEM components: - - type: WearableAnimatedSprite - notWornSprite: projectileweapon - sprite: projectileweapon + - type: Sprite + sprite: Objects/projectileweapon.png - type: Icon - icon: gun - - type: ProjectileWeapon \ No newline at end of file + icon: Objects/projectileweapon.png + - type: ProjectileWeapon diff --git a/Resources/Prototypes/Entities/Items.yml b/Resources/Prototypes/Entities/Items.yml index 0472b55c71..804831d819 100644 --- a/Resources/Prototypes/Entities/Items.yml +++ b/Resources/Prototypes/Entities/Items.yml @@ -14,44 +14,40 @@ parent: BaseItem id: RedToolboxItem components: - - type: WearableAnimatedSprite - notWornSprite: toolbox_r - sprite: player_toolbox + - type: Sprite + sprite: Items/toolbox_r.png - type: Icon - icon: toolbox_r + icon: Items/toolbox_r.png - type: entity name: "Mechanical Toolbox With Handle" parent: BaseItem id: BlueToolboxItem components: - - type: WearableAnimatedSprite - notWornSprite: toolbox_b - sprite: player_toolbox + - type: Sprite + sprite: Items/toolbox_b.png - type: Icon - icon: toolbox_b + icon: Items/toolbox_b.png - type: entity name: "Electrical Toolbox With Handle" parent: BaseItem id: YellowToolboxItem components: - - type: WearableAnimatedSprite - notWornSprite: toolbox_y - sprite: player_toolbox + - type: Sprite + sprite: Items/toolbox_y.png - type: Icon - icon: toolbox_y + icon: Items/toolbox_y.png - type: entity name: "Extra-Grip™ Mop" parent: BaseItem id: MopItem components: - - type: WearableAnimatedSprite - notWornSprite: mop - sprite: player_mop + - type: Sprite + sprite: Items/mop.png - type: Icon - sprite: mop + icon: Items/mop.png #handheld lights - type: entity @@ -59,9 +55,8 @@ parent: BaseItem id: FlashlightLantern components: - - type: WearableAnimatedSprite - notWornSprite: Flashlight - sprite: player_Flashlight + - type: Sprite + sprite: Items/Flashlight.png - type: Icon - icon: Flashlight - - type: PointLight \ No newline at end of file + icon: Items/Flashlight.png + - type: PointLight diff --git a/Resources/Prototypes/Entities/Power.yml b/Resources/Prototypes/Entities/Power.yml index 313cca842c..fcc2e2d5a8 100644 --- a/Resources/Prototypes/Entities/Power.yml +++ b/Resources/Prototypes/Entities/Power.yml @@ -9,9 +9,9 @@ drawdepth: FloorPlaceable color: Red sprites: - - eightdirwire + - Objects/eightdirwire.png - type: Icon - icon: eightdirwire + icon: Objects/eightdirwire.png - type: PowerTransfer snap: @@ -35,11 +35,11 @@ - type: Sprite drawdepth: FloorPlaceable sprites: - - generator + - Objects/generator.png - type: Icon - icon: generator + icon: Objects/generator.png - type: PowerGenerator - + - type: entity id: WPPnobattery name: WPPnobattery @@ -50,9 +50,9 @@ - type: Sprite drawdepth: FloorPlaceable sprites: - - provider + - Objects/provider.png - type: Icon - icon: provider + icon: Objects/provider.png - type: PowerProvider Range: 5 Priority: Provider @@ -67,8 +67,8 @@ Charge: 1000 ChargeRate: 200 ChargePowernet: false - - + + - type: entity id: SMES name: SMES @@ -79,9 +79,9 @@ - type: Sprite drawdepth: FloorPlaceable sprites: - - storage + - Objects/storage.png - type: Icon - icon: storage + icon: Objects/storage.png - type: PowerStorage Capacity: 3000 Charge: 1000 @@ -99,9 +99,9 @@ - type: Sprite drawdepth: FloorPlaceable sprites: - - wiredmachine + - Objects/wiredmachine.png - type: Icon - icon: wiredmachine + icon: Objects/wiredmachine.png - type: PowerDevice Drawtype: Node Load: 100 @@ -117,10 +117,10 @@ - type: Sprite drawdepth: FloorPlaceable sprites: - - wirelessmachine + - Objects/wirelessmachine.png - type: Icon - icon: wirelessmachine + icon: Objects/wirelessmachine.png - type: PowerDevice Drawtype: Both Load: 200 - Priority: Low \ No newline at end of file + Priority: Low diff --git a/Resources/Prototypes/Entities/Projectiles.yml b/Resources/Prototypes/Entities/Projectiles.yml index 9ab7b0bcb6..8f6252d42c 100644 --- a/Resources/Prototypes/Entities/Projectiles.yml +++ b/Resources/Prototypes/Entities/Projectiles.yml @@ -5,10 +5,9 @@ - type: Transform - type: Sprite drawdepth: FloorPlaceable - sprites: - - projectilebullet + sprite: Objects/projectilebullet.png - type: Icon - icon: projectilebullet + icon: Objects/projectilebullet.png - type: BoundingBox - type: Physics edgeslide: false diff --git a/Resources/Prototypes/Entities/Tools.yml b/Resources/Prototypes/Entities/Tools.yml index fc01ca3ee3..e29ece71ae 100644 --- a/Resources/Prototypes/Entities/Tools.yml +++ b/Resources/Prototypes/Entities/Tools.yml @@ -4,24 +4,22 @@ id: Wirecutter components: - type: Wirecutter - - type: WearableAnimatedSprite - notWornSprite: wirecutter - sprite: wirecutter + - type: Sprite + sprite: Objects/wirecutter.png - type: Icon - icon: wirecutter + icon: Objects/wirecutter.png - type: MeleeWeapon - + - type: entity name: Screwdriver parent: BaseItem id: Screwdriver components: - type: Screwdriver - - type: WearableAnimatedSprite - notWornSprite: screwdriver - sprite: screwdriver + - type: Sprite + sprite: Objects/screwdriver.png - type: Icon - icon: screwdriver + icon: Objects/screwdriver.png - type: MeleeWeapon - type: entity @@ -30,11 +28,10 @@ id: Welder components: - type: Welder - - type: WearableAnimatedSprite - notWornSprite: welder - sprite: welder + - type: Sprite + sprite: Objects/welder.png - type: Icon - icon: welder + icon: Objects/welder.png - type: MeleeWeapon - type: entity @@ -43,34 +40,31 @@ id: Wrench components: - type: Wrench - - type: WearableAnimatedSprite - notWornSprite: wrench - sprite: wrench + - type: Sprite + sprite: Objects/wrench.png - type: Icon - icon: wrench + icon: Objects/wrench.png - type: MeleeWeapon - + - type: entity name: Crowbar parent: BaseItem id: Crowbar components: - type: Crowbar - - type: WearableAnimatedSprite - notWornSprite: crowbar - sprite: crowbar + - type: Sprite + sprite: Objects/crowbar.png - type: Icon - icon: crowbar + icon: Objects/crowbar.png - type: MeleeWeapon - + - type: entity name: Multitool parent: BaseItem id: Multitool components: - type: Multitool - - type: WearableAnimatedSprite - notWornSprite: multitool - sprite: multitool + - type: Sprite + sprite: Objects/multitool.png - type: Icon - icon: multitool \ No newline at end of file + icon: Objects/multitool.png diff --git a/Resources/Prototypes/Entities/prototype_test.yml b/Resources/Prototypes/Entities/prototype_test.yml index 9117b0535e..dcf5e6209c 100644 --- a/Resources/Prototypes/Entities/prototype_test.yml +++ b/Resources/Prototypes/Entities/prototype_test.yml @@ -5,9 +5,8 @@ - type: Transform - type: Clickable - type: Sprite - sprites: - - medkit_r + sprite: Items/medkit_r.png - type: Icon - icon: medkit_r + icon: Items/medkit_r.png diff --git a/Resources/SavedEntities.xml b/Resources/SavedEntities.xml deleted file mode 100644 index 27a5fb33db..0000000000 --- a/Resources/SavedEntities.xml +++ /dev/null @@ -1,304 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Resources/textures/Buildings/TurrBase.png b/Resources/Textures/Buildings/TurrBase.png similarity index 100% rename from Resources/textures/Buildings/TurrBase.png rename to Resources/Textures/Buildings/TurrBase.png diff --git a/Resources/textures/Buildings/TurrLamp.png b/Resources/Textures/Buildings/TurrLamp.png similarity index 100% rename from Resources/textures/Buildings/TurrLamp.png rename to Resources/Textures/Buildings/TurrLamp.png diff --git a/Resources/textures/Buildings/TurrTop.png b/Resources/Textures/Buildings/TurrTop.png similarity index 100% rename from Resources/textures/Buildings/TurrTop.png rename to Resources/Textures/Buildings/TurrTop.png diff --git a/Resources/textures/Objects/crowbar.png b/Resources/Textures/Objects/crowbar.png similarity index 100% rename from Resources/textures/Objects/crowbar.png rename to Resources/Textures/Objects/crowbar.png diff --git a/Resources/textures/Objects/eightdirwire.png b/Resources/Textures/Objects/eightdirwire.png similarity index 100% rename from Resources/textures/Objects/eightdirwire.png rename to Resources/Textures/Objects/eightdirwire.png diff --git a/Resources/textures/Objects/generator.png b/Resources/Textures/Objects/generator.png similarity index 100% rename from Resources/textures/Objects/generator.png rename to Resources/Textures/Objects/generator.png diff --git a/Resources/textures/Objects/multitool.png b/Resources/Textures/Objects/multitool.png similarity index 100% rename from Resources/textures/Objects/multitool.png rename to Resources/Textures/Objects/multitool.png diff --git a/Resources/textures/Objects/provider.png b/Resources/Textures/Objects/provider.png similarity index 100% rename from Resources/textures/Objects/provider.png rename to Resources/Textures/Objects/provider.png diff --git a/Resources/textures/Objects/screwdriver.png b/Resources/Textures/Objects/screwdriver.png similarity index 100% rename from Resources/textures/Objects/screwdriver.png rename to Resources/Textures/Objects/screwdriver.png diff --git a/Resources/textures/Objects/storage.png b/Resources/Textures/Objects/storage.png similarity index 100% rename from Resources/textures/Objects/storage.png rename to Resources/Textures/Objects/storage.png diff --git a/Resources/textures/Objects/welder.png b/Resources/Textures/Objects/welder.png similarity index 100% rename from Resources/textures/Objects/welder.png rename to Resources/Textures/Objects/welder.png diff --git a/Resources/textures/Objects/wirecutter.png b/Resources/Textures/Objects/wirecutter.png similarity index 100% rename from Resources/textures/Objects/wirecutter.png rename to Resources/Textures/Objects/wirecutter.png diff --git a/Resources/textures/Objects/wiredmachine.png b/Resources/Textures/Objects/wiredmachine.png similarity index 100% rename from Resources/textures/Objects/wiredmachine.png rename to Resources/Textures/Objects/wiredmachine.png diff --git a/Resources/textures/Objects/wirelessmachine.png b/Resources/Textures/Objects/wirelessmachine.png similarity index 100% rename from Resources/textures/Objects/wirelessmachine.png rename to Resources/Textures/Objects/wirelessmachine.png diff --git a/Resources/textures/Objects/wrench.png b/Resources/Textures/Objects/wrench.png similarity index 100% rename from Resources/textures/Objects/wrench.png rename to Resources/Textures/Objects/wrench.png diff --git a/Resources/Textures/UserInterface/handsbox.png b/Resources/Textures/UserInterface/handsbox.png new file mode 100644 index 0000000000..c5f67f10ba Binary files /dev/null and b/Resources/Textures/UserInterface/handsbox.png differ diff --git a/SpaceStation14Content.sln b/SpaceStation14Content.sln index 27e96154e2..55edfbab5c 100644 --- a/SpaceStation14Content.sln +++ b/SpaceStation14Content.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.27130.2026 +VisualStudioVersion = 15.0.26730.16 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Content.Shared", "Content.Shared\Content.Shared.csproj", "{26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}" ProjectSection(ProjectDependencies) = postProject @@ -12,10 +12,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SS14.Shared", "engine\SS14. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SS14.Server", "engine\SS14.Server\SS14.Server.csproj", "{B04AAE71-0000-0000-0000-000000000000}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SS14.Client.Graphics", "engine\SS14.Client.Graphics\SS14.Client.Graphics.csproj", "{302B877E-0000-0000-0000-000000000000}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SS14.Client", "engine\SS14.Client\SS14.Client.csproj", "{0C31DFDF-0000-0000-0000-000000000000}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SS14.UnitTesting", "engine\SS14.UnitTesting\SS14.UnitTesting.csproj", "{F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Content.Server", "Content.Server\Content.Server.csproj", "{B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}" @@ -28,9 +24,8 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Content.Client", "Content.Client\Content.Client.csproj", "{A2E5F175-78AF-4DDD-8F97-E2D2552372ED}" ProjectSection(ProjectDependencies) = postProject {0529F740-0000-0000-0000-000000000000} = {0529F740-0000-0000-0000-000000000000} - {302B877E-0000-0000-0000-000000000000} = {302B877E-0000-0000-0000-000000000000} {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5} = {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5} - {0C31DFDF-0000-0000-0000-000000000000} = {0C31DFDF-0000-0000-0000-000000000000} + {83429BD6-6358-4B18-BE51-401DF8EA2673} = {83429BD6-6358-4B18-BE51-401DF8EA2673} EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lidgren.Network", "engine\Lidgren.Network\Lidgren.Network.csproj", "{59250BAF-0000-0000-0000-000000000000}" @@ -41,124 +36,223 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Engine", "Engine", "{B01693 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuildChecker", "BuildChecker\BuildChecker.csproj", "{C899FCA4-7037-4E49-ABC2-44DE72487110}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sfml-system", "engine\SFML\src\System\sfml-system.csproj", "{31D24303-F6A9-4D53-BB03-A73EDCB3186D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SS14.Client", "engine\SS14.Client\SS14.Client.csproj", "{83429BD6-6358-4B18-BE51-401DF8EA2673}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sfml-graphics", "engine\SFML\src\Graphics\sfml-graphics.csproj", "{46786269-57B9-48E7-AA4F-8F4D84609FE6}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SS14.Client.Godot", "engine\SS14.Client.Godot\SS14.Client.Godot.csproj", "{8AF31169-49B1-4A12-B8F4-2A0674A9E7CB}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sfml-window", "engine\SFML\src\Window\sfml-window.csproj", "{D17DE83D-A592-461F-8AF2-53F9E22E1D0F}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SFML", "SFML", "{1780DA39-F1EC-4100-8C58-ECD756C68033}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SS14.Shared.Bsdiff", "engine\SS14.Shared.Bsdiff\SS14.Shared.Bsdiff\SS14.Shared.Bsdiff.csproj", "{0E0723E8-D785-4F61-81F4-182A12BCAA52}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU Release|x64 = Release|x64 Release|x86 = Release|x86 + Tools|Any CPU = Tools|Any CPU + Tools|x64 = Tools|x64 + Tools|x86 = Tools|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Debug|Any CPU.Build.0 = Debug|Any CPU {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Debug|x64.ActiveCfg = Debug|x64 {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Debug|x64.Build.0 = Debug|x64 {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Debug|x86.ActiveCfg = Debug|x86 {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Debug|x86.Build.0 = Debug|x86 + {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Release|Any CPU.Build.0 = Release|Any CPU {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Release|x64.ActiveCfg = Release|x64 {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Release|x64.Build.0 = Release|x64 {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Release|x86.ActiveCfg = Release|x86 {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Release|x86.Build.0 = Release|x86 + {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Tools|Any CPU.ActiveCfg = Debug|Any CPU + {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Tools|Any CPU.Build.0 = Debug|Any CPU + {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Tools|x64.ActiveCfg = Debug|x64 + {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Tools|x64.Build.0 = Debug|x64 + {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Tools|x86.ActiveCfg = Debug|x86 + {26AEEBB3-DDE7-443A-9F43-7BC7F4ACF6B5}.Tools|x86.Build.0 = Debug|x86 + {0529F740-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0529F740-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU {0529F740-0000-0000-0000-000000000000}.Debug|x64.ActiveCfg = Debug|x64 {0529F740-0000-0000-0000-000000000000}.Debug|x64.Build.0 = Debug|x64 {0529F740-0000-0000-0000-000000000000}.Debug|x86.ActiveCfg = Debug|x86 {0529F740-0000-0000-0000-000000000000}.Debug|x86.Build.0 = Debug|x86 + {0529F740-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0529F740-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU {0529F740-0000-0000-0000-000000000000}.Release|x64.ActiveCfg = Release|x64 {0529F740-0000-0000-0000-000000000000}.Release|x64.Build.0 = Release|x64 {0529F740-0000-0000-0000-000000000000}.Release|x86.ActiveCfg = Release|x86 {0529F740-0000-0000-0000-000000000000}.Release|x86.Build.0 = Release|x86 + {0529F740-0000-0000-0000-000000000000}.Tools|Any CPU.ActiveCfg = Debug|Any CPU + {0529F740-0000-0000-0000-000000000000}.Tools|Any CPU.Build.0 = Debug|Any CPU + {0529F740-0000-0000-0000-000000000000}.Tools|x64.ActiveCfg = Debug|x64 + {0529F740-0000-0000-0000-000000000000}.Tools|x64.Build.0 = Debug|x64 + {0529F740-0000-0000-0000-000000000000}.Tools|x86.ActiveCfg = Debug|x86 + {0529F740-0000-0000-0000-000000000000}.Tools|x86.Build.0 = Debug|x86 + {B04AAE71-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B04AAE71-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU {B04AAE71-0000-0000-0000-000000000000}.Debug|x64.ActiveCfg = Debug|x64 {B04AAE71-0000-0000-0000-000000000000}.Debug|x64.Build.0 = Debug|x64 {B04AAE71-0000-0000-0000-000000000000}.Debug|x86.ActiveCfg = Debug|x86 {B04AAE71-0000-0000-0000-000000000000}.Debug|x86.Build.0 = Debug|x86 + {B04AAE71-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B04AAE71-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU {B04AAE71-0000-0000-0000-000000000000}.Release|x64.ActiveCfg = Release|x64 {B04AAE71-0000-0000-0000-000000000000}.Release|x64.Build.0 = Release|x64 {B04AAE71-0000-0000-0000-000000000000}.Release|x86.ActiveCfg = Release|x86 {B04AAE71-0000-0000-0000-000000000000}.Release|x86.Build.0 = Release|x86 - {302B877E-0000-0000-0000-000000000000}.Debug|x64.ActiveCfg = Debug|x64 - {302B877E-0000-0000-0000-000000000000}.Debug|x64.Build.0 = Debug|x64 - {302B877E-0000-0000-0000-000000000000}.Debug|x86.ActiveCfg = Debug|x86 - {302B877E-0000-0000-0000-000000000000}.Debug|x86.Build.0 = Debug|x86 - {302B877E-0000-0000-0000-000000000000}.Release|x64.ActiveCfg = Release|x64 - {302B877E-0000-0000-0000-000000000000}.Release|x64.Build.0 = Release|x64 - {302B877E-0000-0000-0000-000000000000}.Release|x86.ActiveCfg = Release|x86 - {302B877E-0000-0000-0000-000000000000}.Release|x86.Build.0 = Release|x86 - {0C31DFDF-0000-0000-0000-000000000000}.Debug|x64.ActiveCfg = Debug|x64 - {0C31DFDF-0000-0000-0000-000000000000}.Debug|x64.Build.0 = Debug|x64 - {0C31DFDF-0000-0000-0000-000000000000}.Debug|x86.ActiveCfg = Debug|x86 - {0C31DFDF-0000-0000-0000-000000000000}.Debug|x86.Build.0 = Debug|x86 - {0C31DFDF-0000-0000-0000-000000000000}.Release|x64.ActiveCfg = Release|x64 - {0C31DFDF-0000-0000-0000-000000000000}.Release|x64.Build.0 = Release|x64 - {0C31DFDF-0000-0000-0000-000000000000}.Release|x86.ActiveCfg = Release|x86 - {0C31DFDF-0000-0000-0000-000000000000}.Release|x86.Build.0 = Release|x86 + {B04AAE71-0000-0000-0000-000000000000}.Tools|Any CPU.ActiveCfg = Debug|Any CPU + {B04AAE71-0000-0000-0000-000000000000}.Tools|Any CPU.Build.0 = Debug|Any CPU + {B04AAE71-0000-0000-0000-000000000000}.Tools|x64.ActiveCfg = Debug|x64 + {B04AAE71-0000-0000-0000-000000000000}.Tools|x64.Build.0 = Debug|x64 + {B04AAE71-0000-0000-0000-000000000000}.Tools|x86.ActiveCfg = Debug|x86 + {B04AAE71-0000-0000-0000-000000000000}.Tools|x86.Build.0 = Debug|x86 + {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Debug|Any CPU.Build.0 = Debug|Any CPU {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Debug|x64.ActiveCfg = Debug|x64 {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Debug|x64.Build.0 = Debug|x64 {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Debug|x86.ActiveCfg = Debug|x86 {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Debug|x86.Build.0 = Debug|x86 - {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Release|x64.ActiveCfg = Release|x64 - {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Release|x64.Build.0 = Release|x64 - {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Release|x86.ActiveCfg = Release|x86 - {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Release|x86.Build.0 = Release|x86 + {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Release|Any CPU.ActiveCfg = Debug|Any CPU + {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Release|Any CPU.Build.0 = Debug|Any CPU + {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Release|x64.ActiveCfg = Debug|x64 + {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Release|x64.Build.0 = Debug|x64 + {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Release|x86.ActiveCfg = Debug|x86 + {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Release|x86.Build.0 = Debug|x86 + {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Tools|Any CPU.ActiveCfg = Debug|x86 + {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Tools|Any CPU.Build.0 = Debug|x86 + {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Tools|x64.ActiveCfg = Debug|x64 + {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Tools|x64.Build.0 = Debug|x64 + {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Tools|x86.ActiveCfg = Debug|x86 + {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9}.Tools|x86.Build.0 = Debug|x86 + {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Debug|Any CPU.Build.0 = Debug|Any CPU {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Debug|x64.ActiveCfg = Debug|x64 {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Debug|x64.Build.0 = Debug|x64 {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Debug|x86.ActiveCfg = Debug|x86 {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Debug|x86.Build.0 = Debug|x86 + {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Release|Any CPU.Build.0 = Release|Any CPU {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Release|x64.ActiveCfg = Release|x64 {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Release|x64.Build.0 = Release|x64 {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Release|x86.ActiveCfg = Release|x86 {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Release|x86.Build.0 = Release|x86 + {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Tools|Any CPU.ActiveCfg = Debug|Any CPU + {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Tools|Any CPU.Build.0 = Debug|Any CPU + {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Tools|x64.ActiveCfg = Debug|x64 + {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Tools|x64.Build.0 = Debug|x64 + {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Tools|x86.ActiveCfg = Debug|x86 + {B38DBBD0-04C2-4D1A-84E2-B3446F6ADF2A}.Tools|x86.Build.0 = Debug|x86 + {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Debug|Any CPU.Build.0 = Debug|Any CPU {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Debug|x64.ActiveCfg = Debug|x64 {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Debug|x64.Build.0 = Debug|x64 {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Debug|x86.ActiveCfg = Debug|x86 {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Debug|x86.Build.0 = Debug|x86 + {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Release|Any CPU.Build.0 = Release|Any CPU {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Release|x64.ActiveCfg = Release|x64 {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Release|x64.Build.0 = Release|x64 {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Release|x86.ActiveCfg = Release|x86 {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Release|x86.Build.0 = Release|x86 + {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Tools|Any CPU.ActiveCfg = Debug|Any CPU + {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Tools|Any CPU.Build.0 = Debug|Any CPU + {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Tools|x64.ActiveCfg = Debug|x64 + {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Tools|x64.Build.0 = Debug|x64 + {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Tools|x86.ActiveCfg = Debug|x86 + {A2E5F175-78AF-4DDD-8F97-E2D2552372ED}.Tools|x86.Build.0 = Debug|x86 + {59250BAF-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {59250BAF-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU {59250BAF-0000-0000-0000-000000000000}.Debug|x64.ActiveCfg = Debug|x64 {59250BAF-0000-0000-0000-000000000000}.Debug|x64.Build.0 = Debug|x64 {59250BAF-0000-0000-0000-000000000000}.Debug|x86.ActiveCfg = Debug|x86 {59250BAF-0000-0000-0000-000000000000}.Debug|x86.Build.0 = Debug|x86 + {59250BAF-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU + {59250BAF-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU {59250BAF-0000-0000-0000-000000000000}.Release|x64.ActiveCfg = Release|x64 {59250BAF-0000-0000-0000-000000000000}.Release|x64.Build.0 = Release|x64 {59250BAF-0000-0000-0000-000000000000}.Release|x86.ActiveCfg = Release|x86 {59250BAF-0000-0000-0000-000000000000}.Release|x86.Build.0 = Release|x86 + {59250BAF-0000-0000-0000-000000000000}.Tools|Any CPU.ActiveCfg = Debug|Any CPU + {59250BAF-0000-0000-0000-000000000000}.Tools|Any CPU.Build.0 = Debug|Any CPU + {59250BAF-0000-0000-0000-000000000000}.Tools|x64.ActiveCfg = Debug|x64 + {59250BAF-0000-0000-0000-000000000000}.Tools|x64.Build.0 = Debug|x64 + {59250BAF-0000-0000-0000-000000000000}.Tools|x86.ActiveCfg = Debug|x86 + {59250BAF-0000-0000-0000-000000000000}.Tools|x86.Build.0 = Debug|x86 + {C899FCA4-7037-4E49-ABC2-44DE72487110}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C899FCA4-7037-4E49-ABC2-44DE72487110}.Debug|Any CPU.Build.0 = Debug|Any CPU {C899FCA4-7037-4E49-ABC2-44DE72487110}.Debug|x64.ActiveCfg = Debug|Any CPU {C899FCA4-7037-4E49-ABC2-44DE72487110}.Debug|x64.Build.0 = Debug|Any CPU {C899FCA4-7037-4E49-ABC2-44DE72487110}.Debug|x86.ActiveCfg = Debug|Any CPU + {C899FCA4-7037-4E49-ABC2-44DE72487110}.Debug|x86.Build.0 = Debug|Any CPU + {C899FCA4-7037-4E49-ABC2-44DE72487110}.Release|Any CPU.ActiveCfg = Debug|Any CPU + {C899FCA4-7037-4E49-ABC2-44DE72487110}.Release|Any CPU.Build.0 = Debug|Any CPU {C899FCA4-7037-4E49-ABC2-44DE72487110}.Release|x64.ActiveCfg = Debug|Any CPU {C899FCA4-7037-4E49-ABC2-44DE72487110}.Release|x64.Build.0 = Debug|Any CPU {C899FCA4-7037-4E49-ABC2-44DE72487110}.Release|x86.ActiveCfg = Debug|Any CPU - {31D24303-F6A9-4D53-BB03-A73EDCB3186D}.Debug|x64.ActiveCfg = Debug|x64 - {31D24303-F6A9-4D53-BB03-A73EDCB3186D}.Debug|x64.Build.0 = Debug|x64 - {31D24303-F6A9-4D53-BB03-A73EDCB3186D}.Debug|x86.ActiveCfg = Debug|x86 - {31D24303-F6A9-4D53-BB03-A73EDCB3186D}.Debug|x86.Build.0 = Debug|x86 - {31D24303-F6A9-4D53-BB03-A73EDCB3186D}.Release|x64.ActiveCfg = Release|x64 - {31D24303-F6A9-4D53-BB03-A73EDCB3186D}.Release|x64.Build.0 = Release|x64 - {31D24303-F6A9-4D53-BB03-A73EDCB3186D}.Release|x86.ActiveCfg = Release|x86 - {31D24303-F6A9-4D53-BB03-A73EDCB3186D}.Release|x86.Build.0 = Release|x86 - {46786269-57B9-48E7-AA4F-8F4D84609FE6}.Debug|x64.ActiveCfg = Debug|x64 - {46786269-57B9-48E7-AA4F-8F4D84609FE6}.Debug|x64.Build.0 = Debug|x64 - {46786269-57B9-48E7-AA4F-8F4D84609FE6}.Debug|x86.ActiveCfg = Debug|x86 - {46786269-57B9-48E7-AA4F-8F4D84609FE6}.Debug|x86.Build.0 = Debug|x86 - {46786269-57B9-48E7-AA4F-8F4D84609FE6}.Release|x64.ActiveCfg = Release|x64 - {46786269-57B9-48E7-AA4F-8F4D84609FE6}.Release|x64.Build.0 = Release|x64 - {46786269-57B9-48E7-AA4F-8F4D84609FE6}.Release|x86.ActiveCfg = Release|x86 - {46786269-57B9-48E7-AA4F-8F4D84609FE6}.Release|x86.Build.0 = Release|x86 - {D17DE83D-A592-461F-8AF2-53F9E22E1D0F}.Debug|x64.ActiveCfg = Debug|x64 - {D17DE83D-A592-461F-8AF2-53F9E22E1D0F}.Debug|x64.Build.0 = Debug|x64 - {D17DE83D-A592-461F-8AF2-53F9E22E1D0F}.Debug|x86.ActiveCfg = Debug|x86 - {D17DE83D-A592-461F-8AF2-53F9E22E1D0F}.Debug|x86.Build.0 = Debug|x86 - {D17DE83D-A592-461F-8AF2-53F9E22E1D0F}.Release|x64.ActiveCfg = Release|x64 - {D17DE83D-A592-461F-8AF2-53F9E22E1D0F}.Release|x64.Build.0 = Release|x64 - {D17DE83D-A592-461F-8AF2-53F9E22E1D0F}.Release|x86.ActiveCfg = Release|x86 - {D17DE83D-A592-461F-8AF2-53F9E22E1D0F}.Release|x86.Build.0 = Release|x86 + {C899FCA4-7037-4E49-ABC2-44DE72487110}.Release|x86.Build.0 = Debug|Any CPU + {C899FCA4-7037-4E49-ABC2-44DE72487110}.Tools|Any CPU.ActiveCfg = Debug|Any CPU + {C899FCA4-7037-4E49-ABC2-44DE72487110}.Tools|Any CPU.Build.0 = Debug|Any CPU + {C899FCA4-7037-4E49-ABC2-44DE72487110}.Tools|x64.ActiveCfg = Debug|Any CPU + {C899FCA4-7037-4E49-ABC2-44DE72487110}.Tools|x64.Build.0 = Debug|Any CPU + {C899FCA4-7037-4E49-ABC2-44DE72487110}.Tools|x86.ActiveCfg = Debug|Any CPU + {C899FCA4-7037-4E49-ABC2-44DE72487110}.Tools|x86.Build.0 = Debug|Any CPU + {83429BD6-6358-4B18-BE51-401DF8EA2673}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {83429BD6-6358-4B18-BE51-401DF8EA2673}.Debug|Any CPU.Build.0 = Debug|Any CPU + {83429BD6-6358-4B18-BE51-401DF8EA2673}.Debug|x64.ActiveCfg = Debug|x64 + {83429BD6-6358-4B18-BE51-401DF8EA2673}.Debug|x64.Build.0 = Debug|x64 + {83429BD6-6358-4B18-BE51-401DF8EA2673}.Debug|x86.ActiveCfg = Debug|x86 + {83429BD6-6358-4B18-BE51-401DF8EA2673}.Debug|x86.Build.0 = Debug|x86 + {83429BD6-6358-4B18-BE51-401DF8EA2673}.Release|Any CPU.ActiveCfg = Release|Any CPU + {83429BD6-6358-4B18-BE51-401DF8EA2673}.Release|Any CPU.Build.0 = Release|Any CPU + {83429BD6-6358-4B18-BE51-401DF8EA2673}.Release|x64.ActiveCfg = Release|x64 + {83429BD6-6358-4B18-BE51-401DF8EA2673}.Release|x64.Build.0 = Release|x64 + {83429BD6-6358-4B18-BE51-401DF8EA2673}.Release|x86.ActiveCfg = Release|x86 + {83429BD6-6358-4B18-BE51-401DF8EA2673}.Release|x86.Build.0 = Release|x86 + {83429BD6-6358-4B18-BE51-401DF8EA2673}.Tools|Any CPU.ActiveCfg = Debug|Any CPU + {83429BD6-6358-4B18-BE51-401DF8EA2673}.Tools|Any CPU.Build.0 = Debug|Any CPU + {83429BD6-6358-4B18-BE51-401DF8EA2673}.Tools|x64.ActiveCfg = Debug|x64 + {83429BD6-6358-4B18-BE51-401DF8EA2673}.Tools|x64.Build.0 = Debug|x64 + {83429BD6-6358-4B18-BE51-401DF8EA2673}.Tools|x86.ActiveCfg = Debug|x86 + {83429BD6-6358-4B18-BE51-401DF8EA2673}.Tools|x86.Build.0 = Debug|x86 + {8AF31169-49B1-4A12-B8F4-2A0674A9E7CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8AF31169-49B1-4A12-B8F4-2A0674A9E7CB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8AF31169-49B1-4A12-B8F4-2A0674A9E7CB}.Debug|x64.ActiveCfg = Debug|Any CPU + {8AF31169-49B1-4A12-B8F4-2A0674A9E7CB}.Debug|x64.Build.0 = Debug|Any CPU + {8AF31169-49B1-4A12-B8F4-2A0674A9E7CB}.Debug|x86.ActiveCfg = Debug|Any CPU + {8AF31169-49B1-4A12-B8F4-2A0674A9E7CB}.Debug|x86.Build.0 = Debug|Any CPU + {8AF31169-49B1-4A12-B8F4-2A0674A9E7CB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8AF31169-49B1-4A12-B8F4-2A0674A9E7CB}.Release|Any CPU.Build.0 = Release|Any CPU + {8AF31169-49B1-4A12-B8F4-2A0674A9E7CB}.Release|x64.ActiveCfg = Release|Any CPU + {8AF31169-49B1-4A12-B8F4-2A0674A9E7CB}.Release|x64.Build.0 = Release|Any CPU + {8AF31169-49B1-4A12-B8F4-2A0674A9E7CB}.Release|x86.ActiveCfg = Release|Any CPU + {8AF31169-49B1-4A12-B8F4-2A0674A9E7CB}.Release|x86.Build.0 = Release|Any CPU + {8AF31169-49B1-4A12-B8F4-2A0674A9E7CB}.Tools|Any CPU.ActiveCfg = Tools|Any CPU + {8AF31169-49B1-4A12-B8F4-2A0674A9E7CB}.Tools|Any CPU.Build.0 = Tools|Any CPU + {8AF31169-49B1-4A12-B8F4-2A0674A9E7CB}.Tools|x64.ActiveCfg = Tools|Any CPU + {8AF31169-49B1-4A12-B8F4-2A0674A9E7CB}.Tools|x64.Build.0 = Tools|Any CPU + {8AF31169-49B1-4A12-B8F4-2A0674A9E7CB}.Tools|x86.ActiveCfg = Tools|Any CPU + {8AF31169-49B1-4A12-B8F4-2A0674A9E7CB}.Tools|x86.Build.0 = Tools|Any CPU + {0E0723E8-D785-4F61-81F4-182A12BCAA52}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0E0723E8-D785-4F61-81F4-182A12BCAA52}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0E0723E8-D785-4F61-81F4-182A12BCAA52}.Debug|x64.ActiveCfg = Debug|x64 + {0E0723E8-D785-4F61-81F4-182A12BCAA52}.Debug|x64.Build.0 = Debug|x64 + {0E0723E8-D785-4F61-81F4-182A12BCAA52}.Debug|x86.ActiveCfg = Debug|x86 + {0E0723E8-D785-4F61-81F4-182A12BCAA52}.Debug|x86.Build.0 = Debug|x86 + {0E0723E8-D785-4F61-81F4-182A12BCAA52}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0E0723E8-D785-4F61-81F4-182A12BCAA52}.Release|Any CPU.Build.0 = Release|Any CPU + {0E0723E8-D785-4F61-81F4-182A12BCAA52}.Release|x64.ActiveCfg = Release|x64 + {0E0723E8-D785-4F61-81F4-182A12BCAA52}.Release|x64.Build.0 = Release|x64 + {0E0723E8-D785-4F61-81F4-182A12BCAA52}.Release|x86.ActiveCfg = Release|x86 + {0E0723E8-D785-4F61-81F4-182A12BCAA52}.Release|x86.Build.0 = Release|x86 + {0E0723E8-D785-4F61-81F4-182A12BCAA52}.Tools|Any CPU.ActiveCfg = Debug|Any CPU + {0E0723E8-D785-4F61-81F4-182A12BCAA52}.Tools|Any CPU.Build.0 = Debug|Any CPU + {0E0723E8-D785-4F61-81F4-182A12BCAA52}.Tools|x64.ActiveCfg = Debug|x64 + {0E0723E8-D785-4F61-81F4-182A12BCAA52}.Tools|x64.Build.0 = Debug|x64 + {0E0723E8-D785-4F61-81F4-182A12BCAA52}.Tools|x86.ActiveCfg = Debug|x86 + {0E0723E8-D785-4F61-81F4-182A12BCAA52}.Tools|x86.Build.0 = Debug|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -166,15 +260,12 @@ Global GlobalSection(NestedProjects) = preSolution {0529F740-0000-0000-0000-000000000000} = {B01693E5-CF08-4DB7-8920-407F8D6603A1} {B04AAE71-0000-0000-0000-000000000000} = {B01693E5-CF08-4DB7-8920-407F8D6603A1} - {302B877E-0000-0000-0000-000000000000} = {B01693E5-CF08-4DB7-8920-407F8D6603A1} - {0C31DFDF-0000-0000-0000-000000000000} = {B01693E5-CF08-4DB7-8920-407F8D6603A1} {F0ADA779-40B8-4F7E-BA6C-CDB19F3065D9} = {B01693E5-CF08-4DB7-8920-407F8D6603A1} {59250BAF-0000-0000-0000-000000000000} = {B01693E5-CF08-4DB7-8920-407F8D6603A1} {C899FCA4-7037-4E49-ABC2-44DE72487110} = {3202E94D-E985-4181-9F69-F458A7F6574F} - {31D24303-F6A9-4D53-BB03-A73EDCB3186D} = {1780DA39-F1EC-4100-8C58-ECD756C68033} - {46786269-57B9-48E7-AA4F-8F4D84609FE6} = {1780DA39-F1EC-4100-8C58-ECD756C68033} - {D17DE83D-A592-461F-8AF2-53F9E22E1D0F} = {1780DA39-F1EC-4100-8C58-ECD756C68033} - {1780DA39-F1EC-4100-8C58-ECD756C68033} = {B01693E5-CF08-4DB7-8920-407F8D6603A1} + {83429BD6-6358-4B18-BE51-401DF8EA2673} = {B01693E5-CF08-4DB7-8920-407F8D6603A1} + {8AF31169-49B1-4A12-B8F4-2A0674A9E7CB} = {B01693E5-CF08-4DB7-8920-407F8D6603A1} + {0E0723E8-D785-4F61-81F4-182A12BCAA52} = {B01693E5-CF08-4DB7-8920-407F8D6603A1} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {AA37ED9F-F8D6-468E-A101-658AD605B09A} diff --git a/engine b/engine index 93c7aab5d0..fc890e5824 160000 --- a/engine +++ b/engine @@ -1 +1 @@ -Subproject commit 93c7aab5d0ec1fcad237ea84715378d0b95f99f9 +Subproject commit fc890e5824e9e33cda5e38eebc2a06e6d9ac94b6 diff --git a/package_release_build.py b/package_release_build.py index a186cb58e9..87afde0f91 100755 --- a/package_release_build.py +++ b/package_release_build.py @@ -21,30 +21,66 @@ except ImportError: Fore = ColorDummy() Style = ColorDummy() +p = os.path.join + +SHARED_IGNORED_RESOURCES = { + "ss13model.7z", + "ResourcePack.zip", + "buildResourcePack.py", + "CONTENT_GOES_HERE" +} +CLIENT_IGNORED_RESOURCES = { + "Maps", + "emotes.xml" +} +SERVER_IGNORED_RESOURCES = { + "Textures", + "Fonts" +} + +GODOT = None + def main(): + global GODOT parser = argparse.ArgumentParser( description="Packages the SS14 content repo for release on all platforms.") parser.add_argument("--platform", + "-p", action="store", choices=["windows", "mac", "linux"], nargs="*", help="Which platform to build for. If not provided, all platforms will be built") + parser.add_argument("--godot", + action="store", + help="Path to the Godot executable used for exporting.") + + parser.add_argument("--windows-godot-build", + action="store") + args = parser.parse_args() platforms = args.platform + GODOT = args.godot + if not GODOT: + print("No Godot executable passed.") + exit(1) if not platforms: platforms = ["windows", "mac", "linux"] if os.path.exists("release"): - print(Fore.BLUE+Style.DIM + "Cleaning old release packages (release/)..." + Style.RESET_ALL) + print(Fore.BLUE+Style.DIM + + "Cleaning old release packages (release/)..." + Style.RESET_ALL) shutil.rmtree("release") os.mkdir("release") if "windows" in platforms: wipe_bin() - build_windows() + if not args.windows_godot_build: + print("No --window-godot-build passed") + exit(1) + build_windows(args.windows_godot_build) if "linux" in platforms: wipe_bin() @@ -54,58 +90,85 @@ def main(): wipe_bin() build_macos() + def wipe_bin(): + print(Fore.BLUE + Style.DIM + + "Clearing old build artifacts (if any)..." + Style.RESET_ALL) + if os.path.exists(p("engine", "bin")): + shutil.rmtree(p("engine", "bin")) + if os.path.exists("bin"): - print(Fore.BLUE + Style.DIM + "Clearing old build artifacts..." + Style.RESET_ALL) shutil.rmtree("bin") -def build_windows(): + +def build_windows(godot_build): # Run a full build. - print(Fore.GREEN + "Building project for Windows x86..." + Style.RESET_ALL) + print(Fore.GREEN + "Building project for Windows x64..." + Style.RESET_ALL) subprocess.run(["msbuild", "SpaceStation14Content.sln", "/m", "/p:Configuration=Release", - "/p:Platform=x86", + "/p:Platform=x64", "/nologo", "/v:m", "/p:TargetOS=Windows", "/t:Rebuild" ], check=True) - # Package client. - print(Fore.GREEN + "Packaging Windows x86 client..." + Style.RESET_ALL) - package_zip(os.path.join("bin", "Client"), - os.path.join("release", "SS14.Client_windows_x86.zip")) + print(Fore.GREEN + "Packaging Windows x64 client..." + Style.RESET_ALL) - print(Fore.GREEN + "Packaging Windows x86 server..." + Style.RESET_ALL) - package_zip(os.path.join("bin", "Server"), - os.path.join("release", "SS14.Server_windows_x86.zip")) + os.makedirs("bin/win_export", exist_ok=True) + subprocess.run([GODOT, + "--verbose", + "--export-debug", + "win", + "../../bin/win_export/SS14.Client.exe"], + cwd="engine/SS14.Client.Godot") + + client_zip = zipfile.ZipFile(p("release", "SS14.Client_Windows_x64.zip"), "w", compression=zipfile.ZIP_DEFLATED) + client_zip.writestr("spess.bat", "cd godot\ncall SS14.Client.exe --path SS14.Client.Godot") + client_zip.write(p("bin", "win_export"), "godot") + client_zip.write(p("bin", "win_export", "SS14.Client.pck"), p("godot", "SS14.Client.pck")) + copy_dir_into_zip(godot_build, "godot", client_zip) + copy_dir_into_zip(p("engine", "bin", "Client"), p("bin", "Client"), client_zip) + copy_resources(p("bin", "Client", "Resources"), client_zip, server=False) + client_zip.close() + + print(Fore.GREEN + "Packaging Windows x64 server..." + Style.RESET_ALL) + server_zip = zipfile.ZipFile(p("release", "SS14.Server_Windows_x64.zip"), "w", compression=zipfile.ZIP_DEFLATED) + copy_dir_into_zip(p("engine", "bin", "Server"), "", server_zip) + copy_resources(p("Resources"), server_zip, server=True) + server_zip.close() def build_linux(): - print(Fore.GREEN + "Building project for Linux x86..." + Style.RESET_ALL) + print(Fore.GREEN + "Building project for Linux x64..." + Style.RESET_ALL) subprocess.run(["msbuild", "SpaceStation14Content.sln", "/m", "/p:Configuration=Release", - "/p:Platform=x86", + "/p:Platform=x64", "/nologo", "/v:m", "/p:TargetOS=Linux", "/t:Rebuild" - ], check=True) + ], check=True) + # NOTE: Temporarily disabled because I can't test it. # Package client. - print(Fore.GREEN + "Packaging Linux x86 client..." + Style.RESET_ALL) - package_zip(os.path.join("bin", "Client"), os.path.join("release", "SS14.Client_linux_x86.zip")) + #print(Fore.GREEN + "Packaging Linux x64 client..." + Style.RESET_ALL) + # package_zip(p("bin", "Client"), p( + # "release", "SS14.Client_linux_x64.zip")) + + print(Fore.GREEN + "Packaging Linux x64 server..." + Style.RESET_ALL) + server_zip = zipfile.ZipFile(p("release", "SS14.Server_Linux_x64.zip"), "w", compression=zipfile.ZIP_DEFLATED) + copy_dir_into_zip(p("engine", "bin", "Server"), "", server_zip) + copy_resources(p("Resources"), server_zip, server=True) + server_zip.close() - print(Fore.GREEN + "Packaging Linux x86 server..." + Style.RESET_ALL) - package_zip(os.path.join("bin", "Server"), os.path.join("release", "SS14.Server_linux_x86.zip")) def build_macos(): - # Haha this is gonna suck. print(Fore.GREEN + "Building project for MacOS x64..." + Style.RESET_ALL) subprocess.run(["msbuild", "SpaceStation14Content.sln", @@ -116,56 +179,95 @@ def build_macos(): "/v:m", "/p:TargetOS=MacOS", "/t:Rebuild" - ], check=True) + ], check=True) print(Fore.GREEN + "Packaging MacOS x64 client..." + Style.RESET_ALL) # Client has to go in an app bundle. - bundle = os.path.join("bin", "app", "Space Station 14.app") - shutil.copytree(os.path.join("BuildFiles", "Mac", "Space Station 14.app"), - bundle) + subprocess.run(GODOT, + "--verbose", + "--export-debug", + "mac", + "../../release/mac_export.zip", + cwd="engine/SS14.Client.Godot", + check=True) - _copytree(os.path.join("bin", "Client"), - os.path.join(bundle, "Contents", "MacOS")) + _copytree(p("engine", "bin", "Client"), + p(bundle, "Contents", "MacOS", "bin", "Client")) - package_zip(os.path.join("bin", "app"), - os.path.join("release", "SS14.Client_MacOS.zip")) + copy_resources(p(bundle, "Contents", + "MacOS", "bin", "Client", "Resources"), server=False) + + os.makedirs(p(bundle, "Contents", "MacOS", + "SS14.Client.Godot"), exist_ok=True) + + _copytree(p("engine", "SS14.Client.Godot"), + p(bundle, "Contents", "MacOS", "SS14.Client.Godot")) + + package_zip(p("bin", "mac_app"), + p("release", "SS14.Client_MacOS.zip")) print(Fore.GREEN + "Packaging MacOS x64 server..." + Style.RESET_ALL) - package_zip(os.path.join("bin", "Server"), - os.path.join("release", "SS14.Server_MacOS.zip")) + copy_resources(p("engine", "bin", + "Server", "Resources"), server=True) + + package_zip(p("engine", "bin", "Server"), + p("release", "SS14.Server_MacOS.zip")) + + +def copy_resources(target, zipf, server): + # Content repo goes FIRST so that it won't override engine files as that's forbidden. + do_resource_copy(target, "Resources", zipf, server) + do_resource_copy(target, p("engine", "Resources"), zipf, server) + + +def do_resource_copy(target, source, zipf, server): + for filename in os.listdir(source): + if filename in SHARED_IGNORED_RESOURCES \ + or filename in (SERVER_IGNORED_RESOURCES if server else CLIENT_IGNORED_RESOURCES): + continue + + path = p(source, filename) + target_path = p(target, filename) + if os.path.isdir(path): + copy_dir_into_zip(path, target_path, zipf) -# Hack copied from Stack Overflow to get around the fact that -# shutil.copytree doesn't allow copying into existing directories. -def _copytree(src, dst, symlinks=False, ignore=None): - for item in os.listdir(src): - s = os.path.join(src, item) - d = os.path.join(dst, item) - if os.path.isdir(s): - shutil.copytree(s, d, symlinks, ignore) else: - shutil.copy2(s, d) + zipf.write(path, target_path) -def package_zip(directory, zipname): - with zipfile.ZipFile(zipname, "w", zipfile.ZIP_DEFLATED) as zipf: - for dirs, _, files in os.walk(directory): - relpath = os.path.relpath(dirs, directory) - if relpath != ".": - # Write directory node except for root level. - zipf.write(dirs, relpath) - for filename in files: - zippath = os.path.join(relpath, filename) - filepath = os.path.join(dirs, filename) +def zip_entry_exists(zipf, name): + try: + # Trick ZipInfo into sanitizing the name for us so this awful module stops spewing warnings. + zinfo = zipfile.ZipInfo.from_file("Resources", name) + zipf.getinfo(zinfo.filename) + except KeyError: + return False + return True - message = "{dim}{diskroot}{sep}{zipfile}{dim} -> {ziproot}{sep}{zipfile}".format( - sep=os.sep + Style.NORMAL, - dim=Style.DIM, - diskroot=directory, - ziproot=zipname, - zipfile=os.path.normpath(zippath)) - print(Fore.CYAN + message + Style.RESET_ALL) - zipf.write(filepath, zippath) +def copy_dir_into_zip(directory, basepath, zipf): + if basepath and not zip_entry_exists(zipf, basepath): + zipf.write(directory, basepath) + + for root, _, files in os.walk(directory): + relpath = os.path.relpath(root, directory) + if relpath != "." and not zip_entry_exists(zipf, p(basepath, relpath)): + zipf.write(root, p(basepath, relpath)) + + for filename in files: + zippath = p(basepath, relpath, filename) + filepath = p(root, filename) + + message = "{dim}{diskroot}{sep}{zipfile}{dim} -> {ziproot}{sep}{zipfile}".format( + sep=os.sep + Style.NORMAL, + dim=Style.DIM, + diskroot=directory, + ziproot=zipf.filename, + zipfile=os.path.normpath(zippath)) + + print(Fore.CYAN + message + Style.RESET_ALL) + zipf.write(filepath, zippath) + if __name__ == '__main__': main()