Browse Source

角色觉醒修改

zhenglijun 4 days ago
parent
commit
3536aa4554
33 changed files with 485 additions and 99 deletions
  1. BIN
      Assets/Res/Addressable/FGUI/Player/Player_fui.bytes
  2. BIN
      Assets/Res/Addressable/Tables/ItemTable.bytes
  3. BIN
      Assets/Res/Addressable/Tables/rune_levelTable.bytes
  4. BIN
      Assets/Res/Addressable/Tables/shop_shangpinTable.bytes
  5. 2 2
      Assets/Scripts/Business/Domain/Database/DatabaseVersion.cs
  6. 50 0
      Assets/Scripts/Business/Domain/Database/Tables/shop_shangpinTable.cs
  7. 20 2
      Assets/Scripts/Business/Domain/Network/act_job_class.cs
  8. 42 6
      Assets/Scripts/Business/Domain/Network/jobClass_c.cs
  9. 0 10
      Assets/Scripts/Business/Domain/Network/model/act_job_class_m.cs
  10. 36 0
      Assets/Scripts/Business/Domain/Network/shop_c.cs
  11. 1 1
      Assets/Scripts/Business/Domain/Network/shop_c.cs.meta
  12. 12 2
      Assets/Scripts/Business/Runtime/Data/PlayerData.cs
  13. 45 3
      Assets/Scripts/Business/Runtime/Data/PlayerService.cs
  14. 1 0
      Assets/Scripts/Business/Runtime/Define/StringDefine.cs
  15. 16 0
      Assets/Scripts/Business/Runtime/Event/EventDefine.cs
  16. 1 1
      Assets/Scripts/Business/Runtime/FGUI/Common/ComCurrencyNested/CommonComCurrencyNestedCtrl.cs
  17. 49 23
      Assets/Scripts/Business/Runtime/FGUI/Item/GetItemPanel/ItemGetItemPanelCtrl.cs
  18. 106 14
      Assets/Scripts/Business/Runtime/FGUI/Player/AwakePanel/PlayerAwakePanelCtrl.cs
  19. 4 2
      Assets/Scripts/Business/Runtime/FGUI/Player/ChangeImprintPanel/PlayerChangeImprintPanelCtrl.cs
  20. 3 0
      Assets/Scripts/Business/Runtime/FGUI/Player/ImprintItemNested/PlayerImprintItemNestedCtrl.cs
  21. 2 2
      Assets/Scripts/Business/Runtime/FGUI/Player/PlansNameNested/PlayerPlansNameNestedCtrl.cs
  22. 28 0
      Assets/Scripts/Business/Runtime/Network/Controllers/ActJobClassAllPointPushCtrl.cs
  23. 11 0
      Assets/Scripts/Business/Runtime/Network/Controllers/ActJobClassAllPointPushCtrl.cs.meta
  24. 3 19
      Assets/Scripts/Business/Runtime/Network/Controllers/ActJobClassPushCtrl.cs
  25. 2 4
      Assets/Scripts/Business/Runtime/Network/Controllers/ActJobClassRunePlanNamePushCtrl.cs
  26. 2 1
      Assets/Scripts/Business/Runtime/Network/Controllers/JobClassChangePlanResponseCtrl.cs
  27. 2 1
      Assets/Scripts/Business/Runtime/Network/Controllers/JobClassResetPlanResponseCtrl.cs
  28. 12 0
      Assets/Scripts/Business/Runtime/Network/Controllers/JobClassRuneChangeResponseCtrl.cs
  29. 11 0
      Assets/Scripts/Business/Runtime/Network/Controllers/JobClassRuneChangeResponseCtrl.cs.meta
  30. 2 1
      Assets/Scripts/Business/Runtime/Network/Controllers/JobClassRunePlanNameResponseCtrl.cs
  31. 2 2
      Assets/Scripts/Business/Runtime/Network/Controllers/JobClassSlotLvUpResponseCtrl.cs
  32. 11 0
      Assets/Scripts/Business/Runtime/Network/Controllers/JobClassSlotLvUpResponseCtrl.cs.meta
  33. 9 3
      Assets/Scripts/Business/Runtime/Network/FLMsgGenerator.cs

BIN
Assets/Res/Addressable/FGUI/Player/Player_fui.bytes


BIN
Assets/Res/Addressable/Tables/ItemTable.bytes


BIN
Assets/Res/Addressable/Tables/rune_levelTable.bytes


BIN
Assets/Res/Addressable/Tables/shop_shangpinTable.bytes


+ 2 - 2
Assets/Scripts/Business/Domain/Database/DatabaseVersion.cs

