From 5dfa04c1b9f468a6d2abc7ad0087e5d0309c4277 Mon Sep 17 00:00:00 2001 From: JMteam09 Date: Sat, 10 Mar 2018 22:06:03 +0100 Subject: [PATCH] Updated modloader to 1.0.0.R2 --- Builds/Managed/1.0.0.R2/Assembly-CSharp.dll | Bin 0 -> 183296 bytes Source/Assembly-CSharp.csproj | 126 +++++ Source/Assembly-CSharp.sln | 25 + Source/Blur.cs | 68 +-- Source/NewBuildSystem/Build.cs | 29 +- Source/Part.cs | 9 +- Source/Ref.cs | 14 +- Source/ResourceModule.cs | 17 +- Source/SFSML/Attributes/MyHookListener.cs | 11 + .../BaseHooks/BuildHooks/MyPartCreatedHook.cs | 20 + .../BuildHooks/MyPartStartDragHook.cs | 20 + .../BuildHooks/MyRocketToLaunchpadHook.cs | 11 + .../BaseHooks/FrameHooks/MyOnGuiHook.cs | 16 + .../BaseHooks/FrameHooks/MySceneChangeHook.cs | 18 + .../FrameHooks/MySceneChangedHook.cs | 18 + .../PartHooks/MyDrainResourceHook.cs | 23 + .../PartHooks/MyPartBeforeDestroyHook.cs | 16 + .../BaseHooks/PartHooks/MyPartUsedHook.cs | 16 + .../BaseHooks/UtilHooks/MyKeyDownHook.cs | 18 + .../ReWork/BaseHooks/UtilHooks/MyKeyUpHook.cs | 18 + .../BaseHooks/UtilHooks/MyModLoadedHook.cs | 16 + .../BaseHooks/UtilHooks/MySceneChangeHook.cs | 19 + .../BaseHooks/UtilHooks/MySceneChangedHook.cs | 19 + Source/SFSML/HookSystem/ReWork/MyHook.cs | 26 + .../SFSML/HookSystem/ReWork/MyHookListener.cs | 68 +++ .../SFSML/HookSystem/ReWork/MyHookSystem.cs | 41 ++ Source/SFSML/ModLoader.cs | 39 +- Source/SFSML/MyMod.cs | 6 +- Source/obj/Debug/CoreCompileInputs.cache | 1 + Source/obj/Release/CoreCompileInputs.cache | 1 + Source/sfsml_proj.unity | 478 ++++++++++++++++++ 31 files changed, 1114 insertions(+), 93 deletions(-) create mode 100644 Builds/Managed/1.0.0.R2/Assembly-CSharp.dll create mode 100644 Source/Assembly-CSharp.csproj create mode 100644 Source/Assembly-CSharp.sln create mode 100644 Source/SFSML/Attributes/MyHookListener.cs create mode 100644 Source/SFSML/HookSystem/ReWork/BaseHooks/BuildHooks/MyPartCreatedHook.cs create mode 100644 Source/SFSML/HookSystem/ReWork/BaseHooks/BuildHooks/MyPartStartDragHook.cs create mode 100644 Source/SFSML/HookSystem/ReWork/BaseHooks/BuildHooks/MyRocketToLaunchpadHook.cs create mode 100644 Source/SFSML/HookSystem/ReWork/BaseHooks/FrameHooks/MyOnGuiHook.cs create mode 100644 Source/SFSML/HookSystem/ReWork/BaseHooks/FrameHooks/MySceneChangeHook.cs create mode 100644 Source/SFSML/HookSystem/ReWork/BaseHooks/FrameHooks/MySceneChangedHook.cs create mode 100644 Source/SFSML/HookSystem/ReWork/BaseHooks/PartHooks/MyDrainResourceHook.cs create mode 100644 Source/SFSML/HookSystem/ReWork/BaseHooks/PartHooks/MyPartBeforeDestroyHook.cs create mode 100644 Source/SFSML/HookSystem/ReWork/BaseHooks/PartHooks/MyPartUsedHook.cs create mode 100644 Source/SFSML/HookSystem/ReWork/BaseHooks/UtilHooks/MyKeyDownHook.cs create mode 100644 Source/SFSML/HookSystem/ReWork/BaseHooks/UtilHooks/MyKeyUpHook.cs create mode 100644 Source/SFSML/HookSystem/ReWork/BaseHooks/UtilHooks/MyModLoadedHook.cs create mode 100644 Source/SFSML/HookSystem/ReWork/BaseHooks/UtilHooks/MySceneChangeHook.cs create mode 100644 Source/SFSML/HookSystem/ReWork/BaseHooks/UtilHooks/MySceneChangedHook.cs create mode 100644 Source/SFSML/HookSystem/ReWork/MyHook.cs create mode 100644 Source/SFSML/HookSystem/ReWork/MyHookListener.cs create mode 100644 Source/SFSML/HookSystem/ReWork/MyHookSystem.cs create mode 100644 Source/obj/Debug/CoreCompileInputs.cache create mode 100644 Source/obj/Release/CoreCompileInputs.cache create mode 100644 Source/sfsml_proj.unity diff --git a/Builds/Managed/1.0.0.R2/Assembly-CSharp.dll b/Builds/Managed/1.0.0.R2/Assembly-CSharp.dll new file mode 100644 index 0000000000000000000000000000000000000000..6b0c96d9e8ef3b8ba95aee24b12bbf2ae3ac8392 GIT binary patch literal 183296 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

