From b8dd7c96a188331939b01555ff6f2c82a943c1da Mon Sep 17 00:00:00 2001 From: Douglas Rachevsky Date: Fri, 9 Sep 2022 20:41:16 -0300 Subject: [PATCH] Bug fix on UIPanel - sometimes a panel could be shown multiple times while hiding --- .icon.png | Bin 0 -> 6455 bytes GameWorkstore.ProtocolUI.asmdef | 15 ++ GameWorkstore.ProtocolUI.asmdef.meta | 7 + LICENSE.md | 23 ++++ LICENSE.md.meta | 7 + README.md | 29 ++++ README.md.meta | 7 + Runtime.meta | 8 ++ Runtime/Listeners.meta | 8 ++ .../Listeners/UIActiveStateButtonListener.cs | 24 ++++ .../UIActiveStateButtonListener.cs.meta | 11 ++ .../Listeners/UIDisableStateButtonListener.cs | 24 ++++ .../UIDisableStateButtonListener.cs.meta | 11 ++ Runtime/UICanvas.cs | 70 ++++++++++ Runtime/UICanvas.cs.meta | 11 ++ Runtime/UIPanel.cs | 128 ++++++++++++++++++ Runtime/UIPanel.cs.meta | 11 ++ Runtime/UIStateScriptable.cs | 22 +++ Runtime/UIStateScriptable.cs.meta | 11 ++ Runtime/UIStateService.cs | 99 ++++++++++++++ Runtime/UIStateService.cs.meta | 11 ++ package.json | 17 +++ package.json.meta | 7 + 23 files changed, 561 insertions(+) create mode 100644 .icon.png create mode 100644 GameWorkstore.ProtocolUI.asmdef create mode 100644 GameWorkstore.ProtocolUI.asmdef.meta create mode 100644 LICENSE.md create mode 100644 LICENSE.md.meta create mode 100644 README.md create mode 100644 README.md.meta create mode 100644 Runtime.meta create mode 100644 Runtime/Listeners.meta create mode 100644 Runtime/Listeners/UIActiveStateButtonListener.cs create mode 100644 Runtime/Listeners/UIActiveStateButtonListener.cs.meta create mode 100644 Runtime/Listeners/UIDisableStateButtonListener.cs create mode 100644 Runtime/Listeners/UIDisableStateButtonListener.cs.meta create mode 100644 Runtime/UICanvas.cs create mode 100644 Runtime/UICanvas.cs.meta create mode 100644 Runtime/UIPanel.cs create mode 100644 Runtime/UIPanel.cs.meta create mode 100644 Runtime/UIStateScriptable.cs create mode 100644 Runtime/UIStateScriptable.cs.meta create mode 100644 Runtime/UIStateService.cs create mode 100644 Runtime/UIStateService.cs.meta create mode 100644 package.json create mode 100644 package.json.meta diff --git a/.icon.png b/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..88f2743dffecfe68985bead8f8985768d3b8ef5f GIT binary patch literal 6455 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 R#s2^R002ovPDHLkV1fWSVITki literal 0 HcmV?d00001 diff --git a/GameWorkstore.ProtocolUI.asmdef b/GameWorkstore.ProtocolUI.asmdef new file mode 100644 index 0000000..1c7db32 --- /dev/null +++ b/GameWorkstore.ProtocolUI.asmdef @@ -0,0 +1,15 @@ +{ + "name": "GameWorkstore.ProtocolUI", + "references": [ + "GUID:c32d36751e998d74999be5c29b033d6e" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/GameWorkstore.ProtocolUI.asmdef.meta b/GameWorkstore.ProtocolUI.asmdef.meta new file mode 100644 index 0000000..5d8fcf4 --- /dev/null +++ b/GameWorkstore.ProtocolUI.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 08dbee498d7574248954d8f542a6d2a4 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..7eebb27 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,23 @@ +MIT License + +Copyright (c) 2015, Unity Technologies + +Copyright (c) 2020 Game Workstore + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/LICENSE.md.meta b/LICENSE.md.meta new file mode 100644 index 0000000..931d4ed --- /dev/null +++ b/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d32ba5ded8ab1184982bf9915cd85fe1 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/README.md b/README.md new file mode 100644 index 0000000..99f3e7d --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +# Game Workstore Protocol UI + +Protocol UI is a small framework to work with multiple screens on a easy and organized way and manage layered panels on Unity. +Use it your own risk! + +# How to install + +At package.json, add these lines of code: +```json +"com.gameworkstore.protocolui": "https://github.com/GameWorkstore/protocolui.git#1.1.4" +"com.gameworkstore.patterns": "https://github.com/GameWorkstore/patterns.git#1.2.0" +``` + +And wait for unity to download and compile the package. + +you can upgrade your version by including the release version at end of the link: +```json +"com.gameworkstore.protocolui": "https://github.com/GameWorkstore/protocolui.git#1.1.5" +``` + +# Contributions + +If you are using this library and want to submit a change, go ahead! Overall, this project accepts contributions if: +- Is a bug fix; +- Or, is a generalization of a well-known issue; +- Or is performance improvement; +- Or is an improvement to already supported feature. + +Also, you can donate to allow us to drink coffee while we improve it for you! diff --git a/README.md.meta b/README.md.meta new file mode 100644 index 0000000..c28617a --- /dev/null +++ b/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4961490634aa0d34890a7beb0a72932e +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime.meta b/Runtime.meta new file mode 100644 index 0000000..e1279c9 --- /dev/null +++ b/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 30f625eb7707e474da5377d92cbaf48b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Listeners.meta b/Runtime/Listeners.meta new file mode 100644 index 0000000..7b952e5 --- /dev/null +++ b/Runtime/Listeners.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 73682d3da85cc57439966e804f674071 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Listeners/UIActiveStateButtonListener.cs b/Runtime/Listeners/UIActiveStateButtonListener.cs new file mode 100644 index 0000000..b0a0e04 --- /dev/null +++ b/Runtime/Listeners/UIActiveStateButtonListener.cs @@ -0,0 +1,24 @@ +using GameWorkstore.Patterns; +using UnityEngine; +using UnityEngine.UI; + +namespace GameWorkstore.ProtocolUI +{ + public class UIActiveStateButtonListener : MonoBehaviour + { + public UIStateScriptable State; + private UIStateService _uistateservice; + + // Start is called before the first frame update + private void Awake() + { + _uistateservice = ServiceProvider.GetService(); + GetComponent