From 440e8a4e3febfc1d98f11da2fbd7eaf75c12e877 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期三, 22 十月 2025 15:04:17 +0800
Subject: [PATCH] 125 战斗 细节调整
---
Main/System/Hero/HeroManager.cs | 140 ++++++++++++++++++++++++++++++++--------------
1 files changed, 96 insertions(+), 44 deletions(-)
diff --git a/Main/System/Hero/HeroManager.cs b/Main/System/Hero/HeroManager.cs
index d54640f..49ef7bd 100644
--- a/Main/System/Hero/HeroManager.cs
+++ b/Main/System/Hero/HeroManager.cs
@@ -1,81 +1,123 @@
using System.Collections.Generic;
using UnityEngine;
using System;
+using System.Linq;
public class HeroManager : GameSystemManager<HeroManager>
{
+ //姝﹀皢鍜屽浘閴寸殑鍏崇郴
+ //鍚屼竴涓灏嗗浘閴达紝鍙兘鏈夊涓灏嗭紙鐗╁搧锛夋暟鎹紝鎴栬�呮病鏈夋灏嗭紝浣嗘槸鏈夊浘閴翠俊鎭�
+ //鍒濆鍒涘缓锛�0725锛夛紝鍚庣画璺熼殢鑳屽寘浜嬩欢澧炲姞鍒犻櫎 key = guid
protected Dictionary<string, HeroInfo> heroInfoDict = new Dictionary<string, HeroInfo>();
- public Action<HeroInfo> onNewHeroEvent;
-
public Action<HeroInfo> onHeroChangeEvent;
+
+ public Action<int> onHeroDeleteEvent;
public override void Init()
{
base.Init();
- // 娉ㄥ唽涓�鐐逛簨浠�
- PackManager.Instance.refrechPackEvent += refrechPackEvent;
+ PackManager.Instance.ChangeItemEvent += ChangeHero;
+ PackManager.Instance.DeleteItemEvent += DeleteHero;
+ DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
}
public override void Release()
{
base.Release();
- PackManager.Instance.refrechPackEvent -= refrechPackEvent;
+ PackManager.Instance.ChangeItemEvent -= ChangeHero;
+ PackManager.Instance.DeleteItemEvent -= DeleteHero;
+ DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
}
- public override void RequestNessaryData()
+ void OnBeforePlayerDataInitialize()
{
- base.RequestNessaryData();
-
+ heroInfoDict.Clear();
}
- public void refrechPackEvent(PackType packType)
+
+ // isCreate bool锛歵rue浠h〃鍒涘缓 false 鍒锋柊瑙﹀彂
+ void ChangeHero(PackType packType, string guid, bool isCreate)
{
if (packType == PackType.Hero)
{
- // bool change = false;
- bool isNew = false;
- // 濡傛灉鏈夊垎鎵规鍒濆鍖栧彲鑳借繕瑕侀夯鐑︿竴鐐�?鍏堢湅鐪�
- bool isInit = heroInfoDict.Count >= 0;
-
- SinglePack heroPack = PackManager.Instance.GetSinglePack(packType);
-
- Dictionary<int, ItemModel> heroes = heroPack.GetAllItems();
-
- foreach (ItemModel hero in heroes.Values)
+ HeroInfo heroInfo = null;
+ if (!heroInfoDict.TryGetValue(guid, out heroInfo))
{
- HeroInfo heroInfo = null;
- if (!heroInfoDict.TryGetValue(hero.guid, out heroInfo))
- {
- heroInfo = new HeroInfo(hero);
- heroInfoDict.Add(hero.guid, heroInfo);
- if (!isInit)
- {
- isNew = true;
- onNewHeroEvent?.Invoke(heroInfo);
- }
- }
- else
- {
- heroInfo.UpdateHero(hero);
- // 涔熸湁鍙兘涓嶆槸change
- // change = true;
- // onHeroChangeEvent?.Invoke(heroInfo);
- }
+ heroInfo = new HeroInfo(PackManager.Instance.GetItemByGuid(guid));
+ heroInfoDict.Add(guid, heroInfo);
+ }
+ else
+ {
+ heroInfo.UpdateHero(PackManager.Instance.GetItemByGuid(guid));
+ }
+
+ onHeroChangeEvent?.Invoke(heroInfo);
+ }
+ }
+
+ void DeleteHero(PackType packType, string guid, int itemID, int index, int clearType)
+ {
+ if (packType == PackType.Hero)
+ {
+ HeroInfo heroInfo = null;
+ heroInfoDict.TryGetValue(guid, out heroInfo);
+
+ heroInfoDict.Remove(guid);
+
+ onHeroDeleteEvent?.Invoke(itemID);
+ }
+ }
+
+ public HeroInfo GetHero(string guid)
+ {
+ if (!heroInfoDict.ContainsKey(guid))
+ return null;
+ return heroInfoDict[guid];
+ }
+
+ public List<HeroInfo> GetHeroList()
+ {
+ return heroInfoDict.Values.ToList();
+ }
+
+ public List<string> GetHeroGuidList(int job = 0, int country = 0)
+ {
+ if (job == 0 && country == 0)
+ return heroInfoDict.Keys.ToList();
+
+
+ List<string> retGuidList = new List<string>();
+ foreach (string guid in heroInfoDict.Keys)
+ {
+ HeroInfo heroInfo = heroInfoDict[guid];
+ //0浠h〃鍏ㄩ儴
+ if (job == 0 || country == 0)
+ {
+ if (job != 0 && job == heroInfo.heroConfig.Class)
+ retGuidList.Add(guid);
+ if (country != 0 && country == heroInfo.heroConfig.Country)
+ retGuidList.Add(guid);
+ }
+ else
+ {
+ if (job == heroInfo.heroConfig.Class && country == heroInfo.heroConfig.Country)
+ retGuidList.Add(guid);
}
}
+ return retGuidList;
}
public List<HeroInfo> GetPowerfulHeroList()
{
List<HeroInfo> heroList = new List<HeroInfo>(heroInfoDict.Values);
- heroList.Sort((a, b) =>
+ heroList.Sort((a, b) =>
{
- int power1 = a.CalculatePower();
- int power2 = b.CalculatePower();
+ long power1 = a.CalculateFightPower(false);
+ long power2 = b.CalculateFightPower(false);
if (power1 == power2)
{
@@ -95,9 +137,19 @@
return retList;
}
- // public override bool IsNessaryDataReady()
- // {
- // return true;
- // }
+ public int GetHeroCount()
+ {
+ return heroInfoDict.Count;
+ }
+
+ public bool HasHero(int heroID)
+ {
+ return PackManager.Instance.GetSinglePack(PackType.Hero).HasItem(heroID);
+ }
+
+ public int GetHeroCountByID(int heroID)
+ {
+ return (int)PackManager.Instance.GetSinglePack(PackType.Hero).GetCountById(heroID);
+ }
}
\ No newline at end of file
--
Gitblit v1.8.0