|mzLIn%ui)8&RRU7AhAAZGMRG2s|v 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 b@8^WT_lluR5x>*b6@Sk1{(ttrRS@{!KPUTA literal 0 HcmV?d00001 diff --git a/Source/Assembly-CSharp.csproj b/Source/Assembly-CSharp.csproj new file mode 100644 index 0000000..45e9ba1 --- /dev/null +++ b/Source/Assembly-CSharp.csproj @@ -0,0 +1,126 @@ + + + + {9AE3EB35-37E3-4DF8-B859-C0B29D6851C6} + Debug + AnyCPU + Library + Assembly-CSharp + v2.0 + 4 + + + AnyCPU + + + bin\Debug\ + true + full + false + + + bin\Release\ + true + pdbonly + true + + + + ..\Spaceflight Simulator Pc v1.2\spaceflight simulator pc 1.2_data\Managed\UnityEngine.dll + + + ..\Spaceflight Simulator Pc v1.2\spaceflight simulator pc 1.2_data\Managed\UnityEngine.CoreModule.dll + + + ..\Spaceflight Simulator Pc v1.2\spaceflight simulator pc 1.2_data\Managed\UnityEngine.UI.dll + + + ..\Spaceflight Simulator Pc v1.2\spaceflight simulator pc 1.2_data\Managed\UnityEngine.UIModule.dll + + + ..\Spaceflight Simulator Pc v1.2\spaceflight simulator pc 1.2_data\Managed\UnityEngine.AudioModule.dll + + + ..\Spaceflight Simulator Pc v1.2\spaceflight simulator pc 1.2_data\Managed\UnityEngine.Physics2DModule.dll + + + ..\Spaceflight Simulator Pc v1.2\spaceflight simulator pc 1.2_data\Managed\UnityEngine.TextRenderingModule.dll + + + ..\Spaceflight Simulator Pc v1.2\spaceflight simulator pc 1.2_data\Managed\UnityEngine.ParticleSystemModule.dll + + + ..\Spaceflight Simulator Pc v1.2\spaceflight simulator pc 1.2_data\Managed\Sirenix.OdinInspector.Attributes.dll + + + ..\Spaceflight Simulator Pc v1.2\spaceflight simulator pc 1.2_data\Managed\UnityEngine.JSONSerializeModule.dll + + + ..\Spaceflight Simulator Pc v1.2\spaceflight simulator pc 1.2_data\Managed\UnityEngine.ImageConversionModule.dll + + + ..\Spaceflight Simulator Pc v1.2\spaceflight simulator pc 1.2_data\Managed\UnityEngine.ScreenCaptureModule.dll + + + ..\Spaceflight Simulator Pc v1.2\spaceflight simulator pc 1.2_data\Managed\UnityEngine.GameCenterModule.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/Assembly-CSharp.sln b/Source/Assembly-CSharp.sln new file mode 100644 index 0000000..3450cf2 --- /dev/null +++ b/Source/Assembly-CSharp.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27004.2005 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp", "Assembly-CSharp.csproj", "{9AE3EB35-37E3-4DF8-B859-C0B29D6851C6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9AE3EB35-37E3-4DF8-B859-C0B29D6851C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9AE3EB35-37E3-4DF8-B859-C0B29D6851C6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9AE3EB35-37E3-4DF8-B859-C0B29D6851C6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9AE3EB35-37E3-4DF8-B859-C0B29D6851C6}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {3A3D0368-D060-40E0-81F0-36EC8D1C5B60} + EndGlobalSection +EndGlobal diff --git a/Source/Blur.cs b/Source/Blur.cs index fda5220..d332bbf 100644 --- a/Source/Blur.cs +++ b/Source/Blur.cs @@ -5,40 +5,40 @@ public class Blur : MonoBehaviour { - public Texture2D shade; + public Texture2D shade; - public Texture2D blur; + public Texture2D blur; - public float blurStreght; + public float blurStreght; - [Button("Generate Shade Texture", ButtonSizes.Small)] - public void Generate() - { - Texture2D texture2D = new Texture2D(this.shade.width, this.shade.height, TextureFormat.Alpha8, false); - MonoBehaviour.print(texture2D.width + " " + texture2D.height); - texture2D.filterMode = FilterMode.Point; - for (int i = 0; i < this.shade.width; i++) - { - for (int j = 0; j < this.shade.height; j++) - { - if (this.blur.GetPixel(i, j).a > 0f) - { - int num = (int)(this.blur.GetPixel(i, j).a * 12f); - float num2 = 0f; - for (int k = 0; k < num * 2 + 1; k++) - { - num2 += this.shade.GetPixel(Mathf.Clamp(i - num + k, 0, this.shade.width), j).a; - } - num2 = Mathf.Lerp(this.shade.GetPixel(i, j).a, num2 / (float)(num * 2 + 1), this.blurStreght); - texture2D.SetPixel(i, j, new Color(1f, 1f, 1f, num2)); - } - else - { - texture2D.SetPixel(i, j, this.shade.GetPixel(i, j)); - } - } - } - texture2D.Apply(); - File.WriteAllBytes(Application.dataPath + "/Textures/Combined.png", texture2D.EncodeToPNG()); - } -} + [Button("Generate Shade Texture", ButtonSizes.Small)] + public void Generate() + { + Texture2D texture2D = new Texture2D(this.shade.width, this.shade.height, TextureFormat.Alpha8, false); + MonoBehaviour.print(texture2D.width + " " + texture2D.height); + texture2D.filterMode = FilterMode.Point; + for (int i = 0; i < this.shade.width; i++) + { + for (int j = 0; j < this.shade.height; j++) + { + if (this.blur.GetPixel(i, j).a > 0f) + { + int num = (int)(this.blur.GetPixel(i, j).a * 12f); + float num2 = 0f; + for (int k = 0; k < num * 2 + 1; k++) + { + num2 += this.shade.GetPixel(Mathf.Clamp(i - num + k, 0, this.shade.width), j).a; + } + num2 = Mathf.Lerp(this.shade.GetPixel(i, j).a, num2 / (float)(num * 2 + 1), this.blurStreght); + texture2D.SetPixel(i, j, new Color(1f, 1f, 1f, num2)); + } + else + { + texture2D.SetPixel(i, j, this.shade.GetPixel(i, j)); + } + } + } + texture2D.Apply(); + File.WriteAllBytes(Application.dataPath + "/Textures/Combined.png", texture2D.EncodeToPNG()); + } +} \ No newline at end of file diff --git a/Source/NewBuildSystem/Build.cs b/Source/NewBuildSystem/Build.cs index 6ed438b..b318d5b 100644 --- a/Source/NewBuildSystem/Build.cs +++ b/Source/NewBuildSystem/Build.cs @@ -1,7 +1,7 @@ using SFSML; -using SFSML.GameManager.Hooks.BuildRelated; -using SFSML.GameManager.Hooks.FrameRelated; -using SFSML.GameManager.Hooks.UnityRelated; +using SFSML.HookSystem.ReWork; +using SFSML.HookSystem.ReWork.BaseHooks; +using SFSML.HookSystem.ReWork.BaseHooks.BuildHooks; using Sirenix.OdinInspector; using System; using System.Collections.Generic; @@ -238,7 +238,6 @@ private void Start() this.dragAndDropInstruction.gameObject.SetActive(true); Saving.SaveSetting(Saving.SettingKey.seenBuildInstructions, true); } - ModLoader.manager.castHook(new MyBuildMenuStartedHook()); } public void MoveCamera(Vector3 delta) @@ -288,7 +287,11 @@ public void OnTouchStay(int fingerId, Vector2 touchPosWorld, Vector2 deltaPixel) Vector2 autoCorrect = this.GetAutoCorrect(vector, fingerId); if (this.holdingParts[fingerId].part.partIcon != null) { - this.holdingParts[fingerId].part.partIcon.position = Vector3.Lerp(vector, autoCorrect, 1f - this.roundStrength); + PlacedPart tgtPart = this.holdingParts[fingerId].part; + Vector3 tgtPos = Vector3.Lerp(vector, autoCorrect, 1f - this.roundStrength); + MyPartStartDragHook hook = new MyPartStartDragHook(tgtPart, tgtPos); + if (hook.isCanceled()) { return; } + this.holdingParts[fingerId].part.partIcon.position = hook.pos; } } @@ -306,8 +309,12 @@ public void OnTouchEnd(int fingerId, Vector2 touchPosWorld) bool flag2 = this.pickGrid.IsInsideDropArea(Utility.ToDepth(v, this.pickMenuDistance)); if (flag && !flag2) { - this.dragAndDropInstruction.InvokeEvenets(); - this.buildGrid.PlacePart(new PlacedPart(null, (Vector3)autoCorrect - this.buildGrid.transform.position, this.holdingParts[fingerId].part.orientation.DeepCopy(), this.holdingParts[fingerId].part.partData)); + PlacedPart newPart = new PlacedPart(null, (Vector3)autoCorrect - this.buildGrid.transform.position, this.holdingParts[fingerId].part.orientation.DeepCopy(), this.holdingParts[fingerId].part.partData); + MyPartCreatedHook hook = new MyPartCreatedHook(newPart); + hook = MyHookSystem.executeHook(hook); + if (hook.isCanceled()) { return; } + this.dragAndDropInstruction.InvokeEvenets(); + this.buildGrid.PlacePart(hook.target); } if (this.holdingParts[fingerId].part.partIcon != null) { @@ -507,8 +514,8 @@ private void TryLaunch() private void GoForLaunch() { - MyRocketLaunchHook result = ModLoader.manager.castHook(new MyRocketLaunchHook(this.buildGrid.parts)); - if (result.isCanceled()) return; + MyRocketToLaunchpadHook res = MyHookSystem.executeHook(new MyRocketToLaunchpadHook()); + if (res.isCanceled()) return; string jsonString = JsonUtility.ToJson(new Build.BuildSave("To Launch", Ref.cam.transform.position, this.buildGrid.parts)); Ref.SaveJsonString(jsonString, Saving.SaveKey.ToLaunch); Ref.LoadScene(Ref.SceneType.Game); @@ -535,9 +542,5 @@ public void EnableDescription() { } - public void OnGUI() - { - ModLoader.manager.castHook(new MyBuildMenuOnGuiHook()); - } } } diff --git a/Source/Part.cs b/Source/Part.cs index 8c0d6a0..d95921a 100644 --- a/Source/Part.cs +++ b/Source/Part.cs @@ -1,6 +1,7 @@ using NewBuildSystem; using SFSML; -using SFSML.GameManager.Hooks.PartRelated; +using SFSML.HookSystem.ReWork; +using SFSML.HookSystem.ReWork.BaseHooks.PartHooks; using Sirenix.OdinInspector; using System; using System.Collections.Generic; @@ -198,7 +199,7 @@ public void UsePart() { try { - MyOnUseHook result = ModLoader.manager.castHook(new MyOnUseHook(this)); + MyPartUsedHook result = MyHookSystem.executeHook(new MyPartUsedHook(this)); if (result.isCanceled()) { return; } } catch (Exception e) @@ -230,8 +231,8 @@ public void Collision(Collision2D collision) public void DestroyPart(bool createExplosion, bool disablePartToPartDamage) { - MyBeforeDestroyHook hook = new MyBeforeDestroyHook(this); - hook = ModLoader.manager.castHook(hook); + MyPartUsedHook hook = new MyPartUsedHook(this); + hook = MyHookSystem.executeHook(hook); if (hook.isCanceled()) return; while (this.joints.Count > 0) { diff --git a/Source/Ref.cs b/Source/Ref.cs index 6d03457..62381df 100644 --- a/Source/Ref.cs +++ b/Source/Ref.cs @@ -9,8 +9,9 @@ using System.Text; using UnityEngine; using UnityEngine.SceneManagement; -using SFSML.GameManager.Hooks.UnityRelated; -using SFSML.GameManager.Hooks.FrameRelated; +using SFSML.HookSystem.ReWork; +using SFSML.HookSystem.ReWork.BaseHooks; +using SFSML.HookSystem.ReWork.BaseHooks.FrameHooks; public class Ref : MonoBehaviour { @@ -230,13 +231,13 @@ private Double3 VelocityOffset public static void LoadScene(Ref.SceneType sceneToLoad) { - MySceneChangeHook res = ModLoader.manager.castHook(new MySceneChangeHook(Ref.lastScene, sceneToLoad)); + MySceneChangeHook res = MyHookSystem.executeHook(new MySceneChangeHook(Ref.lastScene, sceneToLoad)); if (res.isCanceled()) return; - sceneToLoad = res.targetScene; + sceneToLoad = res.newScene; Ref.SceneType oldScene = Ref.lastScene; Ref.lastScene = Ref.currentScene; SceneManager.LoadScene(sceneToLoad.ToString(), LoadSceneMode.Single); - ModLoader.manager.castHook(new MySceneChangedHook(oldScene, sceneToLoad)); + MyHookSystem.executeHook(new MySceneChangedHook(oldScene, sceneToLoad)); } public static int GetFigure(double value) @@ -379,8 +380,7 @@ public static CelestialBodyData GetPlanetByName(string adress) private void OnGUI() { - if (ModLoader.manager != null) - ModLoader.manager.castHook(new MyGeneralOnGuiHook(this.CurrentScene)); + MyHookSystem.executeHook(new MyOnGuiHook(Ref.currentScene)); } public static float GetSizeOfWord(TextMesh text, string word) diff --git a/Source/ResourceModule.cs b/Source/ResourceModule.cs index 906d500..c9e487e 100644 --- a/Source/ResourceModule.cs +++ b/Source/ResourceModule.cs @@ -1,5 +1,6 @@ using SFSML; -using SFSML.GameManager.Hooks.ModuleRelated; +using SFSML.HookSystem.ReWork; +using SFSML.HookSystem.ReWork.BaseHooks.PartHooks; using Sirenix.OdinInspector; using System; using System.Collections.Generic; @@ -91,16 +92,10 @@ public Grup(ResourceModule start) public void TakeResource(float removeAmount) { - MyResourceOnTakeHook hook = new MyResourceOnTakeHook(this, removeAmount); - try - { - hook = ModLoader.manager.castHook(hook); - if (hook.isCanceled()) return; - } catch (Exception e) - { - ModLoader.mainConsole.logError(e); - } - this.resourceAmount = Mathf.Max(this.resourceAmount - hook.amount, 0f); + float newAmount = this.resourceAmount - removeAmount; + MyDrainResourceHook hook = new MyDrainResourceHook(removeAmount, newAmount, this); + hook = MyHookSystem.executeHook(hook); + this.resourceAmount = Mathf.Max(this.resourceAmount - hook.amountToTake, 0f); this.SetTanks(); } diff --git a/Source/SFSML/Attributes/MyHookListener.cs b/Source/SFSML/Attributes/MyHookListener.cs new file mode 100644 index 0000000..fee79cd --- /dev/null +++ b/Source/SFSML/Attributes/MyHookListener.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SFSML.Attributes +{ + public class MyListenerAttribute : Attribute + { + } +} diff --git a/Source/SFSML/HookSystem/ReWork/BaseHooks/BuildHooks/MyPartCreatedHook.cs b/Source/SFSML/HookSystem/ReWork/BaseHooks/BuildHooks/MyPartCreatedHook.cs new file mode 100644 index 0000000..ec7de63 --- /dev/null +++ b/Source/SFSML/HookSystem/ReWork/BaseHooks/BuildHooks/MyPartCreatedHook.cs @@ -0,0 +1,20 @@ +using NewBuildSystem; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SFSML.HookSystem.ReWork.BaseHooks.BuildHooks +{ + ///

+ /// Called when user drags a part from the part menu and it gets created for the first time. + /// + public class MyPartCreatedHook : MyHook + { + public PlacedPart target; + public MyPartCreatedHook(PlacedPart targetPart) + { + this.target = targetPart; + } + } +} \ No newline at end of file diff --git a/Source/SFSML/HookSystem/ReWork/BaseHooks/BuildHooks/MyPartStartDragHook.cs b/Source/SFSML/HookSystem/ReWork/BaseHooks/BuildHooks/MyPartStartDragHook.cs new file mode 100644 index 0000000..d551b7f --- /dev/null +++ b/Source/SFSML/HookSystem/ReWork/BaseHooks/BuildHooks/MyPartStartDragHook.cs @@ -0,0 +1,20 @@ +using NewBuildSystem; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; + +namespace SFSML.HookSystem.ReWork.BaseHooks.BuildHooks +{ + public class MyPartStartDragHook : MyHook + { + public PlacedPart target; + public Vector3 pos; + public MyPartStartDragHook(PlacedPart part, Vector3 newPos) + { + this.target = part; + this.pos = newPos; + } + } +} \ No newline at end of file diff --git a/Source/SFSML/HookSystem/ReWork/BaseHooks/BuildHooks/MyRocketToLaunchpadHook.cs b/Source/SFSML/HookSystem/ReWork/BaseHooks/BuildHooks/MyRocketToLaunchpadHook.cs new file mode 100644 index 0000000..921c523 --- /dev/null +++ b/Source/SFSML/HookSystem/ReWork/BaseHooks/BuildHooks/MyRocketToLaunchpadHook.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SFSML.HookSystem.ReWork.BaseHooks.BuildHooks +{ + public class MyRocketToLaunchpadHook : MyHook + { + } +} \ No newline at end of file diff --git a/Source/SFSML/HookSystem/ReWork/BaseHooks/FrameHooks/MyOnGuiHook.cs b/Source/SFSML/HookSystem/ReWork/BaseHooks/FrameHooks/MyOnGuiHook.cs new file mode 100644 index 0000000..2537172 --- /dev/null +++ b/Source/SFSML/HookSystem/ReWork/BaseHooks/FrameHooks/MyOnGuiHook.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SFSML.HookSystem.ReWork.BaseHooks.FrameHooks +{ + public class MyOnGuiHook : MyHook + { + public Ref.SceneType currentScene; + public MyOnGuiHook(Ref.SceneType scene) + { + this.currentScene = scene; + } + } +} \ No newline at end of file diff --git a/Source/SFSML/HookSystem/ReWork/BaseHooks/FrameHooks/MySceneChangeHook.cs b/Source/SFSML/HookSystem/ReWork/BaseHooks/FrameHooks/MySceneChangeHook.cs new file mode 100644 index 0000000..40d60c8 --- /dev/null +++ b/Source/SFSML/HookSystem/ReWork/BaseHooks/FrameHooks/MySceneChangeHook.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SFSML.HookSystem.ReWork.BaseHooks.FrameHooks +{ + public class MySceneChangeHook : MyHook + { + public Ref.SceneType oldScene; + public Ref.SceneType newScene; + public MySceneChangeHook(Ref.SceneType current, Ref.SceneType target) + { + this.oldScene = current; + this.newScene = target; + } + } +} \ No newline at end of file diff --git a/Source/SFSML/HookSystem/ReWork/BaseHooks/FrameHooks/MySceneChangedHook.cs b/Source/SFSML/HookSystem/ReWork/BaseHooks/FrameHooks/MySceneChangedHook.cs new file mode 100644 index 0000000..1d84d6c --- /dev/null +++ b/Source/SFSML/HookSystem/ReWork/BaseHooks/FrameHooks/MySceneChangedHook.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SFSML.HookSystem.ReWork.BaseHooks.FrameHooks +{ + public class MySceneChangedHook : MyHook + { + public Ref.SceneType oldScene; + public Ref.SceneType newScene; + public MySceneChangedHook(Ref.SceneType current, Ref.SceneType target) + { + this.oldScene = current; + this.newScene = target; + } + } +} \ No newline at end of file diff --git a/Source/SFSML/HookSystem/ReWork/BaseHooks/PartHooks/MyDrainResourceHook.cs b/Source/SFSML/HookSystem/ReWork/BaseHooks/PartHooks/MyDrainResourceHook.cs new file mode 100644 index 0000000..0bb91fa --- /dev/null +++ b/Source/SFSML/HookSystem/ReWork/BaseHooks/PartHooks/MyDrainResourceHook.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SFSML.HookSystem.ReWork.BaseHooks.PartHooks +{ + public class MyDrainResourceHook : MyHook + { + /// + /// Can be changed to edit what amount should be removed from the tank. + /// + public float amountToTake; + public float newAmount; + public ResourceModule.Grup part; + public MyDrainResourceHook(float take, float newA, ResourceModule.Grup targetPart) + { + this.amountToTake = take; + this.newAmount = newA; + this.part = targetPart; + } + } +} \ No newline at end of file diff --git a/Source/SFSML/HookSystem/ReWork/BaseHooks/PartHooks/MyPartBeforeDestroyHook.cs b/Source/SFSML/HookSystem/ReWork/BaseHooks/PartHooks/MyPartBeforeDestroyHook.cs new file mode 100644 index 0000000..9455744 --- /dev/null +++ b/Source/SFSML/HookSystem/ReWork/BaseHooks/PartHooks/MyPartBeforeDestroyHook.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SFSML.HookSystem.ReWork.BaseHooks.PartHooks +{ + public class MyPartBeforeDestroyHook : MyHook + { + public Part part; + public MyPartBeforeDestroyHook(Part targetPart) + { + this.part = targetPart; + } + } +} \ No newline at end of file diff --git a/Source/SFSML/HookSystem/ReWork/BaseHooks/PartHooks/MyPartUsedHook.cs b/Source/SFSML/HookSystem/ReWork/BaseHooks/PartHooks/MyPartUsedHook.cs new file mode 100644 index 0000000..cd75860 --- /dev/null +++ b/Source/SFSML/HookSystem/ReWork/BaseHooks/PartHooks/MyPartUsedHook.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SFSML.HookSystem.ReWork.BaseHooks.PartHooks +{ + public class MyPartUsedHook : MyHook + { + public Part used; + public MyPartUsedHook(Part targetPart) + { + this.used = targetPart; + } + } +} \ No newline at end of file diff --git a/Source/SFSML/HookSystem/ReWork/BaseHooks/UtilHooks/MyKeyDownHook.cs b/Source/SFSML/HookSystem/ReWork/BaseHooks/UtilHooks/MyKeyDownHook.cs new file mode 100644 index 0000000..5a2bda9 --- /dev/null +++ b/Source/SFSML/HookSystem/ReWork/BaseHooks/UtilHooks/MyKeyDownHook.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; + +namespace SFSML.HookSystem.ReWork.BaseHooks.UtilHooks +{ + public class MyKeyDownHook : MyHook + { + public KeyCode keyDown; + public bool register; + public MyKeyDownHook(KeyCode key) + { + this.keyDown = key; + } + } +} \ No newline at end of file diff --git a/Source/SFSML/HookSystem/ReWork/BaseHooks/UtilHooks/MyKeyUpHook.cs b/Source/SFSML/HookSystem/ReWork/BaseHooks/UtilHooks/MyKeyUpHook.cs new file mode 100644 index 0000000..048ce45 --- /dev/null +++ b/Source/SFSML/HookSystem/ReWork/BaseHooks/UtilHooks/MyKeyUpHook.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; + +namespace SFSML.HookSystem.ReWork.BaseHooks.UtilHooks +{ + public class MyKeyUpHook : MyHook + { + KeyCode keyUp; + public bool register; + public MyKeyUpHook(KeyCode key) + { + this.keyUp = key; + } + } +} \ No newline at end of file diff --git a/Source/SFSML/HookSystem/ReWork/BaseHooks/UtilHooks/MyModLoadedHook.cs b/Source/SFSML/HookSystem/ReWork/BaseHooks/UtilHooks/MyModLoadedHook.cs new file mode 100644 index 0000000..e29bf28 --- /dev/null +++ b/Source/SFSML/HookSystem/ReWork/BaseHooks/UtilHooks/MyModLoadedHook.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SFSML.HookSystem.ReWork.BaseHooks.UtilHooks +{ + public class MyModLoadedHook + { + public MyMod targetHook; + public MyModLoadedHook(MyMod mod) + { + this.targetHook = mod; + } + } +} \ No newline at end of file diff --git a/Source/SFSML/HookSystem/ReWork/BaseHooks/UtilHooks/MySceneChangeHook.cs b/Source/SFSML/HookSystem/ReWork/BaseHooks/UtilHooks/MySceneChangeHook.cs new file mode 100644 index 0000000..701a1f2 --- /dev/null +++ b/Source/SFSML/HookSystem/ReWork/BaseHooks/UtilHooks/MySceneChangeHook.cs @@ -0,0 +1,19 @@ +using SFSML.HookSystem.ReWork; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SFSML.HookSystem.ReWork.BaseHooks.UtilHooks +{ + public class MySceneChangeHook : MyHook + { + public Ref.SceneType oldScene; + public Ref.SceneType newScene; + public MySceneChangeHook(Ref.SceneType old, Ref.SceneType nw) + { + this.oldScene = old; + this.newScene = nw; + } + } +} \ No newline at end of file diff --git a/Source/SFSML/HookSystem/ReWork/BaseHooks/UtilHooks/MySceneChangedHook.cs b/Source/SFSML/HookSystem/ReWork/BaseHooks/UtilHooks/MySceneChangedHook.cs new file mode 100644 index 0000000..800c355 --- /dev/null +++ b/Source/SFSML/HookSystem/ReWork/BaseHooks/UtilHooks/MySceneChangedHook.cs @@ -0,0 +1,19 @@ +using SFSML.HookSystem.ReWork; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SFSML.HookSystem.ReWork.BaseHooks.UtilHooks +{ + public class MySceneChangedHook : MyHook + { + public Ref.SceneType oldScene; + public Ref.SceneType newScene; + public MySceneChangedHook(Ref.SceneType old, Ref.SceneType nw) + { + this.oldScene = old; + this.newScene = nw; + } + } +} \ No newline at end of file diff --git a/Source/SFSML/HookSystem/ReWork/MyHook.cs b/Source/SFSML/HookSystem/ReWork/MyHook.cs new file mode 100644 index 0000000..310fd9f --- /dev/null +++ b/Source/SFSML/HookSystem/ReWork/MyHook.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SFSML.HookSystem.ReWork +{ + public class MyHook : ICloneable + { + private bool cancel; + public object Clone() + { + return this.MemberwiseClone(); + } + + public bool isCanceled() + { + return this.cancel; + } + + public void setCanceled(bool can) + { + this.cancel = can; + } + } +} \ No newline at end of file diff --git a/Source/SFSML/HookSystem/ReWork/MyHookListener.cs b/Source/SFSML/HookSystem/ReWork/MyHookListener.cs new file mode 100644 index 0000000..e48d4cb --- /dev/null +++ b/Source/SFSML/HookSystem/ReWork/MyHookListener.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; + +namespace SFSML.HookSystem.ReWork +{ + public class MyHookListener + { + public readonly Type targetHook; + public readonly Func listenMethod; + + /// + /// Runtime method. + /// + /// + public MyHookListener(Func method,Type target) + { + this.targetHook = target; + this.listenMethod = method; + MyHookSystem.listeners.Add(this); + } + + /// + /// Init method. + /// + /// + /// + public MyHookListener(MethodInfo listenMethod, object context) + { + this.targetHook = listenMethod.GetParameters()[0].ParameterType; + Type retType = listenMethod.ReturnType; + if (!IsSubclassOfRawGeneric(typeof(MyHook), retType)) + { + throw new Exception("Does not return a subtype of MyHook."); + } + this.listenMethod = (e) => + { + return (MyHook) listenMethod.Invoke(context, new object[] { e }); + }; + MyHookSystem.listeners.Add(this); + } + + + public MyHook invokeHook(MyHook e) + { + return this.listenMethod(e); + } + + + static bool IsSubclassOfRawGeneric(Type generic, Type toCheck) + { + while (toCheck != null && toCheck != typeof(object)) + { + var cur = toCheck.IsGenericType ? toCheck.GetGenericTypeDefinition() : toCheck; + if (generic == cur) + { + return true; + } + toCheck = toCheck.BaseType; + } + return false; + } + + + } +} \ No newline at end of file diff --git a/Source/SFSML/HookSystem/ReWork/MyHookSystem.cs b/Source/SFSML/HookSystem/ReWork/MyHookSystem.cs new file mode 100644 index 0000000..3b914e3 --- /dev/null +++ b/Source/SFSML/HookSystem/ReWork/MyHookSystem.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; + +namespace SFSML.HookSystem.ReWork +{ + public class MyHookSystem + { + public static List listeners = new List(); + public static T executeHook(T baseHook) + { + MyHook hookToEdit = (MyHook)((MyHook)(object)baseHook).Clone(); + bool cancel = false; + FieldInfo[] mainFields = hookToEdit.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); + List safeCopy = new List(MyHookSystem.listeners); + foreach (MyHookListener listener in safeCopy) + { + if (!listener.targetHook.Equals(typeof(T))) continue; + MyHook invokeResult = listener.invokeHook(hookToEdit); + if (invokeResult.isCanceled()) + { + cancel = true; + } + foreach (FieldInfo field in mainFields) + { + FieldInfo targetField = invokeResult.GetType().GetField(field.Name, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); + object mainFieldContent = field.GetValue(hookToEdit); + object invokedFieldContent = targetField.GetValue(invokeResult); + if (mainFieldContent != invokedFieldContent) + { + field.SetValue(hookToEdit, invokedFieldContent); + } + } + } + hookToEdit.setCanceled(cancel); + return (T)(object)hookToEdit; + } + } +} \ No newline at end of file diff --git a/Source/SFSML/ModLoader.cs b/Source/SFSML/ModLoader.cs index aaa1897..3f79bff 100644 --- a/Source/SFSML/ModLoader.cs +++ b/Source/SFSML/ModLoader.cs @@ -15,12 +15,12 @@ using SFSML.HookSystem; using SFSML.Exceptions; using SFSML.Attributes; -using SFSML.GameManager; using System.Collections.Generic; -using SFSML.GameManager.Hooks.InputRelated; using System.Threading; using Assets.SFSML.Utility; -using Assets.SFSML.GameManager.Hooks.ModLoader; +using UnityEngine.Purchasing; +using SFSML.HookSystem.ReWork; +using SFSML.HookSystem.ReWork.BaseHooks.UtilHooks; namespace SFSML { @@ -28,7 +28,7 @@ namespace SFSML /// The coreclass of SFSML. /// [MyModEntryPoint] - public class ModLoader : MyBaseHookable + public class ModLoader { public static MyConsole mainConsole; @@ -41,9 +41,8 @@ public class ModLoader : MyBaseHookable /// This will receive all the NON-STATIC OBJECT hooks. /// Things like the main entry point of the game will have their own hook manager! /// - public readonly static MyGameManager manager = new MyGameManager(); - public static readonly string version = "1.0.0.R1"; + public static readonly string version = "1.0.0.R2"; private static readonly string logTag = "ModLoader "+version; private GameObject overlay; public ModLoader() @@ -164,23 +163,12 @@ private void loadModFromFile(String modFile) mainConsole.log("Loading mod: " + modFileName, logTag); Assembly modAssembly = Assembly.LoadFrom(modFile); MyMod entryObject = null; - bool hasTextureHolder = false; - MyAssetHolder textureHolder = null; foreach (Type modType in modAssembly.GetTypes()) { object[] attributeList = modType.GetCustomAttributes(typeof(MyModEntryPoint), true); if (attributeList.Length == 1) { entryObject = Activator.CreateInstance(modType) as MyMod; - foreach (FieldInfo fi in modType.GetFields(BindingFlags.Instance | BindingFlags.Public)) - { - if (fi.FieldType.Equals(typeof(MyAssetHolder))) - { - mainConsole.tryLogCustom("Assigning assetHolder", logTag, LogType.Generic); - hasTextureHolder = true; - textureHolder = fi.GetValue(entryObject) as MyAssetHolder; - } - } } } if (entryObject == null) @@ -205,11 +193,20 @@ private void loadModFromFile(String modFile) } string dataPath = this.getMyDataDirectory() + modFileName; entryObject.assignDataPath(dataPath); + MethodInfo[] methods = entryObject.GetType().GetMethods(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); + foreach (MethodInfo method in methods) + { + MyListenerAttribute[] att = (MyListenerAttribute[]) method.GetCustomAttributes(typeof(MyListenerAttribute), true); + if (att.Length == 1) + { + new HookSystem.ReWork.MyHookListener(method,entryObject); + } + } entryObject.Load(); mainConsole.tryLogCustom("Loaded " + entryObject.myName+".\n"+entryObject.myDescription+"\nVersion "+entryObject.myVersion, logTag, LogType.Generic); this.loadedMods++; mods[entryObject.myName] = entryObject; - manager.castHook(new MyModLoadedHook(entryObject)); + MyHookSystem.executeHook(new MyModLoadedHook(entryObject)); } catch (MyCoreException e) { @@ -241,7 +238,7 @@ private void KeyUpdate() { if (!keyDown.Contains(code)) { - MyKeyDownHook result = manager.castHook(new MyKeyDownHook(code,true)); + MyKeyDownHook result = MyHookSystem.executeHook(new MyKeyDownHook(code)); if (result.isCanceled()) { if (result.register) @@ -261,8 +258,8 @@ private void KeyUpdate() { if (!Input.GetKey(down)) { - MyKeyUpHook hook = new MyKeyUpHook(down, true); - MyKeyUpHook result = ModLoader.manager.castHook(hook); + MyKeyUpHook hook = new MyKeyUpHook(down); + MyKeyUpHook result = MyHookSystem.executeHook(hook); if (result.isCanceled()) { if (result.register) diff --git a/Source/SFSML/MyMod.cs b/Source/SFSML/MyMod.cs index e875c39..cb8fa23 100644 --- a/Source/SFSML/MyMod.cs +++ b/Source/SFSML/MyMod.cs @@ -8,7 +8,7 @@ namespace SFSML { - public abstract class MyMod : MyBaseHookable + public abstract class MyMod { public readonly String myName; public readonly String myDescription; @@ -83,7 +83,7 @@ public bool LoadAssets(string path) AssetBundle ab = AssetBundle.LoadFromFile(file); if (ab == null) { - ModLoader.mainConsole.tryLogCustom("Tried to load ModLoader-Assets from " + file + ", but failed.", this.myName, LogType.Generic); + ModLoader.mainConsole.tryLogCustom("Tried to load ModLoader-Assets from " + file + ", but failed.", this.myName, LogType.Error); continue; } this.assetHolder = new MyAssetHolder(ab); @@ -94,7 +94,7 @@ public bool LoadAssets(string path) } else { - ModLoader.mainConsole.tryLogCustom("Mod doesn't have asset folder. Skippig asset load proccess", this.myName, LogType.Generic); + ModLoader.mainConsole.tryLogCustom("Mod doesn't have asset folder. Skipping asset load proccess", this.myName, LogType.Generic); } return false; } diff --git a/Source/obj/Debug/CoreCompileInputs.cache b/Source/obj/Debug/CoreCompileInputs.cache new file mode 100644 index 0000000..cb8f8fe --- /dev/null +++ b/Source/obj/Debug/CoreCompileInputs.cache @@ -0,0 +1 @@ +67628c62b17003f299448487a5786452e5b152e0 diff --git a/Source/obj/Release/CoreCompileInputs.cache b/Source/obj/Release/CoreCompileInputs.cache new file mode 100644 index 0000000..cb8f8fe --- /dev/null +++ b/Source/obj/Release/CoreCompileInputs.cache @@ -0,0 +1 @@ +67628c62b17003f299448487a5786452e5b152e0 diff --git a/Source/sfsml_proj.unity b/Source/sfsml_proj.unity new file mode 100644 index 0000000..48568b8 --- /dev/null +++ b/Source/sfsml_proj.unity @@ -0,0 +1,478 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 8 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 9 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &52112650 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 52112654} + - component: {fileID: 52112653} + - component: {fileID: 52112652} + - component: {fileID: 52112651} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &52112651 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 52112650} + m_Enabled: 1 +--- !u!124 &52112652 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 52112650} + m_Enabled: 1 +--- !u!20 &52112653 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 52112650} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 1, g: 0.50735295, b: 0.50735295, a: 1} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &52112654 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 52112650} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &106041034 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 224837287458710002, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224837287458710002, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224837287458710002, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224837287458710002, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224837287458710002, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224837287458710002, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224837287458710002, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224837287458710002, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224837287458710002, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224837287458710002, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224837287458710002, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224837287458710002, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224837287458710002, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224837287458710002, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224837287458710002, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224837287458710002, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224837287458710002, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224837287458710002, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224094204168789442, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224094204168789442, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224243678807994634, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224243678807994634, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224593222887912688, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224593222887912688, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224223388176973422, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224223388176973422, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224627099327784512, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224627099327784512, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224627099327784512, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_SizeDelta.x + value: -17 + objectReference: {fileID: 0} + - target: {fileID: 224627099327784512, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_SizeDelta.y + value: -17 + objectReference: {fileID: 0} + - target: {fileID: 224115041303937318, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224115041303937318, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_SizeDelta.x + value: -17 + objectReference: {fileID: 0} + - target: {fileID: 224663998688316600, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224663998688316600, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_SizeDelta.y + value: -17 + objectReference: {fileID: 0} + - target: {fileID: 224955009841009212, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224955009841009212, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224955009841009212, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_SizeDelta.x + value: -17 + objectReference: {fileID: 0} + - target: {fileID: 224955009841009212, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_SizeDelta.y + value: -17 + objectReference: {fileID: 0} + - target: {fileID: 224944865977290456, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224944865977290456, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_SizeDelta.x + value: -17 + objectReference: {fileID: 0} + - target: {fileID: 224035371931222276, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224035371931222276, guid: ee38840bb975cb94a875938ae5df89d7, + type: 2} + propertyPath: m_SizeDelta.y + value: -17 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: ee38840bb975cb94a875938ae5df89d7, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &487428671 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 487428674} + - component: {fileID: 487428673} + - component: {fileID: 487428672} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &487428672 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 487428671} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &487428673 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 487428671} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &487428674 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 487428671} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}