@@ -5,7 +5,7 @@ namespace XGame.Database
 {
     public static class DatabaseVersion
     {
-        // version 1731064036
+        // version 1731135380
         static long _version = -1;
 
         public static long Version
@@ -14,7 +14,7 @@ namespace XGame.Database
             {
                 if (_version == -1)
                 {
-                    _version = 1731064036;
+                    _version = 1731135380;
                 }
                 return _version;
             }

+ 50 - 0
Assets/Scripts/Business/Domain/Database/Tables/shop_shangpinTable.cs

@@ -20,11 +20,51 @@ namespace XGame.Database
         /// <summary> 商城标题1=每日限购2=每周限购3=永久限购4=钻石特购5=玄钻6=钻石7=超值礼包 </summary>
         public int Type { get; private set; }
 
+        /// <summary> 商品价格类型1=钻石2=RMB </summary>
+        public int Moneytype { get; private set; }
+
+        /// <summary> 商品价格0=免费 </summary>
+        public int Money { get; private set; }
+
+        /// <summary> 折扣价格0=没有折扣优惠 </summary>
+        public int Discount { get; private set; }
+
+        /// <summary> 商品道具id+数量 </summary>
+        public int[] Goods { get; private set; }
+
+        /// <summary> 限购类型1=每日限购2=每周限购3每个账号限购 </summary>
+        public int Numbertype { get; private set; }
+
+        /// <summary> 限购次数0=没有购买次数限制 </summary>
+        public int Number { get; private set; }
+
+        /// <summary> 商品优惠力度显示:XXXX%0=没有优惠力度显示 </summary>
+        public int Offers { get; private set; }
+
+        /// <summary> 赠送奖励道具id+数量+次数 </summary>
+        public int[] Reward { get; private set; }
+
+        /// <summary> 购买条件0=无需条件1=等级2=购买指定礼包 </summary>
+        public int Buytype { get; private set; }
+
+        /// <summary> 购买条件参数 </summary>
+        public int Parameter { get; private set; }
+
         void ISerializable.Deserialize(IReader reader)
         {
             Id = reader.ReadInt();
             Malltype = reader.ReadInt();
             Type = reader.ReadInt();
+            Moneytype = reader.ReadInt();
+            Money = reader.ReadInt();
+            Discount = reader.ReadInt();
+            Goods = reader.ReadEnumerable<int[]>();
+            Numbertype = reader.ReadInt();
+            Number = reader.ReadInt();
+            Offers = reader.ReadInt();
+            Reward = reader.ReadEnumerable<int[]>();
+            Buytype = reader.ReadInt();
+            Parameter = reader.ReadInt();
         }
 
         void ISerializable.Serialize(IWriter writer)
@@ -32,6 +72,16 @@ namespace XGame.Database
             writer.Write(Id);
             writer.Write(Malltype);
             writer.Write(Type);
+            writer.Write(Moneytype);
+            writer.Write(Money);
+            writer.Write(Discount);
+            writer.Write(Goods);
+            writer.Write(Numbertype);
+            writer.Write(Number);
+            writer.Write(Offers);
+            writer.Write(Reward);
+            writer.Write(Buytype);
+            writer.Write(Parameter);
         }
     }
 }

+ 20 - 2
Assets/Scripts/Business/Domain/Network/act_job_class.cs

@@ -26,7 +26,7 @@ namespace FL.Network
         public int[] classHistory;
 
         /// <summary> 方案名字 </summary>
-        public System.Collections.Generic.List<RunePlanName> runePlanName;
+        public System.Collections.Generic.List<string> runePlanName;
 
         /// <summary> 方案subPoint </summary>
         public System.Collections.Generic.List<RunePlan> runePlan;
@@ -34,6 +34,9 @@ namespace FL.Network
         /// <summary> undefined </summary>
         public int cucurrentPlan;
 
+        /// <summary> 总点数 </summary>
+        public int allPoint;
+
     }
 
     /// <summary> id=202601 </summary>
@@ -101,7 +104,22 @@ namespace FL.Network
         public void Clear()
         {
         }
-        public System.Collections.Generic.List<RunePlanName> runePlanName;
+        public System.Collections.Generic.List<string> runePlanName;
+
+    }
+
+    /// <summary> id=202606 </summary>
+    public sealed partial class ActJobClassAllPointPush : IMsgPush
+    {
+        int IMessage.InstanceID { get; set; }
+        object IMessage.Context { get; set; }
+        int IMessage.ProtocolID => 202606;
+        public void Clear()
+        {
+        }
+        public int allPoint;
+
+        public System.Collections.Generic.List<RunePlan> runePlan;
 
     }
 

+ 42 - 6
Assets/Scripts/Business/Domain/Network/jobClass_c.cs

@@ -43,6 +43,45 @@ namespace FL.Network
 
     }
 
+    /// <summary> id=104008 </summary>
+    public sealed partial class JobClassRuneChangeRequest : IMsgRequest
+    {
+        int IMessage.InstanceID { get; set; }
+        object IMessage.Context { get; set; }
+        int IMessage.ProtocolID => 104008;
+        public void Clear()
+        {
+        }
+        /// <summary> 方案id </summary>
+        public int planId;
+
+        /// <summary> 槽位id </summary>
+        public int slotId;
+
+        /// <summary> 符文类型 1,2,3 </summary>
+        public int type;
+
+    }
+
+    /// <summary> id=104008 </summary>
+    public sealed partial class JobClassRuneChangeResponse : IMsgResponse
+    {
+        int IMessage.InstanceID { get; set; }
+        object IMessage.Context { get; set; }
+        int IMessage.ProtocolID => 104008;
+        public void Clear()
+        {
+        }
+        long IMsgResponse.GetCode() => code;
+        string IMsgResponse.GetInfo() => msg;
+        /// <summary> 消息返回类型0正常 1业务报错 2其他 </summary>
+        public int code;
+
+        /// <summary> 返回提示 </summary>
+        public string msg;
+
+    }
+
     /// <summary> id=104006 </summary>
     public sealed partial class JobClassChangePlanRequest : IMsgRequest
     {
@@ -77,7 +116,7 @@ namespace FL.Network
     }
 
     /// <summary> id=104004 </summary>
-    public sealed partial class JobClassRuneUpRequest : IMsgRequest
+    public sealed partial class JobClassSlotLvUpRequest : IMsgRequest
     {
         int IMessage.InstanceID { get; set; }
         object IMessage.Context { get; set; }
@@ -85,7 +124,7 @@ namespace FL.Network
         public void Clear()
         {
         }
-        /// <summary> 符文id </summary>
+        /// <summary> 槽位id </summary>
         public int id;
 
         /// <summary> 提升等级 </summary>
@@ -94,7 +133,7 @@ namespace FL.Network
     }
 
     /// <summary> id=104004 </summary>
-    public sealed partial class JobClassRuneUpResponse : IMsgResponse
+    public sealed partial class JobClassSlotLvUpResponse : IMsgResponse
     {
         int IMessage.InstanceID { get; set; }
         object IMessage.Context { get; set; }
@@ -154,9 +193,6 @@ namespace FL.Network
         public void Clear()
         {
         }
-        /// <summary> 方案id </summary>
-        public string planId;
-
     }
 
     /// <summary> id=104007 </summary>

+ 0 - 10
Assets/Scripts/Business/Domain/Network/model/act_job_class_m.cs

