Browse Source

增加派对宝箱功能1

liuqilin 7 years ago
parent
commit
28b7e5e07c

+ 3 - 3
Assets/Resource/Prefab/PrefabUI/GroupD.prefab

@@ -975,7 +975,7 @@ GameObject:
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!1 &1298872151652212
 GameObject:
   m_ObjectHideFlags: 1
@@ -2359,7 +2359,7 @@ GameObject:
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 0
+  m_IsActive: 1
 --- !u!1 &1751054354011402
 GameObject:
   m_ObjectHideFlags: 1
@@ -8831,7 +8831,7 @@ MonoBehaviour:
   m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
+  m_Material: {fileID: 2100000, guid: 406b36e606e47cb45aab5f11223bbb5e, type: 2}
   m_Color: {r: 1, g: 1, b: 1, a: 1}
   m_RaycastTarget: 0
   m_OnCullStateChanged:

+ 114 - 0
Assets/Resource/Shader/White.shader

@@ -0,0 +1,114 @@
+Shader "DashGame/White"
+{
+	Properties
+	{
+		[PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {}
+	_Color("Tint", Color) = (1,1,1,1)
+
+		_StencilComp("Stencil Comparison", Float) = 8
+		_Stencil("Stencil ID", Float) = 0
+		_StencilOp("Stencil Operation", Float) = 0
+		_StencilWriteMask("Stencil Write Mask", Float) = 255
+		_StencilReadMask("Stencil Read Mask", Float) = 255
+
+		_ColorMask("Color Mask", Float) = 15
+
+		[Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip("Use Alpha Clip", Float) = 0
+	}
+
+		SubShader
+	{
+		Tags
+	{
+		"Queue" = "Transparent"
+		"IgnoreProjector" = "True"
+		"RenderType" = "Transparent"
+		"PreviewType" = "Plane"
+		"CanUseSpriteAtlas" = "True"
+	}
+
+		Stencil
+	{
+		Ref[_Stencil]
+		Comp[_StencilComp]
+		Pass[_StencilOp]
+		ReadMask[_StencilReadMask]
+		WriteMask[_StencilWriteMask]
+	}
+
+		Cull Off
+		Lighting Off
+		ZWrite Off
+		ZTest[unity_GUIZTestMode]
+		Blend SrcAlpha OneMinusSrcAlpha
+		ColorMask[_ColorMask]
+
+		Pass
+	{
+		Name "Default"
+		CGPROGRAM
+#pragma vertex vert
+#pragma fragment frag
+#pragma target 2.0
+
+#include "UnityCG.cginc"
+#include "UnityUI.cginc"
+
+#pragma multi_compile __ UNITY_UI_ALPHACLIP
+
+		struct appdata_t
+	{
+		float4 vertex   : POSITION;
+		float4 color    : COLOR;
+		float2 texcoord : TEXCOORD0;
+		UNITY_VERTEX_INPUT_INSTANCE_ID
+	};
+
+	struct v2f
+	{
+		float4 vertex   : SV_POSITION;
+		fixed4 color : COLOR;
+		float2 texcoord  : TEXCOORD0;
+		float4 worldPosition : TEXCOORD1;
+		UNITY_VERTEX_OUTPUT_STEREO
+	};
+
+	fixed4 _Color;
+	fixed4 _TextureSampleAdd;
+	float4 _ClipRect;
+
+	v2f vert(appdata_t IN)
+	{
+		v2f OUT;
+		UNITY_SETUP_INSTANCE_ID(IN);
+		UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);
+		OUT.worldPosition = IN.vertex;
+		OUT.vertex = UnityObjectToClipPos(OUT.worldPosition);
+
+		OUT.texcoord = IN.texcoord;
+
+		OUT.color = IN.color * _Color;
+		return OUT;
+	}
+
+	sampler2D _MainTex;
+
+	fixed4 frag(v2f IN) : SV_Target
+	{
+		half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color;
+
+		color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
+
+#ifdef UNITY_UI_ALPHACLIP
+		clip(color.a - 0.001);
+#endif
+
+		color.r = 1;
+		color.g = 1;
+		color.b = 1;
+		return color;
+	}
+		ENDCG
+	}
+	}
+}

+ 9 - 0
Assets/Resource/Shader/White.shader.meta

@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: b440394c47384a645aa933f7e3110274
+timeCreated: 1508669773
+licenseType: Pro
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: effect
+  assetBundleVariant: 

+ 148 - 0
Assets/Resource/Shader/WhiteMat.mat

@@ -0,0 +1,148 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+  serializedVersion: 6
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_Name: WhiteMat
+  m_Shader: {fileID: 4800000, guid: b440394c47384a645aa933f7e3110274, type: 3}
+  m_ShaderKeywords: _EMISSION
+  m_LightmapFlags: 1
+  m_CustomRenderQueue: -1
+  stringTagMap: {}
+  m_SavedProperties:
+    serializedVersion: 2
+    m_TexEnvs:
+    - first:
+        name: _BumpMap
+      second:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - first:
+        name: _DetailAlbedoMap
+      second:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - first:
+        name: _DetailMask
+      second:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - first:
+        name: _DetailNormalMap
+      second:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - first:
+        name: _EmissionMap
+      second:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - first:
+        name: _MainTex
+      second:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - first:
+        name: _MetallicGlossMap
+      second:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - first:
+        name: _OcclusionMap
+      second:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - first:
+        name: _ParallaxMap
+      second:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    m_Floats:
+    - first:
+        name: _BumpScale
+      second: 1
+    - first:
+        name: _ColorMask
+      second: 15
+    - first:
+        name: _Cutoff
+      second: 0.5
+    - first:
+        name: _DetailNormalMapScale
+      second: 1
+    - first:
+        name: _DstBlend
+      second: 0
+    - first:
+        name: _GlossMapScale
+      second: 1
+    - first:
+        name: _Glossiness
+      second: 0.5
+    - first:
+        name: _GlossyReflections
+      second: 1
+    - first:
+        name: _Metallic
+      second: 0
+    - first:
+        name: _Mode
+      second: 0
+    - first:
+        name: _OcclusionStrength
+      second: 1
+    - first:
+        name: _Parallax
+      second: 0.02
+    - first:
+        name: _SmoothnessTextureChannel
+      second: 0
+    - first:
+        name: _SpecularHighlights
+      second: 1
+    - first:
+        name: _SrcBlend
+      second: 1
+    - first:
+        name: _Stencil
+      second: 0
+    - first:
+        name: _StencilComp
+      second: 8
+    - first:
+        name: _StencilOp
+      second: 0
+    - first:
+        name: _StencilReadMask
+      second: 255
+    - first:
+        name: _StencilWriteMask
+      second: 255
+    - first:
+        name: _UVSec
+      second: 0
+    - first:
+        name: _UseUIAlphaClip
+      second: 0
+    - first:
+        name: _ZWrite
+      second: 1
+    m_Colors:
+    - first:
+        name: _Color
+      second: {r: 1, g: 1, b: 1, a: 1}
+    - first:
+        name: _EmissionColor
+      second: {r: 0, g: 0, b: 0, a: 1}

+ 8 - 0
Assets/Resource/Shader/WhiteMat.mat.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 406b36e606e47cb45aab5f11223bbb5e
+timeCreated: 1508669764
+licenseType: Pro
+NativeFormatImporter:
+  userData: 
+  assetBundleName: effect
+  assetBundleVariant: 

+ 1 - 1
Assets/Resource/XML/lan/ChineseSimplified.xml

@@ -133,7 +133,7 @@
     <T_RepeatName desc=""><![CDATA[已经存在相同的昵称]]></T_RepeatName>
     <Y_GuessNumberDesc desc=""><![CDATA[猜中宝箱总价值的个位数即可领奖]]></Y_GuessNumberDesc>
     <Y_GuessColorDesc desc=""><![CDATA[猜中花的颜色即可领奖,答案不带色字]]></Y_GuessColorDesc>
-    <Y_WrongGusee desc=""><![CDATA[猜错了]]></Y_WrongGusee>
+    <Y_GuessWrong desc=""><![CDATA[猜错了]]></Y_GuessWrong>
     <Y_SoldOut desc=""><![CDATA[已经被抢光了]]></Y_SoldOut>
     <Y_Refund desc=""><![CDATA[你的宝箱没有被领取完,已返还剩余<(钻石)>]]></Y_Refund>
     <Yb_Minimum desc=""><![CDATA[最小20钻石]]></Yb_Minimum>

+ 1 - 1
Assets/Resource/XML/lan/ChineseTraditional.xml

@@ -133,7 +133,7 @@
     <T_RepeatName desc=""><![CDATA[已經存在相同的昵稱]]></T_RepeatName>
     <Y_GuessNumberDesc desc=""><![CDATA[]]></Y_GuessNumberDesc>
     <Y_GuessColorDesc desc=""><![CDATA[]]></Y_GuessColorDesc>
-    <Y_WrongGusee desc=""><![CDATA[猜錯了]]></Y_WrongGusee>
+    <Y_GuessWrong desc=""><![CDATA[猜錯了]]></Y_GuessWrong>
     <Y_SoldOut desc=""><![CDATA[]]></Y_SoldOut>
     <Y_Refund desc=""><![CDATA[]]></Y_Refund>
     <Yb_Minimum desc=""><![CDATA[]]></Yb_Minimum>

+ 1 - 1
Assets/Resource/XML/lan/English.xml

@@ -133,7 +133,7 @@ Program 水怪
     <T_RepeatName desc=""><![CDATA[Repeat]]></T_RepeatName>
     <Y_GuessNumberDesc desc=""><![CDATA[]]></Y_GuessNumberDesc>
     <Y_GuessColorDesc desc=""><![CDATA[]]></Y_GuessColorDesc>
-    <Y_WrongGusee desc=""><![CDATA[Wrong]]></Y_WrongGusee>
+    <Y_GuessWrong desc=""><![CDATA[Wrong]]></Y_GuessWrong>
     <Y_SoldOut desc=""><![CDATA[]]></Y_SoldOut>
     <Y_Refund desc=""><![CDATA[]]></Y_Refund>
     <Yb_Minimum desc=""><![CDATA[]]></Yb_Minimum>

BIN
Assets/Resource/Xlsx/language_config.xlsx


+ 30 - 0
Assets/Script/Manage/ManaUI.cs

@@ -3046,6 +3046,8 @@ public class ManaUI : Regist
         ManaReso.Get("Y_Tip").CreateTweenCG(0, 1, 0.5f, false, true, Curve.EaseOutQuad);
         ManaReso.Get("Y_Chest").CreateTweenCG(0, 1, 0.25f, false, true, Curve.EaseOutQuad);
 
+        ManaReso.Get<Image>("Ya_Icon").sprite = ManaReso.LoadSprite("钻石", Folder.Atlas);
+
         ManaReso.Get<Slider>("Yb_Slider").onValueChanged.AddListener(ChestMge.OnSliderValueChange);
         ManaReso.Get<InputField>("Yb_InputField").onValueChanged.AddListener(ChestMge.OnInputValueChange);
 
@@ -3087,6 +3089,34 @@ public class ManaUI : Regist
 
         #endregion
 
+        #region Y_Btn
+
+        ManaReso.SetButtonEvent
+        (
+            "Y_Btn",
+            () =>
+            {
+                ManaAudio.PlayClip(Clip.CloseClip);
+
+                PlazaRoomChest.CurrentChest.GetAward(ManaReso.Get<InputField>("Y_InputField").text);
+            }
+        );
+
+        #endregion
+
+        #region Ya_Btn
+
+        ManaReso.SetButtonEvent
+        (
+            "Ya_Btn",
+            () =>
+            {
+                ChestMge.CloseChestPanel();
+            }
+        );
+
+        #endregion
+
         #endregion
 
         #region Z

+ 1 - 1
Assets/Script/Object/CommentItem.cs

@@ -66,7 +66,7 @@ public class CommentItem : Regist
         {
             Tit.text = "****" + Random.Range(1000, 10000);
 
-            Debug.LogWarning("Error " + serialNumber);
+            //Debug.LogWarning("Error " + serialNumber);
         }
 
         ContentLab.text = content;

+ 64 - 33
Assets/Script/Object/PlazaRoomChest.cs

@@ -13,6 +13,7 @@ public class PlazaRoomChest : MonoBehaviour, IPointerClickHandler
 
     public float Time = 5;
     public float Timer;
+    public bool PlayAnim = true;
 
     public Animator Animator
     {
@@ -29,19 +30,25 @@ public class PlazaRoomChest : MonoBehaviour, IPointerClickHandler
     }
     public Animator Animator_;
 
+    public ChestData ChestData;
+
     private string AnswerColor;
     private FlowerInfo AnswerInfo;
-    private ChestData ChestData;
     private SpriteRenderer ParentSR;
     private SpriteRenderer ChestSR;
 
-    public static ChestData CurrentChestData;
+    public static PlazaRoomChest CurrentChest;
     public static PlazaRoomChest SystemChest;
 
     #endregion
 
     public void Update()
     {
+        if (!PlayAnim)
+        {
+            return;
+        }
+
         Timer += UnityEngine.Time.deltaTime;
 
         if (Timer >= Time)
@@ -67,7 +74,9 @@ public class PlazaRoomChest : MonoBehaviour, IPointerClickHandler
 
     private void Take()
     {
-        
+        SetColliders(false);
+        StopAnim();
+        SFSManager.GardenSmartFox.EventManager.PlazaRoomEvent.GetChestAward(ChestData.ID);
     }
 
     private void Guess(string inputValue)
@@ -107,12 +116,13 @@ public class PlazaRoomChest : MonoBehaviour, IPointerClickHandler
 
     private void GuessFailed()
     {
-        Debug.LogWarning("答对了");
+        Bubble.Show(null, Language.GetStr("UI", "Y_GuessWrong"));
     }
 
     private void GuessSucceed()
     {
-        Debug.LogWarning("答错了");
+        ManaReso.Get<CanvasGroup>("Y_Chest").interactable = false;
+        SFSManager.GardenSmartFox.EventManager.PlazaRoomEvent.GetChestAward(ChestData.ID);
     }
 
 
@@ -127,17 +137,12 @@ public class PlazaRoomChest : MonoBehaviour, IPointerClickHandler
 
         if (chestData.Owner == long.Parse(ManaServer.SerialNumber))
         {
-            foreach (var collider in GetComponentsInChildren<Collider>())
-            {
-                collider.enabled = false;
-            }
+            SetColliders(false);
+            StopAnim();
         }
         else
         {
-            foreach (var collider in GetComponentsInChildren<Collider>())
-            {
-                collider.enabled = true;
-            }
+            SetColliders(true);
         }
 
         if (chestData.ChestType == ChestType.GuessColor)
@@ -151,12 +156,11 @@ public class PlazaRoomChest : MonoBehaviour, IPointerClickHandler
     {
         BaseInit(chestData);
 
+        StopAnim();
+
         SystemChest = this;
 
-        foreach (var collider in GetComponentsInChildren<Collider>())
-        {
-            collider.enabled = false;
-        }
+        SetColliders(false);
     }
 
     private void BaseInit(ChestData chestData)
@@ -212,31 +216,58 @@ public class PlazaRoomChest : MonoBehaviour, IPointerClickHandler
         Animator.SetInteger("Count", Animator.GetInteger("Count") + 1);
     }
 
+    public void StopAnim()
+    {
+        PlayAnim = false;
+    }
+
+    public void ResumeAnim()
+    {
+        PlayAnim = true;
+    }
+
+    public void SetColliders(bool enable)
+    {
+        foreach (var collider in GetComponentsInChildren<Collider>())
+        {
+            collider.enabled = enable;
+        }
+    }
+
     public void OnPointerClick(PointerEventData eventData)
     {
-        CurrentChestData = ChestData;
+        CurrentChest = this;
 
         ManaAudio.PlayClip(Clip.BtnClip);
 
-        ManaReso.Get("Y_Chest").TweenForCG();
-        ManaReso.SetActive("Ya_GetAward", false);
-        ManaReso.SetActive("Y_Guess", true);
-        ManaReso.SetActive("Yb_CreateChest", false);
-
-        if (ChestData.ChestType == ChestType.GuessColor)
+        if (ChestData.ChestType == ChestType.Lucky || ChestData.ChestType == ChestType.System)
         {
-            ManaReso.SetActive("Y_RewardLab", false);
-            ManaReso.SetActive("Y_RewardIcon", true);
-            ManaReso.Get<Image>("Y_RewardIcon").sprite = AnswerInfo.Icon;
-            ManaReso.Get<Image>("Y_RewardIcon").Resize(true, 0.3125f, 0.3125f);
-            ManaReso.Get<Image>("Y_RewardIcon").color = Color.white;
-            ManaReso.SetText("Y_Tit", Language.GetStr("UI", "Yb_GuessColor"));
+            GetAward(null);
         }
         else
         {
-            ManaReso.SetActive("Y_RewardLab", true);
-            ManaReso.SetActive("Y_RewardIcon", false);
-            ManaReso.SetText("Y_Tit", Language.GetStr("UI", "Yb_GuessNumber"));
+            ManaReso.Get("Y_Chest").TweenForCG();
+            ManaReso.SetActive("Ya_GetAward", false);
+            ManaReso.SetActive("Y_Guess", true);
+            ManaReso.SetActive("Yb_CreateChest", false);
+
+            if (ChestData.ChestType == ChestType.GuessColor)
+            {
+                ManaReso.SetActive("Y_RewardLab", false);
+                ManaReso.SetActive("Y_RewardIcon", true);
+                ManaReso.Get<Image>("Y_RewardIcon").sprite = AnswerInfo.Icon;
+                ManaReso.Get<Image>("Y_RewardIcon").Resize(true, 0.3125f, 0.3125f);
+                ManaReso.Get<Image>("Y_RewardIcon").color = Color.white;
+                ManaLan.Add(ManaReso.Get<Text>("Y_Tit"), new LanStr("UI", "Yb_GuessColor"));
+                ManaLan.Add(ManaReso.Get<Text>("Y_Desc"), new LanStr("UI", "Y_GuessColorDesc"));
+            }
+            else
+            {
+                ManaReso.SetActive("Y_RewardLab", true);
+                ManaReso.SetActive("Y_RewardIcon", false);
+                ManaLan.Add(ManaReso.Get<Text>("Y_Tit"), new LanStr("UI", "Yb_GuessNumber"));
+                ManaLan.Add(ManaReso.Get<Text>("Y_Desc"), new LanStr("UI", "Y_GuessNumberDesc"));
+            }
         }
     }
 }

