From 526e67dbabf3357233f694724536055e1a902280 Mon Sep 17 00:00:00 2001 From: se_ga Date: Thu, 2 Apr 2026 11:39:30 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=81=D0=B8=D1=81=D1=82=D0=B5=D0=BC=D0=B0=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B1=D1=80=D0=B0=D1=82=D1=8C=20=D1=81=D0=B5=D0=B9?= =?UTF-8?q?=D1=87=D0=B0=D1=81=20=D0=B8=D0=BB=D0=B8=20=D0=B8=D0=B3=D1=80?= =?UTF-8?q?=D0=B0=D1=82=D1=8C=20=D0=B4=D0=B0=D0=BB=D1=8C=D1=88=D0=B5=20(?= =?UTF-8?q?=D0=B2=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81=D1=81=D0=B5=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Scripts/PrizeSystem/TakeOrRiskSystem.meta | 8 + .../PrizeSystem/TakeOrRiskSystem/PrizeView.cs | 40 +++ .../TakeOrRiskSystem/PrizeView.cs.meta | 11 + .../TakeOrRiskSystem/PrizeView.prefab | 282 ++++++++++++++++++ .../TakeOrRiskSystem/PrizeView.prefab.meta | 7 + .../TakeOrRiskSystem/TakeOrRiskPanel.cs | 52 ++++ .../TakeOrRiskSystem/TakeOrRiskPanel.cs.meta | 11 + Assets/Scripts/RulesPrizePanel.cs | 11 +- 8 files changed, 416 insertions(+), 6 deletions(-) create mode 100644 Assets/Scripts/PrizeSystem/TakeOrRiskSystem.meta create mode 100644 Assets/Scripts/PrizeSystem/TakeOrRiskSystem/PrizeView.cs create mode 100644 Assets/Scripts/PrizeSystem/TakeOrRiskSystem/PrizeView.cs.meta create mode 100644 Assets/Scripts/PrizeSystem/TakeOrRiskSystem/PrizeView.prefab create mode 100644 Assets/Scripts/PrizeSystem/TakeOrRiskSystem/PrizeView.prefab.meta create mode 100644 Assets/Scripts/PrizeSystem/TakeOrRiskSystem/TakeOrRiskPanel.cs create mode 100644 Assets/Scripts/PrizeSystem/TakeOrRiskSystem/TakeOrRiskPanel.cs.meta diff --git a/Assets/Scripts/PrizeSystem/TakeOrRiskSystem.meta b/Assets/Scripts/PrizeSystem/TakeOrRiskSystem.meta new file mode 100644 index 0000000..4d2e946 --- /dev/null +++ b/Assets/Scripts/PrizeSystem/TakeOrRiskSystem.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b50887584083feb439a32c7d29b03a09 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/PrizeSystem/TakeOrRiskSystem/PrizeView.cs b/Assets/Scripts/PrizeSystem/TakeOrRiskSystem/PrizeView.cs new file mode 100644 index 0000000..f7ef7f3 --- /dev/null +++ b/Assets/Scripts/PrizeSystem/TakeOrRiskSystem/PrizeView.cs @@ -0,0 +1,40 @@ +using PrizeSystem; +using System; +using System.Collections.Generic; +using TMPro; +using UnityEngine; +using UnityEngine.UI; + +public class PrizeView : MonoBehaviour +{ + [SerializeField] private Image _image; + [SerializeField] private TextMeshProUGUI _label; + [SerializeField] private List map; + [SerializeField] private Sprite defaultSprite; + + + public void SetPrize(Prize prize) + { + _image.sprite = GetImage(prize.PrizeType); + _label.text = GetText(prize); + } + + + + + private string GetText(Prize prize) => RulesPrizePanel.GetPrizeText(prize); + private Sprite GetImage(PrizeType prizeType) + { + foreach (var mapItem in map) + if (mapItem.prizeType == prizeType) return mapItem.sprite; + return defaultSprite; + } + + + [Serializable] + public struct PrizeImageMap + { + public PrizeType prizeType; + public Sprite sprite; + } +} diff --git a/Assets/Scripts/PrizeSystem/TakeOrRiskSystem/PrizeView.cs.meta b/Assets/Scripts/PrizeSystem/TakeOrRiskSystem/PrizeView.cs.meta new file mode 100644 index 0000000..ca3a205 --- /dev/null +++ b/Assets/Scripts/PrizeSystem/TakeOrRiskSystem/PrizeView.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 006a8f6ee593bb94d96ebb190f38e418 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/PrizeSystem/TakeOrRiskSystem/PrizeView.prefab b/Assets/Scripts/PrizeSystem/TakeOrRiskSystem/PrizeView.prefab new file mode 100644 index 0000000..a3142a3 --- /dev/null +++ b/Assets/Scripts/PrizeSystem/TakeOrRiskSystem/PrizeView.prefab @@ -0,0 +1,282 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2875758851730211012 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4769901412115232176} + - component: {fileID: 1203032466002125781} + m_Layer: 5 + m_Name: PrizeView + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4769901412115232176 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2875758851730211012} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6664003626657907884} + - {fileID: 7069304449374954144} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 350, y: 350} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1203032466002125781 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2875758851730211012} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 006a8f6ee593bb94d96ebb190f38e418, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::PrizeView + _image: {fileID: 8597922984813688388} + _label: {fileID: 4166301179147098465} + map: + - prizeType: 0 + sprite: {fileID: 21300000, guid: 6e622d073fff38b468edb48bec60df75, type: 3} + - prizeType: 1 + sprite: {fileID: 21300000, guid: 6e622d073fff38b468edb48bec60df75, type: 3} + - prizeType: 2 + sprite: {fileID: 21300000, guid: 6e622d073fff38b468edb48bec60df75, type: 3} + - prizeType: 3 + sprite: {fileID: 21300000, guid: 6e622d073fff38b468edb48bec60df75, type: 3} + - prizeType: 4 + sprite: {fileID: 21300000, guid: 6e622d073fff38b468edb48bec60df75, type: 3} + - prizeType: 5 + sprite: {fileID: 21300000, guid: 6e622d073fff38b468edb48bec60df75, type: 3} + - prizeType: 6 + sprite: {fileID: 21300000, guid: 6e622d073fff38b468edb48bec60df75, type: 3} + defaultSprite: {fileID: 21300000, guid: 6e622d073fff38b468edb48bec60df75, type: 3} +--- !u!1 &3995041484942668027 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6664003626657907884} + - component: {fileID: 755257399479335942} + - component: {fileID: 8597922984813688388} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6664003626657907884 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3995041484942668027} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4769901412115232176} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 39.1} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &755257399479335942 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3995041484942668027} + m_CullTransparentMesh: 1 +--- !u!114 &8597922984813688388 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3995041484942668027} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &8097554898773150209 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7069304449374954144} + - component: {fileID: 5826936457847553742} + - component: {fileID: 4166301179147098465} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7069304449374954144 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8097554898773150209} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4769901412115232176} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -58.1} + m_SizeDelta: {x: 200, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5826936457847553742 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8097554898773150209} + m_CullTransparentMesh: 1 +--- !u!114 &4166301179147098465 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8097554898773150209} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: New Text + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3f10bbcf486189d4f95b8de6dc2e2177, type: 2} + m_sharedMaterial: {fileID: 4262305343556741190, guid: 3f10bbcf486189d4f95b8de6dc2e2177, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 32 + m_fontSizeBase: 32 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 16 + m_fontSizeMax: 64 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_characterHorizontalScale: 1 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} diff --git a/Assets/Scripts/PrizeSystem/TakeOrRiskSystem/PrizeView.prefab.meta b/Assets/Scripts/PrizeSystem/TakeOrRiskSystem/PrizeView.prefab.meta new file mode 100644 index 0000000..c909d52 --- /dev/null +++ b/Assets/Scripts/PrizeSystem/TakeOrRiskSystem/PrizeView.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f8172e74629723c4e993e8ac2f322bdf +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/PrizeSystem/TakeOrRiskSystem/TakeOrRiskPanel.cs b/Assets/Scripts/PrizeSystem/TakeOrRiskSystem/TakeOrRiskPanel.cs new file mode 100644 index 0000000..37a1ba5 --- /dev/null +++ b/Assets/Scripts/PrizeSystem/TakeOrRiskSystem/TakeOrRiskPanel.cs @@ -0,0 +1,52 @@ +using Newtonsoft.Json.Linq; +using UnityEngine; +using UnityEngine.UI; + +public class TakeOrRiskPanel : MonoBehaviour +{ + [SerializeField] Image CurrentPrizeFrame; + [SerializeField] Image NextPrizeFrame; + + [SerializeField] private Color DisabledColor; + [SerializeField] float HSV_speed = 2; + + + private Image activeFrame; + private Image inactiveFrame; + + private int index = 0; + + private void OnEnable() + { + activeFrame = CurrentPrizeFrame; + inactiveFrame = NextPrizeFrame; + index = 0; + } + + + void Update() + { + // добавить скалирование + //подсветку на кнопку принять + + + if (In.GetButtonAnyPlayer(PlayerAction.left)) index = 0; + if (In.GetButtonAnyPlayer(PlayerAction.right)) index = 1; + if (index == 0) + { + activeFrame = CurrentPrizeFrame; + inactiveFrame = NextPrizeFrame; + } + else + { + activeFrame = NextPrizeFrame; + inactiveFrame = CurrentPrizeFrame; + } + + + float hue = (Time.time * HSV_speed) % 1f; + activeFrame.color = Color.HSVToRGB(hue, 1, 1); + inactiveFrame.color = DisabledColor; + + } +} diff --git a/Assets/Scripts/PrizeSystem/TakeOrRiskSystem/TakeOrRiskPanel.cs.meta b/Assets/Scripts/PrizeSystem/TakeOrRiskSystem/TakeOrRiskPanel.cs.meta new file mode 100644 index 0000000..939748c --- /dev/null +++ b/Assets/Scripts/PrizeSystem/TakeOrRiskSystem/TakeOrRiskPanel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f3423d0840f02b047839066a58f04a66 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/RulesPrizePanel.cs b/Assets/Scripts/RulesPrizePanel.cs index fff8e87..f8321ff 100644 --- a/Assets/Scripts/RulesPrizePanel.cs +++ b/Assets/Scripts/RulesPrizePanel.cs @@ -3,7 +3,6 @@ using UnityEngine; using UnityEngine.UI; using TMPro; using PrizeSystem; -using System.Linq; public class RulesPrizePanel : MonoBehaviour { @@ -318,7 +317,7 @@ public class RulesPrizePanel : MonoBehaviour //заполняем призы которые надо проинструктировать HashSet countableTypes = new(); bool hasQr = false; - bool hasVitrina =false; + bool hasVitrina = false; foreach (var prize in prizes) { @@ -360,7 +359,7 @@ public class RulesPrizePanel : MonoBehaviour generatedObjects.Add(block.gameObject); } - + } string[] countableToString(IEnumerable values) @@ -368,7 +367,7 @@ public class RulesPrizePanel : MonoBehaviour List result = new List(); foreach (CountablePrizeType type in values) { - if(type == CountablePrizeType.Hopper || type == CountablePrizeType.Hopper2) + if (type == CountablePrizeType.Hopper || type == CountablePrizeType.Hopper2) { result.Add("Маленький приз"); } @@ -389,7 +388,7 @@ public class RulesPrizePanel : MonoBehaviour - private string GetPrizeText(Prize prize) + public static string GetPrizeText(Prize prize) { if (prize == null || prize is EmptyPrize) { @@ -408,7 +407,7 @@ public class RulesPrizePanel : MonoBehaviour } else if (prize is VitrinaPrize vp) { - return $"Витрина ячейки: {string.Join(" | ",vp.Boxes)}"; + return $"Витрина ячейки: {string.Join(" | ", vp.Boxes)}"; } else if (prize is QrPrize qp) {