@@ -7,16 +7,6 @@ using XGame.Framework.Network;
 namespace FL.Network
 {
 
-    public sealed partial class RunePlanName
-    {
-        /// <summary> 方案id </summary>
-        public int id;
-
-        /// <summary> 方案名称 </summary>
-        public string name;
-
-    }
-
     public sealed partial class RunePlan
     {
         /// <summary> 方案id </summary>

+ 36 - 0
Assets/Scripts/Business/Domain/Network/shop_c.cs

@@ -0,0 +1,36 @@
+// <auto-generated>
+//   Input: shop_c.proto
+//   DO NOT EDIT!
+// </auto-generated>
+
+using XGame.Framework.Network;
+namespace FL.Network
+{
+
+    /// <summary> id= </summary>
+    public sealed partial class ShopBuyRequest
+    {
+        /// <summary> 类型(1杂货商店2钻石商店3礼包商店4特惠商店) </summary>
+        public int hdcid;
+
+        /// <summary> 商品id </summary>
+        public int id;
+
+        /// <summary> 购买数量 </summary>
+        public string count;
+
+    }
+
+    /// <summary> id= </summary>
+    public sealed partial class ShopBuyResponse
+    {
+        /// <summary> 消息返回类型0正常 1业务报错 2其他 </summary>
+        public int code;
+
+        /// <summary> 返回提示 </summary>
+        public string msg;
+
+    }
+
+}
+

+ 1 - 1
Assets/Scripts/Business/Runtime/Network/Controllers/JobClassRuneUpResponseCtrl.cs.meta → Assets/Scripts/Business/Domain/Network/shop_c.cs.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: DitO4CqvBi0/py/C7f5Wzi0nVp3EgLNCHkbednOX4UA5PNnI8KXSW+0=
+guid: Cysa5Cr/Vy1qxqG3y8jcQ0Mv91qVWlegGLuzfmCf3QKj/UF7ZN5jmew=
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2

+ 12 - 2
Assets/Scripts/Business/Runtime/Data/PlayerData.cs

@@ -17,8 +17,8 @@ namespace FL.Data
         public int ServerId {  get; set; } // 所属分区
         public string Name { get; set; }
 
-        private RunePlanName[] _runePlanNamesArray;// 方案名列表
-        public RunePlanName[] RunePlanNamesArray => _runePlanNamesArray ??= new RunePlanName[6];
+        private List<string> _runePlanNamesArray;// 方案名列表
+        public List<string> RunePlanNamesArray => _runePlanNamesArray ??= new List<string>();
 
         private Attributes _attr;
         public Attributes Attr => _attr ??= ObjectPool.Acquire<Attributes>();
@@ -105,6 +105,13 @@ namespace FL.Data
         /// </summary>
         public int CurPlanIndex { set; get; }
 
+
+        /// <summary>
+        /// (方案)可升级的总点数
+        /// </summary>
+        public int AllPoint {  get; set; }
+
+
         void IDisposable.Dispose()
         {
             if (_attr != null)
@@ -112,6 +119,9 @@ namespace FL.Data
                 ObjectPool.Recycle(_attr);
                 _attr = null;
             }
+            _runePlanMap?.Clear();
+            _jobHistoryList?.Clear();
+            _runePlanNamesArray?.Clear();
         }
 
     }

+ 45 - 3
Assets/Scripts/Business/Runtime/Data/PlayerService.cs

@@ -53,7 +53,7 @@ namespace FL.Data
         /// <param name="addLv"></param>
         public void SendToUpgradeRune(int runeId, int addLv)
         {
-            var msg = new JobClassRuneUpRequest()
+            var msg = new JobClassSlotLvUpRequest()
             {
                 id = runeId,
                 addLv = addLv
@@ -65,10 +65,52 @@ namespace FL.Data
         /// 请求更换印记符文类型
         /// </summary>
         /// <param name="runeType"></param>
-        public void SendToChangeRuneType(int runeType) 
+        public void SendToChangeRuneType(int planIndex, int slotId, int runeType) 
         {
-            
+            var msg = new JobClassRuneChangeRequest()
+            {
+                planId = planIndex,
+                slotId = slotId,
+                type = runeType
+            };
+            NetModule.Request(msg);
+        }
+
+
+        /// <summary>
+        /// 请求更换符文方案
+        /// </summary>
+        /// <param name="planIndex"></param>
+        public void SendToChangePlanIndex(int planIndex) 
+        {
+            var msg = new JobClassChangePlanRequest()
+            {
+                planId = planIndex.ToString(),
+            };
+            NetModule.Request(msg);
         }
 
+        /// <summary>
+        /// 请求重置当前方案
+        /// </summary>
+        public void SendToResetPlan()
+        {
+            NetModule.Request(new JobClassResetPlanRequest() { });
+        }
+
+        /// <summary>
+        /// 请求修改符文方案名字
+        /// </summary>
+        /// <param name="name"></param>
+        /// <param name="planIndex"></param>
+        public void SendToAlterPlanName(string name, int planIndex)
+        {
+            var msg = new JobClassRunePlanNameRequest()
+            {
+                str = name,
+                planId = planIndex.ToString(),
+            };
+            NetModule.Request(msg);
+        }
     }
 }

+ 1 - 0
Assets/Scripts/Business/Runtime/Define/StringDefine.cs

@@ -5,6 +5,7 @@ namespace FL
     {
         public static string dragonTreasureScore = "还差{0}积分可以领取{1}";
         public static string sellHightPowerEquip = "出售的装备战力高于当前装备,是否确定?";
+        public static string resetCurrentPlan = "重置当前方案";
         public static string dragonEggsEmpty = "龙裔宝卵数量不足";
         public static string temporaryEquipEmpty = "当前背包中没有装备";
         public static string notOpen = "功能暂未开放,敬请期待";

+ 16 - 0
Assets/Scripts/Business/Runtime/Event/EventDefine.cs

@@ -206,6 +206,22 @@
         /// 成功升级印记(符文等级)
         /// </summary>
         UpgradeRuneLvSucess,
+        /// <summary>
+        /// 成功切换符文方案
+        /// </summary>
+        ChangePlanIndexSucess,
+        /// <summary>
+        /// 成功重置当前方案(符文升级)
+        /// </summary>
+        ResetCurrentPlanSucess,
+        /// <summary>
+        /// 成功修改符文方案名字
+        /// </summary>
+        ChangePlanNameSucess,
+        /// <summary>
+        /// 成功更换印记类型
+        /// </summary>
+        ChangeRuneTypeSucess,
         #endregion
         #region 登录界面 3600-3999
         LoginQufuInfos = 3600,

+ 1 - 1
Assets/Scripts/Business/Runtime/FGUI/Common/ComCurrencyNested/CommonComCurrencyNestedCtrl.cs

@@ -50,7 +50,7 @@ namespace FL.FGUI
             if (costItemInfo != null) VM.CurrencyIcon.icon = costItemInfo?.Icon;
             if (count == 0)count = ItemData.Instance.GetItemNum(costId);
             var countStr = count < costVal ? $"[color=#f74b4b]{count}[/color]" : $"[color=#1ef369]{count}[/color]";
-            VM.CurrencyLabel.text = $"{count}/{costVal}";
+            VM.CurrencyLabel.text = $"{countStr}/{costVal}";
         }
     }
 }