+ 1 - 0
Assets/Script/SFS/Data/Label.cs

@@ -13,6 +13,7 @@ public class Label
 
     public static string UserID = "ui";
     public static string RoomID = "ri";
+    public static string ChestID = "ci";
     public static string TargetUserID = "tu";
 
     public static string RoomCost = "rc";

+ 2 - 0
Assets/Script/SFS/Data/PlazaRoomRep.cs

@@ -18,4 +18,6 @@
     OtherEnterRoom=(15),
     OtherExitRoom=(16),
     ReceiveRoomExpireStatus=(17),
+    ReactivateDefaultChest=(18),
+    DeactivateDefaultChest=(19),
 }

+ 77 - 17
Assets/Script/SFS/Manager/ChestMge.cs

@@ -117,6 +117,14 @@ public class ChestMge : Regist
             long chestID = long.Parse(strings[0]);
             ChestRoomDictionary.Add(chestID, int.Parse(strings[1]));
         }
+        foreach (var VARIABLE in RefundRoomIDs)
+        {
+            Debug.LogWarning("refund " + VARIABLE);
+        }
+        foreach (var VARIABLE in ChestRoomDictionary)
+        {
+            Debug.LogWarning("received " + VARIABLE.Key);
+        }
         CheckRefund();
     }
 