+ 49 - 23
Assets/Scripts/Business/Runtime/FGUI/Item/GetItemPanel/ItemGetItemPanelCtrl.cs

@@ -10,8 +10,10 @@ using FL.Data.Items;
 using FL.Network;
 using System.Collections.Generic;
 using System.Linq;
+using System.Runtime.Remoting.Contexts;
 using XGame.Database;
 using XGame.Framework;
+using XGame.Framework.Time;
 using XGame.Framework.UI;
 
 namespace FL.FGUI
@@ -29,6 +31,7 @@ namespace FL.FGUI
     /// <typeparam name=""></typeparam>
     public partial class ItemGetItemPanelCtrl : UIController<ItemGetItemPanelVM>
     {
+        private ITimer _delayTimer; // 延迟展示高战力装备
         private List<long> _waitEquipIdList; // 穿戴|替换等待服务器消息返回的装备id列表
         private List<KindItem> _dropItems;
 
@@ -42,10 +45,18 @@ namespace FL.FGUI
         {
             RemoveUIListenres();
             RemoveEventLisenter();
+            ClearTimer();
             if (_waitEquipIdList != null ) _waitEquipIdList.Clear();
             if (_dropItems != null ) _dropItems.Clear();
             EquipData.Instance.ClearTemporaryEquipList();
         }
+
+        private void ClearTimer()
+        {
+            _delayTimer?.Cancel();
+            _delayTimer = null;
+        }
+
         #region UI事件
         private void AddUIListenres()
         {
@@ -102,7 +113,11 @@ namespace FL.FGUI
             }
    
             ShowDropUI();
-            ShowEquipUI(ObtainData != null && ObtainData.bShowBtn);
+          
+            if(ObtainData != null && ObtainData.bShowBtn)
+            {
+                ShowEquipUI();
+            }
         }
 
         private void ShowDropUI()
@@ -128,38 +143,49 @@ namespace FL.FGUI
         {
             VM.OpenBagBtn.visible = bShow;
         }
-        private void ShowEquipUI(bool bEquipUI) 
+        private void ShowEquipUI() 
         {
-            if (bEquipUI)
+            List<KindItem> equipItemList = _dropItems.FindAll(item => item.count == 0);
+            var highEquipMap = new Dictionary<EEquipType, EquipItem>();
+            foreach (var item in equipItemList)
             {
-                List<KindItem> equipItemList = _dropItems.FindAll(item => item.count == 0);
-                var highEquipMap = new Dictionary<EEquipType, EquipItem>();
-                foreach (var item in equipItemList)
+                var equipItem = EquipData.Instance.GetTemporaryEquipItem(item.id);
+                if (equipItem != null && IsHighEquip(equipItem)) 
                 {
-                    var equipItem = EquipData.Instance.GetTemporaryEquipItem(item.id);
-                    if (equipItem != null && IsHighEquip(equipItem)) 
+                    if (highEquipMap.ContainsKey(equipItem.EquipType))
                     {
-                        if (highEquipMap.ContainsKey(equipItem.EquipType))
+                        if (highEquipMap[equipItem.EquipType].FightingPower < equipItem.FightingPower)
                         {
-                            if (highEquipMap[equipItem.EquipType].FightingPower < equipItem.FightingPower)
-                            {
-                                highEquipMap[equipItem.EquipType] = equipItem;
-                            }
-                        }
-                        else
-                        {
-                            highEquipMap.Add(equipItem.EquipType, equipItem);
+                            highEquipMap[equipItem.EquipType] = equipItem;
                         }
                     }
+                    else
+                    {
+                        highEquipMap.Add(equipItem.EquipType, equipItem);
+                    }
                 }
-                if (highEquipMap.Count > 0)
-                {
-                    ShowHighEquipUI(highEquipMap);
-                }
-                else
-                    ShowBtn(true);
             }
+            if (highEquipMap.Count > 0)
+            {
+                DelayToShowHighEquip(highEquipMap);
+            }
+            else
+                ShowBtn(true);
         }
+
+        /// <summary>
+        /// 等待掉落道具显示后再冒泡展示高战力装备替换界面
+        /// </summary>
+        /// <param name="highEquipMap"></param>
+        private void DelayToShowHighEquip(Dictionary<EEquipType, EquipItem> highEquipMap)
+        {
+            ClearTimer();
+            _delayTimer = Context.Time.AddDelayTimer(1000, () =>
+            {
+                ShowHighEquipUI(highEquipMap);
+            });
+        }
+
         /// <summary>
         /// 是否高战力装备
         /// </summary>

+ 106 - 14
Assets/Scripts/Business/Runtime/FGUI/Player/AwakePanel/PlayerAwakePanelCtrl.cs

@@ -118,6 +118,12 @@ namespace FL.FGUI
         }
         private void OnClickResetBtn(EventContext context)
         {
+            ConfirmationBoxParam dialogParam = new ConfirmationBoxParam()
+            {
+                cnt = StringDefine.resetCurrentPlan,
+                onPromiseCallback = PlayerService.Instance.SendToResetPlan
+            };
+            Context.UI.OpenAsync(UIKeys.CommonConfirmationBox, dialogParam);
         }
         private void OnClickChangeImprintBtn(EventContext context)
         {
@@ -136,7 +142,7 @@ namespace FL.FGUI
             if (!ItemService.Instance.IsEnough(_upgradeItemId, _upgradeCostVal, true))
                 return;
 
-            PlayerService.Instance.SendToUpgradeRune(_selectImprint,1);
+            PlayerService.Instance.SendToUpgradeRune(_selectImprint+1,1);
         }
         /// <summary>
         /// 升级10次印记
@@ -147,7 +153,7 @@ namespace FL.FGUI
             if (!ItemService.Instance.IsEnough(_upgradeItemId, _upgradeCostVal*10, true))
                 return;
 
-            PlayerService.Instance.SendToUpgradeRune(_selectImprint, 10);
+            PlayerService.Instance.SendToUpgradeRune(_selectImprint+1, 10);
         }
 
         #endregion
@@ -157,12 +163,20 @@ namespace FL.FGUI
             EventSingle.Instance.AddListener(EventDefine.UpdataItemData, UpdataItemData);
             EventSingle.Instance.AddListener(EventDefine.WakeUpRuneSucess, WakeUpRuneSucess);
             EventSingle.Instance.AddListener(EventDefine.UpgradeRuneLvSucess, UpgradeRuneLvSucess);
+            EventSingle.Instance.AddListener(EventDefine.ChangePlanIndexSucess, ChangePlanIndexSucess);
+            EventSingle.Instance.AddListener(EventDefine.ResetCurrentPlanSucess,ResetCurrentPlanSucess);
+            EventSingle.Instance.AddListener(EventDefine.ChangePlanNameSucess, ChangePlanNameSucess);
+            EventSingle.Instance.AddListener(EventDefine.ChangeRuneTypeSucess, ChangeRuneTypeSucess);
         }
         private void RemoveEventListner()
         {
             EventSingle.Instance.RemoveListener(EventDefine.UpdataItemData, UpdataItemData);
             EventSingle.Instance.RemoveListener(EventDefine.WakeUpRuneSucess, WakeUpRuneSucess);
             EventSingle.Instance.RemoveListener(EventDefine.UpgradeRuneLvSucess, UpgradeRuneLvSucess);
+            EventSingle.Instance.RemoveListener(EventDefine.ChangePlanIndexSucess, ChangePlanIndexSucess);
+            EventSingle.Instance.RemoveListener(EventDefine.ResetCurrentPlanSucess,ResetCurrentPlanSucess);
+            EventSingle.Instance.RemoveListener(EventDefine.ChangePlanNameSucess, ChangePlanNameSucess);
+            EventSingle.Instance.RemoveListener(EventDefine.ChangeRuneTypeSucess, ChangeRuneTypeSucess);
         }
 
         private void InitUI()
@@ -193,7 +207,7 @@ namespace FL.FGUI
         private void ShowUI()
         {
             ShowPlayerSpine("info_job_1001_1_SkeletonData");
-            ShowImprintUI();
+            ShowImprintUI(true);
             ShowAwakeCostUI(1);
         }
 
@@ -207,22 +221,22 @@ namespace FL.FGUI
             VM.JobSpine.LoadSpine(spineName, "stand", true);
         }
 
-        private void ShowImprintUI()
+        private void ShowImprintUI(bool bInit = false)
         {
             RunePlan runePlanData = PlayerData.Instance.RunePlanMap[_selectPlanIndex];
             bool bAllLock = true;
             bool bMaxLv = true;
             bool bWaitAwake = false;
             int index = 0;
-            foreach (var rune in runePlanData.slot) 
+            foreach (var rune in runePlanData.slot)
             {
                 _runeIdArray[index] = rune.runeId;
                 index++;
-                if (bAllLock && rune.runeId > 0) 
+                if (bAllLock && rune.runeId > 0)
                 {
                     bAllLock = false;
                 }
-                if (bWaitAwake && rune.runeId == 0)
+                if (!bWaitAwake && rune.runeId == 0)
                 {
                     bWaitAwake = true;
                 }
@@ -246,6 +260,18 @@ namespace FL.FGUI
             }
             VM.LockCtrl.selectedIndex = bAllLock ? 1 : 0;
             VM.AwakeCtrl.selectedIndex = bMaxLv ? 2 : (bWaitAwake ? 0 : 1);
+            if (bInit && _runeIdArray[_selectImprint] == 0)
+            {
+                for (int i = 0; i < _runeIdArray.Length; i++)
+                {
+                    if (_runeIdArray[i] > 0)
+                    {
+                        _selectImprint = i;
+                        break;
+                    }
+                }
+            } 
+
             ShowImprintRuneUI();
         }
 
@@ -292,7 +318,11 @@ namespace FL.FGUI
             {
                 _upgradeItemId = runeExpInfo.Cost[0];
                 _upgradeCostVal = runeExpInfo.Cost[1];
-                VM.UpgradeCostItem.Ctrl.ShowCostUI(_upgradeItemId, _upgradeCostVal, 0);
+                RunePlan runePlanData = PlayerData.Instance.RunePlanMap[_selectPlanIndex];
+                // allPoint - 当前方案的subPoint) + 玩家的道具
+                int upgradePoint = PlayerData.Instance.AllPoint - runePlanData.subPoint + (int)ItemData.Instance.GetItemNum(_upgradeItemId);
+                VM.UpgradeCostItem.Ctrl.ShowCostUI(_upgradeItemId, _upgradeCostVal, upgradePoint);
+                VM.TenCostItem.Ctrl.ShowCostUI(_upgradeItemId, _upgradeCostVal*10, upgradePoint);
             }
         }
 