@@ -294,13 +302,13 @@ public class ChestMge : Regist
 
     private static void InstantiateChest(ChestData chestData)
     {
-        if (ChestRoomDictionary.Keys.Contains(chestData.ID))
-        {
-            return;
-        }
-
         if (chestData.ChestType != ChestType.System)
         {
+            if (ChestRoomDictionary.Keys.Contains(chestData.ID))
+            {
+                return;
+            }
+
             if (chestData.RemainRound <= 0 || chestData.RemainValue <= 0)
             {
                 return;
@@ -329,39 +337,91 @@ public class ChestMge : Regist
         }
     }
 
-    public static bool HasReceived(long chestID)
+    public static void ActivateSystemChest()
     {
-        if (ChestRoomDictionary.Keys.Contains(chestID))
+        if (!SFSManager.GardenSmartFox.PlazaRoomManager.JoinedPlazaRoom)
         {
-            return true;
+            return;
         }
-        else
+
+        if (PlazaRoomChest.SystemChest == null)
+        {
+            return;
+        }
+
+        if (ChestRoomDictionary.Keys.Contains(PlazaRoomChest.SystemChest.ChestData.ID))
         {
-            return false;
+            return;
         }
+
+        PlazaRoomChest.SystemChest.SetColliders(true);
+        PlazaRoomChest.SystemChest.ResumeAnim();
     }
 
-    public static void ActivateSystemChest(long chestID)
+    public static void ReactivateSystemChest()
     {
         if (!SFSManager.GardenSmartFox.PlazaRoomManager.JoinedPlazaRoom)
         {
             return;
         }
 
-        //ReceivedChestIDs.Remove(chestID);
+        if (PlazaRoomChest.SystemChest == null)
+        {
+            return;
+        }
+
+        ChestRoomDictionary.Remove(PlazaRoomChest.SystemChest.ChestData.ID);
+        PlazaRoomChest.SystemChest.SetColliders(true);
+        PlazaRoomChest.SystemChest.ResumeAnim();
     }
 
-    public static void ReceiveChestAward(int award)
+    public static void DeactivateSystemChest()
     {
-        ChestRoomDictionary.Add(PlazaRoomChest.CurrentChestData.ID, PlazaRoomChest.CurrentChestData.DatabaseRoomID);
+        if (!SFSManager.GardenSmartFox.PlazaRoomManager.JoinedPlazaRoom)
+        {
+            return;
+        }
 
-        if (award == 0)
+        if (PlazaRoomChest.SystemChest == null)
         {
+            return;
+        }
+
+        PlazaRoomChest.SystemChest.SetColliders(false);
+        PlazaRoomChest.SystemChest.StopAnim();
+    }
+
+    public static void ReceiveChestAward(int award, long chestID)
+    {
+        //Debug.LogWarning(PlazaRoomChest.CurrentChest.ChestData.ID);
+        ChestRoomDictionary.Add(PlazaRoomChest.CurrentChest.ChestData.ID, PlazaRoomChest.CurrentChest.ChestData.DatabaseRoomID);
+
+        ManaReso.Get<CanvasGroup>("Y_Chest").interactable = true;
+
+        if (award <= 0)
+        {
+            ManaReso.Get("Y_Chest").TweenBacCG();
+
             Bubble.Show(null, Language.GetStr("UI", "Y_SoldOut"));
         }
         else
         {
-            
+            ManaReso.Get("Y_Chest").TweenForCG();
+            ManaReso.SetActive("Ya_GetAward", true);
+            ManaReso.SetActive("Y_Guess", false);
+            ManaReso.SetActive("Yb_CreateChest", false);
+
+            ManaReso.SetText("Ya_Desc", $"x{award}");
+            ManaCenter.AddDiamond(award, StaticsManager.ItemID.获得钻石, StaticsManager.ConsumeModule.RoomChestAward);
+        }
+
+        for (int i = 0; i < PlazaRoomChests.Count; i++)
+        {
+            if (PlazaRoomChests[i].ChestData.ID == chestID)
+            {
+                PlazaRoomChests[i].RetriveChest();
+                PlazaRoomChests.RemoveAt(i--);
+            }
         }
     }
 
@@ -425,7 +485,7 @@ public class ChestMge : Regist
         foreach (var kv in ChestRoomDictionary)
         {
             node = ManaData.PlayerDoc.CreateNode(XmlNodeType.Element, ReceivedNodeName, null);
-            node.InnerText = $"{kv.Value}|{kv.Key}";
+            node.InnerText = $"{kv.Key}|{kv.Value}";
             ManaData.PlayerNode.AppendChild(node);
         }
     }