@@ -302,6 +332,7 @@ namespace FL.FGUI
         /// <param name="imprintIndex"></param>
         private void OnclcickImprintItem(int imprintIndex)
         {
+            _selectImprint = imprintIndex;
             ShowImprintItemUI(imprintIndex);
             for (int i = 0; i < _imprintItemList.Count; i++)
             {
@@ -334,16 +365,27 @@ namespace FL.FGUI
         {
             int runeId = GetRuneId(index+1);
             bool bShowChangeImprintBtn = true;
+            int lvCtrlIndex = 0;
             if (runeId == 0)
             {
                 // 展示信息 槽位id * 10000 + 符文类型 * 1000
-                runeId = index * 10000 + 1001;
+                runeId = (index+1) * 10000 + 1001;
                 bShowChangeImprintBtn = false;
             }
+            else
+            {
+                var runeLevelInfo = rune_levelTableRepo.Get(runeId);
+                if (runeLevelInfo == null)
+                    lvCtrlIndex = 2;
+                else
+                {
+                    var runeExpInfo = rune_expTableRepo.Get(runeLevelInfo.Level +1);
+                    lvCtrlIndex = runeExpInfo == null ? 2 : 1;
+                }
+            }
             var imprintInfo = _runeTableList[index];
             if (imprintInfo != null) 
             {
-                int a = (runeId - (index + 1) * 10000);
                 int runeType = (runeId - (index+1) * 10000) / 1000 - 1;
                 VM.ImprintNameLabel.text = imprintInfo.Name[runeType];
                 if (bShowChangeImprintBtn && imprintInfo.Handoff.Length == 1) bShowChangeImprintBtn = false;
@@ -351,6 +393,7 @@ namespace FL.FGUI
             ShowRuneAttrUI(runeId);
             ShowUpgradeCostUI(runeId);
             VM.ChangeImprintBtn.visible = bShowChangeImprintBtn;
+            VM.LevelCtrl.selectedIndex = lvCtrlIndex;
         }
 
         private void ShowRuneAttrUI(int runeId)
@@ -364,9 +407,11 @@ namespace FL.FGUI
                     var attributeInfo = AttrDescTableRepo.Get(runeInfo.Value_plus[i]);
                     if (attributeInfo != null)
                     {
-                        sb.Append(attributeInfo.Name);
+                        sb.Append(attributeInfo.ShowName);
+                        sb.Append("[color=#1EF369]+");
                         sb.Append(attributeInfo.Num_type == 1 ? TableUtils.ToRealDouble(runeInfo.Value_plus[i+1]).ToString("F3") + "%" :
                                  (attributeInfo.Id == (int)EAttributeType.AtkSpeed ? TableUtils.ToRealDouble(runeInfo.Value_plus[i + 1]).ToString("F1") : runeInfo.Value_plus[i + 1].ToString()));
+                        sb.Append("[/color]");
                     }
                 }
                 VM.ImprintDescLabel.text = sb.ToString();
@@ -419,10 +464,51 @@ namespace FL.FGUI
         /// <param name="args"></param>
         private void UpgradeRuneLvSucess(int eventId, object args) 
         {
+            ShowImprintUI();
+        }
+
+        /// <summary>
+        /// 切换符文方案
+        /// </summary>
+        /// <param name="eventId"></param>
+        /// <param name="args"></param>
+        private void ChangePlanIndexSucess(int eventId, object args)
+        {
+            _selectImprint = PlayerData.Instance.CurPlanIndex;
+            ShowImprintUI();
+        }
+
+        /// <summary>
+        /// 成功重置当前方案
+        /// </summary>
+        /// <param name="eventId"></param>
+        /// <param name="args"></param>
+        private void ResetCurrentPlanSucess(int eventId, object args) 
+        {
+            ShowImprintUI();
+        }
+
+        /// <summary>
+        /// 成功更换印记类型
+        /// </summary>
+        /// <param name="eventId"></param>
+        /// <param name="args"></param>
+        private void ChangeRuneTypeSucess(int eventId, object args) 
+        {
             ShowImprintItemUI(_selectImprint);
         }
 
         /// <summary>
+        /// 成功修改符文方案名字
+        /// </summary>
+        /// <param name="eventId"></param>
+        /// <param name="args"></param>
+        private void ChangePlanNameSucess(int eventId, object args) 
+        {
+            SelectPlanNameItem(_selectPlanIndex);
+        }
+
+        /// <summary>
         /// 修改方案名
         /// </summary>
         /// <param name="rename">要修改的名称</param>
@@ -431,7 +517,7 @@ namespace FL.FGUI
         {
             if (bChange)
             {
-
+                PlayerService.Instance.SendToAlterPlanName(changeName,_selectPlanIndex);
             }
         }
 
@@ -453,11 +539,17 @@ namespace FL.FGUI
                 VM.PlansNameNestedItem.Disable();
             }
         }
+
+        /// <summary>
+        /// 选择(符文升级)方案
+        /// </summary>
+        /// <param name="index"></param>
+
         private  void SelectPlanNameItem(int index)
         {
-            if (index >= 0 && PlayerData.Instance.RunePlanNamesArray.Length > 0)
+            if (index > 0 && PlayerData.Instance.RunePlanNamesArray.Count > 0)
             {
-                VM.PlansNameBtn.title = PlayerData.Instance.RunePlanNamesArray[index].name;
+                VM.PlansNameBtn.title = PlayerData.Instance.RunePlanNamesArray[index-1];
             }
             ShowPlansNameNestedItem(false);
         }

+ 4 - 2
Assets/Scripts/Business/Runtime/FGUI/Player/ChangeImprintPanel/PlayerChangeImprintPanelCtrl.cs

@@ -20,6 +20,7 @@ namespace FL.FGUI
     /// <typeparam name=""></typeparam>
     public partial class PlayerChangeImprintPanelCtrl : UIController<PlayerChangeImprintPanelVM>
     {
+        private int _slotId; // 槽位id
         private int _runeType; // 符文类型
         private GButton[] _btnsArray;
         private runeTable _runeTableInfo;
@@ -59,7 +60,7 @@ namespace FL.FGUI
         }
         private void OnClickSureBtn(EventContext context)
         {
-            PlayerService.Instance.SendToChangeRuneType(_runeType);
+            PlayerService.Instance.SendToChangeRuneType(PlayerData.Instance.CurPlanIndex, _slotId, _runeType);
             Context.ClosePanel();
         }
         private void OnClickAttackImprintBtn(EventContext context)
@@ -86,7 +87,8 @@ namespace FL.FGUI
         /// <param name="imprintIndex"></param>
         private void ShowUI(int imprintIndex)
         {
-            _runeTableInfo = runeTableRepo.Get(imprintIndex+1);
+            _slotId = imprintIndex + 1;
+            _runeTableInfo = runeTableRepo.Get(_slotId);
             if (_runeTableInfo != null)
             {
                 int count = _runeTableInfo.Name.Length;

+ 3 - 0
Assets/Scripts/Business/Runtime/FGUI/Player/ImprintItemNested/PlayerImprintItemNestedCtrl.cs

@@ -53,11 +53,14 @@ namespace FL.FGUI
             _imprintIndex = index;
             _onClickCallback = callback;
             ShowSelectUI(false);
+            int selectIndex = 0;
             var runeInfo = rune_levelTableRepo.Get(runeId);
             if (runeInfo != null) 
             {
+                selectIndex = 1;
                 VM.ImprintBtn.title = $"LV.{runeInfo.Level}";
             }
+            VM.ImprintBtn.GetController("UnlockCtrl").selectedIndex = selectIndex;
         }
 
         public void ShowSelectUI(bool bSelect)

+ 2 - 2
Assets/Scripts/Business/Runtime/FGUI/Player/PlansNameNested/PlayerPlansNameNestedCtrl.cs

@@ -40,12 +40,12 @@ namespace FL.FGUI
         }
         private void OnClickHideBtn(EventContext context)
         {
-            _selectCallback(-1);
+            _selectCallback(0);
         }
 
         private void OnClickPlanNameListItem(int index) 
         {
-            _selectCallback(index);
+            _selectCallback(index+1);
         }
 
         #endregion

+ 28 - 0
Assets/Scripts/Business/Runtime/Network/Controllers/ActJobClassAllPointPushCtrl.cs

@@ -0,0 +1,28 @@
+using FL.Data;
+using XGame.Framework.Network;
+
+namespace FL.Network
+{
+    public class ActJobClassAllPointPushCtrl : MsgController<ActJobClassAllPointPush>
+    {
+        protected override void OnProcess(ActJobClassAllPointPush message, object context)
+        {
+            PlayerData.Instance.AllPoint = message.allPoint;
+            if (message.runePlan != null) 
+            {
+                var runePlanMap = PlayerData.Instance.RunePlanMap;
+                foreach (var item in message.runePlan)
+                {
+                    if (runePlanMap.ContainsKey(item.id))
+                    {
+                        runePlanMap[item.id] = item;
+                    }
+                    else
+                    {
+                        runePlanMap.Add(item.id, item);
+                    }
+                }
+            }
+        }
+    }
+}

+ 11 - 0
Assets/Scripts/Business/Runtime/Network/Controllers/ActJobClassAllPointPushCtrl.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: Wygetn6lWigOKZVH/uWNdk9JYF2DatzeVHABQSrlxIVCUqoNEdSN2lw=
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 19
Assets/Scripts/Business/Runtime/Network/Controllers/ActJobClassPushCtrl.cs

@@ -23,10 +23,8 @@ namespace FL.Network
             if (message.runePlanName != null) 
             {
                 var runePlanNamesArray = PlayerData.Instance.RunePlanNamesArray;
-                foreach (var item in message.runePlanName)
-                {
-                    runePlanNamesArray[item.id - 1] = item;
-                }
+                runePlanNamesArray.Clear();
+                runePlanNamesArray.AddRange(message.runePlanName);
             }
 
             // 方案加点数据
@@ -47,21 +45,7 @@ namespace FL.Network
             }
 
             PlayerData.Instance.CurPlanIndex = message.cucurrentPlan;
-
-
-            //if (message.runeList != null)
-            //{
-            //    var runeMap = PlayerData.Instance.RuneMap;
-            //    foreach (var item in message.runeList)
-            //    {
-            //        if (runeMap.ContainsKey(item.id))
-            //            runeMap[item.id] = item.runeId;
-            //        else
-            //            runeMap.Add(item.id, item.runeId);
-            //    }
-            //}
-            //if (message.classHistory != null) {
-
+            PlayerData.Instance.AllPoint = message.allPoint;
         }
     }
 }

+ 2 - 4
Assets/Scripts/Business/Runtime/Network/Controllers/ActJobClassRunePlanNamePushCtrl.cs

@@ -10,10 +10,8 @@ namespace FL.Network
             if (message.runePlanName != null) 
             {
                 var runePlanNamesArray = PlayerData.Instance.RunePlanNamesArray;
-                foreach (var item in message.runePlanName)
-                {
-                    runePlanNamesArray[item.id - 1] = item;
-                }
+                runePlanNamesArray.Clear();
+                runePlanNamesArray.AddRange(message.runePlanName);
             }
         }
     }

+ 2 - 1
Assets/Scripts/Business/Runtime/Network/Controllers/JobClassChangePlanResponseCtrl.cs

@@ -1,4 +1,4 @@
-using XGame.Framework.Network;
+using XGame.Framework.Network;
 
 namespace FL.Network
 {
@@ -6,6 +6,7 @@ namespace FL.Network
     {
         protected override void OnProcess(JobClassChangePlanResponse message, object context)
         {
+            EventSingle.Instance.Notify(EventDefine.ChangePlanIndexSucess);
         }
     }
 }

+ 2 - 1
Assets/Scripts/Business/Runtime/Network/Controllers/JobClassResetPlanResponseCtrl.cs

@@ -1,4 +1,4 @@
-using XGame.Framework.Network;
+using XGame.Framework.Network;
 
 namespace FL.Network
 {
@@ -6,6 +6,7 @@ namespace FL.Network
     {
         protected override void OnProcess(JobClassResetPlanResponse message, object context)
         {
+            EventSingle.Instance.Notify(EventDefine.ResetCurrentPlanSucess);
         }
     }
 }

+ 12 - 0
Assets/Scripts/Business/Runtime/Network/Controllers/JobClassRuneChangeResponseCtrl.cs

@@ -0,0 +1,12 @@
+using XGame.Framework.Network;
+
+namespace FL.Network
+{
+    public class JobClassRuneChangeResponseCtrl : MsgController<JobClassRuneChangeResponse>
+    {
+        protected override void OnProcess(JobClassRuneChangeResponse message, object context)
+        {
+            EventSingle.Instance.Notify(EventDefine.ChangeRuneTypeSucess);
+        }
+    }
+}