+ 16 - 0
Assets/Script/SFS/Manager/SFSPlazaRoomManager.cs

@@ -247,6 +247,7 @@ public class SFSPlazaRoomManager
     {
         PlazaRoom.Initialize();
         GardenSmartFox.EventManager.PlazaRoomEvent.GetAllChestData(CurrentRoomData.ID);
+        GardenSmartFox.EventManager.PlazaRoomEvent.CheckDefaultRoomStatus(CurrentRoomData.ID);
         foreach (var kv in UserInstanceDictionary)
         {
             if (kv.Value.Player.transform.parent == null)
@@ -325,6 +326,8 @@ public class SFSPlazaRoomManager
 
     public void QuitPlazaRoom()
     {
+        PlazaRoomChest.SystemChest = null;
+
         ManaCenter.SceneSwitchLock = false;
         InPlazaRoom = false;
 
@@ -350,6 +353,7 @@ public class SFSPlazaRoomManager
             return;
 
         //KeepAliveThread();
+        CheckDefautChestThread();
 
         CameraControllThread();
     }
@@ -410,6 +414,18 @@ public class SFSPlazaRoomManager
         PlazaRoomCamera.transform.SetX(x);
     }
 
+    private float CheckTime = 10;
+    private float CheckTimer;
+    public void CheckDefautChestThread()
+    {
+        CheckTimer += Time.deltaTime;
+        if (CheckTimer >= CheckTime)
+        {
+            CheckTimer = 0;
+            GardenSmartFox.EventManager.PlazaRoomEvent.CheckDefaultRoomStatus(CurrentRoomData.ID);
+        }
+    }
+
 
     public void MoveTo(Vector3 destination)
     {

+ 9 - 1
Assets/Script/SFS/SFSEvent/EventDispatcher.cs

@@ -45,7 +45,7 @@ public class EventDispatcher
         }
         else if (cmd == PlazaRoomRep.ActivateDefaultChest.GetHashString())
         {
-
+            SFSEventManager.PlazaRoomEvent.OnActivateDefaultRoom(baseEvent);
         }
         else if (cmd == PlazaRoomRep.CreateChestError.GetHashString())
         {
@@ -95,6 +95,14 @@ public class EventDispatcher
         {
             
         }
+        else if (cmd == PlazaRoomRep.ReactivateDefaultChest.GetHashString())
+        {
+            SFSEventManager.PlazaRoomEvent.OnReactivateDefaultRoom(baseEvent);
+        }
+        else if (cmd == PlazaRoomRep.DeactivateDefaultChest.GetHashString())
+        {
+            SFSEventManager.PlazaRoomEvent.OnDeactivateDefaultRoom(baseEvent);
+        }
         else
         {
             throw new Exception();

+ 30 - 2
Assets/Script/SFS/SFSEvent/PlazaRoomEvent.cs

@@ -267,8 +267,10 @@ public class PlazaRoomEvent
 
     public void OnReceiveChestAward(BaseEvent baseEvent)
     {
-        int award = (baseEvent.Params["params"] as ISFSObject).GetInt(Label.Data);
-        ChestMge.ReceiveChestAward(award);
+        ISFSObject arg = baseEvent.Params["params"] as ISFSObject;
+        int award = arg.GetInt(Label.Data);
+        long chestID = arg.GetLong(Label.ChestID);
+        ChestMge.ReceiveChestAward(award, chestID);
     }
 
     public void OnReceiveAllChestData(BaseEvent baseEvent)
@@ -292,6 +294,32 @@ public class PlazaRoomEvent
     }
 
 
+    public void CheckDefaultRoomStatus(int databaseRoomID)
+    {
+        SFSObject parameter = new SFSObject();
+        parameter.PutInt(Label.CommandID, PlazaRoomReq.CheckDefaultChest.GetHashCode());
+        parameter.PutInt(Label.DatabaseRoomID, databaseRoomID);
+        SFSEventManager.GardenSmartFox.AddRequest(parameter, RequestType.Immediate);
+    }
+
+    public void OnActivateDefaultRoom(BaseEvent baseEvent)
+    {
+        //ISFSObject arg = baseEvent.Params["params"]as ISFSObject;
+        ChestMge.ActivateSystemChest();
+    }
+
+    public void OnReactivateDefaultRoom(BaseEvent baseEvent)
+    {
+        //ISFSObject arg = baseEvent.Params["params"]as ISFSObject;
+        ChestMge.ReactivateSystemChest();
+    }
+
+    public void OnDeactivateDefaultRoom(BaseEvent baseEvent)
+    {
+        //ISFSObject arg = baseEvent.Params["params"] as ISFSObject;
+        ChestMge.DeactivateSystemChest();
+    }
+
     public void OnReceiveRoomData(BaseEvent baseEvent)
     {
         ISFSArray array = (baseEvent.Params["params"] as ISFSObject).GetSFSArray(Label.DataArray);

+ 1 - 1
Assets/Script/Tool/Auxiliary.cs

@@ -142,7 +142,7 @@ public class Auxiliary : Regist
 
         if (Input.GetKeyDown(KeyCode.Space))
         {
-            SFSManager.GardenSmartFox.EventManager.PlazaRoomEvent.CheckChestRefund(new List<int>() {1,98,99});
+            SFSManager.GardenSmartFox.EventManager.PlazaRoomEvent.CheckDefaultRoomStatus(1);
             //ManaReso.Get<VerticalLayoutGroup>("R_Grid").CalculateLayoutInputVertical();
             //ManaReso.Get<VerticalLayoutGroup>("R_Grid").SetLayoutVertical();
         }

+ 2 - 0
第三期.txt

@@ -1,5 +1,7 @@
 新界面的语言
 
+宝箱的对象池
+
 从存档中移除宝箱ID(普通房间 系统房间)