+ 11 - 0
Assets/Scripts/Business/Runtime/Network/Controllers/JobClassRuneChangeResponseCtrl.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: XC9MsH/7B3Plo2THADBqFDc/HhX+sekiMvhZmzq6Y0YNFJoiwFCJjRE=
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 2 - 1
Assets/Scripts/Business/Runtime/Network/Controllers/JobClassRunePlanNameResponseCtrl.cs

@@ -1,4 +1,4 @@
-using XGame.Framework.Network;
+using XGame.Framework.Network;
 
 namespace FL.Network
 {
@@ -6,6 +6,7 @@ namespace FL.Network
     {
         protected override void OnProcess(JobClassRunePlanNameResponse message, object context)
         {
+            EventSingle.Instance.Notify(EventDefine.ChangePlanNameSucess);
         }
     }
 }

+ 2 - 2
Assets/Scripts/Business/Runtime/Network/Controllers/JobClassRuneUpResponseCtrl.cs → Assets/Scripts/Business/Runtime/Network/Controllers/JobClassSlotLvUpResponseCtrl.cs

@@ -2,9 +2,9 @@
 
 namespace FL.Network
 {
-    public class JobClassRuneUpResponseCtrl : MsgController<JobClassRuneUpResponse>
+    public class JobClassSlotLvUpResponseCtrl : MsgController<JobClassSlotLvUpResponse>
     {
-        protected override void OnProcess(JobClassRuneUpResponse message, object context)
+        protected override void OnProcess(JobClassSlotLvUpResponse message, object context)
         {
             EventSingle.Instance.Notify(EventDefine.UpgradeRuneLvSucess);
         }

+ 11 - 0
Assets/Scripts/Business/Runtime/Network/Controllers/JobClassSlotLvUpResponseCtrl.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: C34d4COrAnJzcC+ah/DF8Mox29y6uKYcwx4dokCR/gp/5B/B+LrwNfI=
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 9 - 3
Assets/Scripts/Business/Runtime/Network/FLMsgGenerator.cs

@@ -85,10 +85,11 @@ namespace FL.Network
                 case 104001: return new JobClassChangeResponseCtrl();
                 case 104002: return new JobClassResetResponseCtrl();
                 case 104003: return new JobClassRuneActivateResponseCtrl();
-                case 104004: return new JobClassRuneUpResponseCtrl();
+                case 104004: return new JobClassSlotLvUpResponseCtrl();
                 case 104005: return new JobClassRunePlanNameResponseCtrl();
                 case 104006: return new JobClassChangePlanResponseCtrl();
                 case 104007: return new JobClassResetPlanResponseCtrl();
+                case 104008: return new JobClassRuneChangeResponseCtrl();
                 case 104101: return new TaskMainRwdResponseCtrl();
                 case 104201: return new TaskDailyRwdResponseCtrl();
                 case 104202: return new TaskDailyActivityRwdResponseCtrl();
@@ -157,6 +158,7 @@ namespace FL.Network
                 case 202603: return new ActJobClassResetClassPushCtrl();
                 case 202604: return new ActJobClassCucurrentPlanPushCtrl();
                 case 202605: return new ActJobClassRunePlanNamePushCtrl();
+                case 202606: return new ActJobClassAllPointPushCtrl();
                 case 202700: return new TaskConsPushCtrl();
                 case 202701: return new ActTaskMainConsPushCtrl();
                 case 202800: return new ActJjcFightPushCtrl();
@@ -283,10 +285,11 @@ namespace FL.Network
                 case 104001: return new JobClassChangeResponse();
                 case 104002: return new JobClassResetResponse();
                 case 104003: return new JobClassRuneActivateResponse();
-                case 104004: return new JobClassRuneUpResponse();
+                case 104004: return new JobClassSlotLvUpResponse();
                 case 104005: return new JobClassRunePlanNameResponse();
                 case 104006: return new JobClassChangePlanResponse();
                 case 104007: return new JobClassResetPlanResponse();
+                case 104008: return new JobClassRuneChangeResponse();
                 case 104101: return new TaskMainRwdResponse();
                 case 104201: return new TaskDailyRwdResponse();
                 case 104202: return new TaskDailyActivityRwdResponse();
@@ -355,6 +358,7 @@ namespace FL.Network
                 case 202603: return new ActJobClassResetClassPush();
                 case 202604: return new ActJobClassCucurrentPlanPush();
                 case 202605: return new ActJobClassRunePlanNamePush();
+                case 202606: return new ActJobClassAllPointPush();
                 case 202700: return new TaskConsPush();
                 case 202701: return new ActTaskMainConsPush();
                 case 202800: return new ActJjcFightPush();
@@ -481,10 +485,11 @@ namespace FL.Network
                 case 104001: return typeof(JobClassChangeResponse);
                 case 104002: return typeof(JobClassResetResponse);
                 case 104003: return typeof(JobClassRuneActivateResponse);
-                case 104004: return typeof(JobClassRuneUpResponse);
+                case 104004: return typeof(JobClassSlotLvUpResponse);
                 case 104005: return typeof(JobClassRunePlanNameResponse);
                 case 104006: return typeof(JobClassChangePlanResponse);
                 case 104007: return typeof(JobClassResetPlanResponse);
+                case 104008: return typeof(JobClassRuneChangeResponse);
                 case 104101: return typeof(TaskMainRwdResponse);
                 case 104201: return typeof(TaskDailyRwdResponse);
                 case 104202: return typeof(TaskDailyActivityRwdResponse);
@@ -553,6 +558,7 @@ namespace FL.Network
                 case 202603: return typeof(ActJobClassResetClassPush);
                 case 202604: return typeof(ActJobClassCucurrentPlanPush);
                 case 202605: return typeof(ActJobClassRunePlanNamePush);
+                case 202606: return typeof(ActJobClassAllPointPush);
                 case 202700: return typeof(TaskConsPush);
                 case 202701: return typeof(ActTaskMainConsPush);
                 case 202800: return typeof(ActJjcFightPush);