From 6577831ab2883bd05448ce0b1f9f913a9944fc78 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期二, 29 七月 2025 16:54:18 +0800
Subject: [PATCH] 125 【战斗】战斗系统
---
Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs.meta | 2
Main/System/Battle/Motion/MotionBase.cs | 130 +++
Main/Config/Configs/SkillConfig.cs | 341 +++-----
Main/System/Battle/SkillEffect/SkillEffectFactory.cs | 28
Main/System/MainLevel/MainLevelManager.cs | 21
Main/System/Battle/BattleObject/BattleObject.cs | 14
Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs | 70 +
Main/System/Hero/HeroFetterInfo.cs | 4
Main/System/Battle/BattleField/RecordActions/BattleStartAction.cs.meta | 2
Main/System/Battle/Skill/SkillFactory.cs | 5
Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs.meta | 2
Main/System/Battle/RecordPlayer/RecordActionType.cs | 2
Main/Core/NetworkPackage/CustomServerPack.meta | 8
Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs | 150 +++
Main/System/Battle/SkillEffect/BulletSkillEffect.cs | 141 ++-
Main/System/Battle/Skill/SkillEffectType.cs | 11
Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs.meta | 2
Main/Core/NetworkPackage/ServerPack/HB4_FightDefine/HB426_tagSCTurnFightTag.cs.meta | 2
Main/System/Battle/Skill/SkillEffectType.cs.meta | 2
Main/System/Battle/Skill/SkillBase.cs | 197 ++--
Main/System/Battle/SkillEffect/BulletCurve/BulletCurveFactory.cs.meta | 2
Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs.meta | 2
Main/System/Battle/Skill/SkillCastMode.cs | 19
Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs.meta | 2
Main/System/Battle/BattleConst.cs.meta | 2
Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs | 4
Main/Core/NetworkPackage/CustomServerPack/CustomB421ActionPack.cs.meta | 2
Main/System/Battle/SkillEffect/NormalSkillEffect.cs | 96 +-
Main/System/Battle/BattleConst.cs | 8
Main/Common/EventName.cs | 4
Main/Config/ConfigManager.cs | 131 ---
Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs | 77 +
Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs | 38
Main/System/Battle/SkillEffect/BulletCurve.meta | 8
Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB426_tagSCTurnFightTag.cs.meta | 2
Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs.meta | 2
Main/System/Battle/SkillEffect/BulletCurve/BulletCurveFactory.cs | 35
Main/System/MainLevel.meta | 8
Main/System/Battle/BattleField/BattleField.cs | 86 ++
Main/Core/NetworkPackage/CustomServerPack/CustomB421ActionPack.cs | 25
Main/System/Message/RichTableEvent.cs | 2
Main/System/Team/TeamManager.cs | 45
Main/System/Battle/BattleField/RecordActions/BattleStartAction.cs | 39
Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs | 40 +
Main/Config/PartialConfigs/SkillConfig.Partial.cs | 11
Main/Component/UI/Effect/EffectPlayer.cs | 2
Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB426_tagSCTurnFightTag.cs | 11
Main/System/Battle/BattleEffectMgr.cs | 2
Main/System/Team/TeamBase.cs | 56
Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs | 63 +
Main/System/KnapSack/PackManager.cs | 34
Main/System/Battle/BattleManager.cs | 117 ++
Main/System/Battle/Skill/DirectlyDamageSkill.cs | 146 +--
Main/Core/NetworkPackage/ServerPack/HB4_FightDefine/HB426_tagSCTurnFightTag.cs | 21
Main/System/Battle/SkillEffect/SkillEffect.cs | 27
Main/System/MainLevel/MainLevelManager.cs.meta | 2
/dev/null | 11
Main/System/Battle/BattleObject/BattleObjMgr.cs | 53 +
Main/System/Team/TeamHero.cs | 4
Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0418_tagObjInfoRefresh.cs | 2
60 files changed, 1,581 insertions(+), 794 deletions(-)
diff --git a/Main/Common/EventName.cs b/Main/Common/EventName.cs
index 68165bb..ad3cc1f 100644
--- a/Main/Common/EventName.cs
+++ b/Main/Common/EventName.cs
@@ -7,6 +7,6 @@
public const string BATTLE_BUFF_DISAPEAR = "BATTLE_BUFF_DISAPEAR";//BUFF DISAPEAR
public const string BATTLE_DAMAGE_TAKEN = "BATTLE_DAMAGE_TAKEN";//閫犳垚浼ゅ
-
-
+
+ public const string DISPLAY_BATTLE_UI = "DISPLAY_BATTLE_UI";//鏄剧ず鎴樻枟UI
}
\ No newline at end of file
diff --git a/Main/Component/UI/Effect/EffectPlayer.cs b/Main/Component/UI/Effect/EffectPlayer.cs
index 26427fa..7e5122f 100644
--- a/Main/Component/UI/Effect/EffectPlayer.cs
+++ b/Main/Component/UI/Effect/EffectPlayer.cs
@@ -154,7 +154,7 @@
// 鑷姩閿�姣�
if (effectConfig.autoDestroy != 0)
{
- Destroy(effectTarget, effectConfig.destroyDelay);
+ Destroy(gameObject, effectConfig.destroyDelay);
}
}
diff --git a/Main/Config/ConfigManager.cs b/Main/Config/ConfigManager.cs
index 5731362..3a81196 100644
--- a/Main/Config/ConfigManager.cs
+++ b/Main/Config/ConfigManager.cs
@@ -38,52 +38,9 @@
// 鍔犺浇閰嶇疆鏂囦欢
HashSet<Type> configTypes = new HashSet<Type>() {
- typeof(ChatBubbleBoxConfig),
- typeof(CTGConfig),
- typeof(DailyLivenessRewardConfig),
- typeof(DailyQuestConfig),
- typeof(DailyQuestOpenTimeConfig),
- typeof(DienstgradConfig),
- typeof(DirtyNameConfig),
typeof(DirtyWordConfig),
- typeof(EffectConfig),
typeof(EquipGSParamConfig),
- typeof(EquipPlaceMapConfig),
- typeof(FamilyEmblemConfig),
- typeof(FrameAnimationConfig),
- typeof(FuncConfigConfig),
- typeof(FuncOpenLVConfig),
- typeof(FunctionTeamSetConfig),
- typeof(GetItemWaysConfig),
- typeof(GmCmdConfig),
- typeof(HeroAwakeConfig),
- typeof(HeroConfig),
- typeof(HeroQualityAwakeConfig),
- typeof(HeroQualityBreakConfig),
- typeof(HeroQualityConfig),
- typeof(HeroSkinConfig),
- typeof(ItemConfig),
- typeof(KickOutReasonConfig),
- typeof(MainChapterConfig),
- typeof(MainLevelConfig),
- typeof(NPCConfig),
- typeof(NPCLineupConfig),
- typeof(OrderInfoConfig),
- typeof(PlayerFaceConfig),
- typeof(PlayerLVConfig),
- typeof(PlayerPropertyConfig),
- typeof(priorbundleConfig),
- typeof(RealmConfig),
- typeof(RealmLVUPTaskConfig),
- typeof(RuleConfig),
- typeof(SkillConfig),
- typeof(TaskConfig),
- typeof(TitleStarUpConfig),
- typeof(TreasureCntAwardConfig),
- typeof(TreasureItemLibConfig),
- typeof(TreasureSetConfig),
- typeof(TreeLVConfig),
- typeof(XBGetItemConfig)
+ typeof(TitleStarUpConfig)
};
#if UNITY_EDITOR
@@ -233,98 +190,12 @@
public override void Release()
{
- // 娓呯┖ ChatBubbleBoxConfig 瀛楀吀
- ClearConfigDictionary<ChatBubbleBoxConfig>();
- // 娓呯┖ CTGConfig 瀛楀吀
- ClearConfigDictionary<CTGConfig>();
- // 娓呯┖ DailyLivenessRewardConfig 瀛楀吀
- ClearConfigDictionary<DailyLivenessRewardConfig>();
- // 娓呯┖ DailyQuestConfig 瀛楀吀
- ClearConfigDictionary<DailyQuestConfig>();
- // 娓呯┖ DailyQuestOpenTimeConfig 瀛楀吀
- ClearConfigDictionary<DailyQuestOpenTimeConfig>();
- // 娓呯┖ DienstgradConfig 瀛楀吀
- ClearConfigDictionary<DienstgradConfig>();
- // 娓呯┖ DirtyNameConfig 瀛楀吀
- ClearConfigDictionary<DirtyNameConfig>();
// 娓呯┖ DirtyWordConfig 瀛楀吀
ClearConfigDictionary<DirtyWordConfig>();
- // 娓呯┖ EffectConfig 瀛楀吀
- ClearConfigDictionary<EffectConfig>();
// 娓呯┖ EquipGSParamConfig 瀛楀吀
ClearConfigDictionary<EquipGSParamConfig>();
- // 娓呯┖ EquipPlaceMapConfig 瀛楀吀
- ClearConfigDictionary<EquipPlaceMapConfig>();
- // 娓呯┖ FamilyEmblemConfig 瀛楀吀
- ClearConfigDictionary<FamilyEmblemConfig>();
- // 娓呯┖ FrameAnimationConfig 瀛楀吀
- ClearConfigDictionary<FrameAnimationConfig>();
- // 娓呯┖ FuncConfigConfig 瀛楀吀
- ClearConfigDictionary<FuncConfigConfig>();
- // 娓呯┖ FuncOpenLVConfig 瀛楀吀
- ClearConfigDictionary<FuncOpenLVConfig>();
- // 娓呯┖ FunctionTeamSetConfig 瀛楀吀
- ClearConfigDictionary<FunctionTeamSetConfig>();
- // 娓呯┖ GetItemWaysConfig 瀛楀吀
- ClearConfigDictionary<GetItemWaysConfig>();
- // 娓呯┖ GmCmdConfig 瀛楀吀
- ClearConfigDictionary<GmCmdConfig>();
- // 娓呯┖ HeroAwakeConfig 瀛楀吀
- ClearConfigDictionary<HeroAwakeConfig>();
- // 娓呯┖ HeroConfig 瀛楀吀
- ClearConfigDictionary<HeroConfig>();
- // 娓呯┖ HeroQualityAwakeConfig 瀛楀吀
- ClearConfigDictionary<HeroQualityAwakeConfig>();
- // 娓呯┖ HeroQualityBreakConfig 瀛楀吀
- ClearConfigDictionary<HeroQualityBreakConfig>();
- // 娓呯┖ HeroQualityConfig 瀛楀吀
- ClearConfigDictionary<HeroQualityConfig>();
- // 娓呯┖ HeroSkinConfig 瀛楀吀
- ClearConfigDictionary<HeroSkinConfig>();
- // 娓呯┖ ItemConfig 瀛楀吀
- ClearConfigDictionary<ItemConfig>();
- // 娓呯┖ KickOutReasonConfig 瀛楀吀
- ClearConfigDictionary<KickOutReasonConfig>();
- // 娓呯┖ MainChapterConfig 瀛楀吀
- ClearConfigDictionary<MainChapterConfig>();
- // 娓呯┖ MainLevelConfig 瀛楀吀
- ClearConfigDictionary<MainLevelConfig>();
- // 娓呯┖ NPCConfig 瀛楀吀
- ClearConfigDictionary<NPCConfig>();
- // 娓呯┖ NPCLineupConfig 瀛楀吀
- ClearConfigDictionary<NPCLineupConfig>();
- // 娓呯┖ OrderInfoConfig 瀛楀吀
- ClearConfigDictionary<OrderInfoConfig>();
- // 娓呯┖ PlayerFaceConfig 瀛楀吀
- ClearConfigDictionary<PlayerFaceConfig>();
- // 娓呯┖ PlayerLVConfig 瀛楀吀
- ClearConfigDictionary<PlayerLVConfig>();
- // 娓呯┖ PlayerPropertyConfig 瀛楀吀
- ClearConfigDictionary<PlayerPropertyConfig>();
- // 娓呯┖ priorbundleConfig 瀛楀吀
- ClearConfigDictionary<priorbundleConfig>();
- // 娓呯┖ RealmConfig 瀛楀吀
- ClearConfigDictionary<RealmConfig>();
- // 娓呯┖ RealmLVUPTaskConfig 瀛楀吀
- ClearConfigDictionary<RealmLVUPTaskConfig>();
- // 娓呯┖ RuleConfig 瀛楀吀
- ClearConfigDictionary<RuleConfig>();
- // 娓呯┖ SkillConfig 瀛楀吀
- ClearConfigDictionary<SkillConfig>();
- // 娓呯┖ TaskConfig 瀛楀吀
- ClearConfigDictionary<TaskConfig>();
// 娓呯┖ TitleStarUpConfig 瀛楀吀
ClearConfigDictionary<TitleStarUpConfig>();
- // 娓呯┖ TreasureCntAwardConfig 瀛楀吀
- ClearConfigDictionary<TreasureCntAwardConfig>();
- // 娓呯┖ TreasureItemLibConfig 瀛楀吀
- ClearConfigDictionary<TreasureItemLibConfig>();
- // 娓呯┖ TreasureSetConfig 瀛楀吀
- ClearConfigDictionary<TreasureSetConfig>();
- // 娓呯┖ TreeLVConfig 瀛楀吀
- ClearConfigDictionary<TreeLVConfig>();
- // 娓呯┖ XBGetItemConfig 瀛楀吀
- ClearConfigDictionary<XBGetItemConfig>();
}
#if UNITY_EDITOR
diff --git a/Main/Config/Configs/SkillConfig.cs b/Main/Config/Configs/SkillConfig.cs
index 55c63d0..55ed3e4 100644
--- a/Main/Config/Configs/SkillConfig.cs
+++ b/Main/Config/Configs/SkillConfig.cs
@@ -1,6 +1,6 @@
锘�//--------------------------------------------------------
// [Author]: YYL
-// [ Date ]: 2025骞�7鏈�17鏃�
+// [ Date ]: 2025骞�7鏈�28鏃�
//--------------------------------------------------------
using System.Collections.Generic;
@@ -15,85 +15,42 @@
public int SkillID;
public string SkillName;
- public int SkillTypeID;
- public int SkillLV;
- public int SkillMaxLV;
- public int UseType;
+ public string Description;
+ public string IconName;
public int FuncType;
- public int CastTime;
public int SkillType;
public int HurtType;
- public int ContinueUse;
public int AtkType;
- public int AtkRadius;
- public int Tag;
- public int AtkDist;
- public int StiffTime;
+ public int TagAim;
+ public int LastTime;
public int CoolDownTime;
- public int MP;
- public int HP;
- public int XP;
- public int UseItemID;
- public int UseItemCount;
- public int Effect1;
- public int EffectValue11;
- public int EffectValue12;
- public int EffectValue13;
- public int Effect2;
- public int EffectValue21;
- public int EffectValue22;
- public int EffectValue23;
- public int Effect3;
- public int EffectValue31;
- public int EffectValue32;
- public int EffectValue33;
- public int Effect4;
- public int EffectValue41;
- public int EffectValue42;
- public int EffectValue43;
- public int Effect5;
- public int EffectValue51;
- public int EffectValue52;
- public int EffectValue53;
- public int Effect6;
- public int EffectValue61;
- public int EffectValue62;
- public int EffectValue63;
- public int HappenRate6;
- public int LastTime6;
- public int SkillEnhance1;
- public int SkillEnhance2;
- public int StateSkillLV;
- public int LearnSkillReq;
- public int LearnSkillLV;
- public int LearnLVReq;
- public int LearnSkillPointReq;
+ public int EffectID1;
+ public int[] EffectValues1;
+ public int EffectID2;
+ public int[] EffectValues2;
+ public int EffectID3;
+ public int[] EffectValues3;
+ public int ConnSkill;
+ public int[] EnhanceSkillList;
public int FightPower;
- public int LVUpCostMoneyType;
- public int LVUpCostMoney;
- public int LVUpCostExp;
- public int ClientActionLimit;
- public int ClientSkillSeriesLimit;
- public int SkillOfSeries;
- public int ExpendMPRate;
- public int ExAttr1;
- public int ExAttr3;
- public int ExAttr4;
- public int ExAttr5;
- public int BuffEffectID;
- public int EffectName;
- public string IconName;
- public string Description;
- public string BuffDescription;
- public int BuffDisplay;
+ public int StartupFrames;
+ public int ActiveFrames;
+ public int RecoveryFrames;
+ public int LoopCount;
public int CastPosition;
- public int CastDistance;
- public int[] TriggerFrames;
+ public int CastIndexNum;
+ public float CastDistance;
public int[][] DamageDivide;
+ public int BulletEffectId;
+ public int BulletPos;
+ public int BulletPath;
+ public int BulletFlyTime;
+ public int ExplosionEffectId;
+ public int ExplosionPos;
public string SkillMotionName;
public int EffectId;
- public int ExplotionEffectId;
- public float FlyTime;
+ public int EffectPos;
+ public int EffectType;
public override int LoadKey(string _key)
{
@@ -109,175 +66,125 @@
SkillName = tables[1];
- int.TryParse(tables[2],out SkillTypeID);
+ Description = tables[2];
- int.TryParse(tables[3],out SkillLV);
+ IconName = tables[3];
- int.TryParse(tables[4],out SkillMaxLV);
+ int.TryParse(tables[4],out FuncType);
- int.TryParse(tables[5],out UseType);
+ int.TryParse(tables[5],out SkillType);
- int.TryParse(tables[6],out FuncType);
+ int.TryParse(tables[6],out HurtType);
- int.TryParse(tables[7],out CastTime);
+ int.TryParse(tables[7],out AtkType);
- int.TryParse(tables[8],out SkillType);
+ int.TryParse(tables[8],out TagAim);
- int.TryParse(tables[9],out HurtType);
+ int.TryParse(tables[9],out LastTime);
- int.TryParse(tables[10],out ContinueUse);
+ int.TryParse(tables[10],out CoolDownTime);
- int.TryParse(tables[11],out AtkType);
+ int.TryParse(tables[11],out EffectID1);
- int.TryParse(tables[12],out AtkRadius);
-
- int.TryParse(tables[13],out Tag);
-
- int.TryParse(tables[14],out AtkDist);
-
- int.TryParse(tables[15],out StiffTime);
-
- int.TryParse(tables[16],out CoolDownTime);
-
- int.TryParse(tables[17],out MP);
-
- int.TryParse(tables[18],out HP);
-
- int.TryParse(tables[19],out XP);
-
- int.TryParse(tables[20],out UseItemID);
-
- int.TryParse(tables[21],out UseItemCount);
-
- int.TryParse(tables[22],out Effect1);
-
- int.TryParse(tables[23],out EffectValue11);
-
- int.TryParse(tables[24],out EffectValue12);
-
- int.TryParse(tables[25],out EffectValue13);
-
- int.TryParse(tables[26],out Effect2);
-
- int.TryParse(tables[27],out EffectValue21);
-
- int.TryParse(tables[28],out EffectValue22);
-
- int.TryParse(tables[29],out EffectValue23);
-
- int.TryParse(tables[30],out Effect3);
-
- int.TryParse(tables[31],out EffectValue31);
-
- int.TryParse(tables[32],out EffectValue32);
-
- int.TryParse(tables[33],out EffectValue33);
-
- int.TryParse(tables[34],out Effect4);
-
- int.TryParse(tables[35],out EffectValue41);
-
- int.TryParse(tables[36],out EffectValue42);
-
- int.TryParse(tables[37],out EffectValue43);
-
- int.TryParse(tables[38],out Effect5);
-
- int.TryParse(tables[39],out EffectValue51);
-
- int.TryParse(tables[40],out EffectValue52);
-
- int.TryParse(tables[41],out EffectValue53);
-
- int.TryParse(tables[42],out Effect6);
-
- int.TryParse(tables[43],out EffectValue61);
-
- int.TryParse(tables[44],out EffectValue62);
-
- int.TryParse(tables[45],out EffectValue63);
-
- int.TryParse(tables[46],out HappenRate6);
-
- int.TryParse(tables[47],out LastTime6);
-
- int.TryParse(tables[48],out SkillEnhance1);
-
- int.TryParse(tables[49],out SkillEnhance2);
-
- int.TryParse(tables[50],out StateSkillLV);
-
- int.TryParse(tables[51],out LearnSkillReq);
-
- int.TryParse(tables[52],out LearnSkillLV);
-
- int.TryParse(tables[53],out LearnLVReq);
-
- int.TryParse(tables[54],out LearnSkillPointReq);
-
- int.TryParse(tables[55],out FightPower);
-
- int.TryParse(tables[56],out LVUpCostMoneyType);
-
- int.TryParse(tables[57],out LVUpCostMoney);
-
- int.TryParse(tables[58],out LVUpCostExp);
-
- int.TryParse(tables[59],out ClientActionLimit);
-
- int.TryParse(tables[60],out ClientSkillSeriesLimit);
-
- int.TryParse(tables[61],out SkillOfSeries);
-
- int.TryParse(tables[62],out ExpendMPRate);
-
- int.TryParse(tables[63],out ExAttr1);
-
- int.TryParse(tables[64],out ExAttr3);
-
- int.TryParse(tables[65],out ExAttr4);
-
- int.TryParse(tables[66],out ExAttr5);
-
- int.TryParse(tables[67],out BuffEffectID);
-
- int.TryParse(tables[68],out EffectName);
-
- IconName = tables[69];
-
- Description = tables[70];
-
- BuffDescription = tables[71];
-
- int.TryParse(tables[72],out BuffDisplay);
-
- int.TryParse(tables[73],out CastPosition);
-
- int.TryParse(tables[74],out CastDistance);
-
- if (tables[75].Contains("["))
+ if (tables[12].Contains("["))
{
- TriggerFrames = JsonMapper.ToObject<int[]>(tables[75]);
+ EffectValues1 = JsonMapper.ToObject<int[]>(tables[12]);
}
else
{
- string[] TriggerFramesStringArray = tables[75].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
- TriggerFrames = new int[TriggerFramesStringArray.Length];
- for (int i=0;i<TriggerFramesStringArray.Length;i++)
+ string[] EffectValues1StringArray = tables[12].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
+ EffectValues1 = new int[EffectValues1StringArray.Length];
+ for (int i=0;i<EffectValues1StringArray.Length;i++)
{
- int.TryParse(TriggerFramesStringArray[i],out TriggerFrames[i]);
+ int.TryParse(EffectValues1StringArray[i],out EffectValues1[i]);
}
}
- DamageDivide = JsonMapper.ToObject<int[][]>(tables[76].Replace("(", "[").Replace(")", "]"));
+ int.TryParse(tables[13],out EffectID2);
- SkillMotionName = tables[77];
+ if (tables[14].Contains("["))
+ {
+ EffectValues2 = JsonMapper.ToObject<int[]>(tables[14]);
+ }
+ else
+ {
+ string[] EffectValues2StringArray = tables[14].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
+ EffectValues2 = new int[EffectValues2StringArray.Length];
+ for (int i=0;i<EffectValues2StringArray.Length;i++)
+ {
+ int.TryParse(EffectValues2StringArray[i],out EffectValues2[i]);
+ }
+ }
- int.TryParse(tables[78],out EffectId);
+ int.TryParse(tables[15],out EffectID3);
- int.TryParse(tables[79],out ExplotionEffectId);
+ if (tables[16].Contains("["))
+ {
+ EffectValues3 = JsonMapper.ToObject<int[]>(tables[16]);
+ }
+ else
+ {
+ string[] EffectValues3StringArray = tables[16].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
+ EffectValues3 = new int[EffectValues3StringArray.Length];
+ for (int i=0;i<EffectValues3StringArray.Length;i++)
+ {
+ int.TryParse(EffectValues3StringArray[i],out EffectValues3[i]);
+ }
+ }
- float.TryParse(tables[80],out FlyTime);
+ int.TryParse(tables[17],out ConnSkill);
+
+ if (tables[18].Contains("["))
+ {
+ EnhanceSkillList = JsonMapper.ToObject<int[]>(tables[18]);
+ }
+ else
+ {
+ string[] EnhanceSkillListStringArray = tables[18].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
+ EnhanceSkillList = new int[EnhanceSkillListStringArray.Length];
+ for (int i=0;i<EnhanceSkillListStringArray.Length;i++)
+ {
+ int.TryParse(EnhanceSkillListStringArray[i],out EnhanceSkillList[i]);
+ }
+ }
+
+ int.TryParse(tables[19],out FightPower);
+
+ int.TryParse(tables[20],out StartupFrames);
+
+ int.TryParse(tables[21],out ActiveFrames);
+
+ int.TryParse(tables[22],out RecoveryFrames);
+
+ int.TryParse(tables[23],out LoopCount);
+
+ int.TryParse(tables[24],out CastPosition);
+
+ int.TryParse(tables[25],out CastIndexNum);
+
+ float.TryParse(tables[26],out CastDistance);
+
+ DamageDivide = JsonMapper.ToObject<int[][]>(tables[27].Replace("(", "[").Replace(")", "]"));
+
+ int.TryParse(tables[28],out BulletEffectId);
+
+ int.TryParse(tables[29],out BulletPos);
+
+ int.TryParse(tables[30],out BulletPath);
+
+ int.TryParse(tables[31],out BulletFlyTime);
+
+ int.TryParse(tables[32],out ExplosionEffectId);
+
+ int.TryParse(tables[33],out ExplosionPos);
+
+ SkillMotionName = tables[34];
+
+ int.TryParse(tables[35],out EffectId);
+
+ int.TryParse(tables[36],out EffectPos);
+
+ int.TryParse(tables[37],out EffectType);
}
catch (Exception exception)
{
diff --git a/Main/Config/PartialConfigs/SkillConfig.Partial.cs b/Main/Config/PartialConfigs/SkillConfig.Partial.cs
index 7e5d604..75f1834 100644
--- a/Main/Config/PartialConfigs/SkillConfig.Partial.cs
+++ b/Main/Config/PartialConfigs/SkillConfig.Partial.cs
@@ -14,8 +14,17 @@
{
public SkillType skillType;
public SkillCastMode castMode;
+
public SkillEffectType effectType;
- public SkillEffectAnchor effectAnchor;
+
+ protected override void OnConfigParseCompleted()
+ {
+ base.OnConfigParseCompleted();
+
+ skillType = (SkillType)SkillType;
+ castMode = (SkillCastMode)CastPosition;
+ effectType = (SkillEffectType)EffectType;
+ }
public MotionName GetMotionName()
{
diff --git a/Main/Core/NetworkPackage/CustomServerPack.meta b/Main/Core/NetworkPackage/CustomServerPack.meta
new file mode 100644
index 0000000..09e475e
--- /dev/null
+++ b/Main/Core/NetworkPackage/CustomServerPack.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 65490d004b625604d8f1e94f7547d5c1
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/Core/NetworkPackage/CustomServerPack/CustomB421ActionPack.cs b/Main/Core/NetworkPackage/CustomServerPack/CustomB421ActionPack.cs
new file mode 100644
index 0000000..0082938
--- /dev/null
+++ b/Main/Core/NetworkPackage/CustomServerPack/CustomB421ActionPack.cs
@@ -0,0 +1,25 @@
+
+using System.Collections.Generic;
+using UnityEngine;
+
+public class CustomB421ActionPack : GameNetPackBasic
+{
+ public string guid;
+
+ public Queue<GameNetPackBasic> actionPacks = new Queue<GameNetPackBasic>();
+
+ public static CustomB421ActionPack CreateB421ActionPack(string _guid, List<GameNetPackBasic> packList)
+ {
+ // 鍚堝苟涓�涓嬭繖涓鑹茬殑琛屽姩鍐呭鐨勬妧鑳� 鍒朵綔鎴怌ustomB421ActionPack
+ List<GameNetPackBasic> combinedPackList = CustomHB426CombinePack.CombineToSkillPackFromList(_guid, packList);
+ CustomB421ActionPack actionPack = new CustomB421ActionPack();
+ actionPack.guid = _guid;
+ actionPack.actionPacks = new Queue<GameNetPackBasic>(combinedPackList);
+ return actionPack;
+ }
+
+ public void Distribute()
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta b/Main/Core/NetworkPackage/CustomServerPack/CustomB421ActionPack.cs.meta
similarity index 83%
copy from Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
copy to Main/Core/NetworkPackage/CustomServerPack/CustomB421ActionPack.cs.meta
index 9310e5e..986cbc4 100644
--- a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
+++ b/Main/Core/NetworkPackage/CustomServerPack/CustomB421ActionPack.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 3d40a22572b07c24e9eefb52db0bfd87
+guid: 436c83b5afc693841b2b3f51ec07d020
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs b/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs
new file mode 100644
index 0000000..cfa8274
--- /dev/null
+++ b/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs
@@ -0,0 +1,150 @@
+
+using System.Collections.Generic;
+using UnityEngine;
+
+public class CustomHB426CombinePack : GameNetPackBasic
+{
+
+ protected HB426_tagSCTurnFightTag startTag;
+
+ protected HB426_tagSCTurnFightTag endTag;
+
+ public int fromIndex;
+
+ public int toIndex;
+
+ public string guid;
+
+ public List<GameNetPackBasic> packList = new List<GameNetPackBasic>();
+
+ public override void ReadFromBytes(byte[] vBytes)
+ {
+ base.ReadFromBytes(vBytes);
+ }
+
+ public void SetHB426End(int _toIndex, HB426_tagSCTurnFightTag _endTag)
+ {
+ if (endTag.Sign != 1)
+ {
+ Debug.LogError("HB426_tagSCTurnFightTag Sign must be 1 for end tag, but got: " + endTag.Sign);
+ return;
+ }
+ endTag = _endTag;
+
+ packList = CombineToSkillPackFromList(guid, packList);
+ }
+
+
+ public void SetHB426Start(int _fromIndex, HB426_tagSCTurnFightTag tag)
+ {
+ if (tag.Sign != 0)
+ {
+ Debug.LogError("HB426_tagSCTurnFightTag Sign must be 0 for start tag, but got: " + tag.Sign);
+ return;
+ }
+ fromIndex = _fromIndex;
+ startTag = tag;
+ }
+
+ public void AddPack(GameNetPackBasic pack)
+ {
+ if (startTag == null)
+ {
+ Debug.LogError("startTag is null, please set it first.");
+ return;
+ }
+
+ packList.Add(pack);
+ }
+
+ public bool IsEndPack(HB426_tagSCTurnFightTag tag)
+ {
+ if (endTag == null)
+ {
+ Debug.LogError("endTag is null, please set it first.");
+ return false;
+ }
+
+ return endTag.Tag == tag.Tag && endTag.Sign == 1;
+ }
+
+
+ public static List<GameNetPackBasic> CombineToSkillPackFromList(string _guid, List<GameNetPackBasic> b421SeriesPackList)
+ {
+ CustomHB426CombinePack combinePack = null;
+ for (int i = 0; i < b421SeriesPackList.Count; i++)
+ {
+ var pack = b421SeriesPackList[i];
+ if (pack is HB426_tagSCTurnFightTag)
+ {
+ var tag = pack as HB426_tagSCTurnFightTag;
+ if (null == combinePack)
+ {
+ combinePack = new CustomHB426CombinePack();
+ combinePack.guid = _guid;
+ combinePack.SetHB426Start(i, tag);
+ }
+ else
+ {
+ if (combinePack.IsEndPack(tag))
+ {
+ combinePack.SetHB426End(i, tag);
+ break;
+ }
+ }
+ }
+
+ if (null != combinePack)
+ {
+ combinePack.AddPack(pack);
+ }
+ }
+
+ List<GameNetPackBasic> newPackList = new List<GameNetPackBasic>();
+
+ if (null != combinePack)
+ {
+ // 鎶�鑳藉寘鍓嶉潰鐨勫寘锛堜笉鍖呮嫭b426鐨勫紑濮嬫爣绛撅級
+ for (int i = 0; i < combinePack.fromIndex; i++)
+ {
+ newPackList.Add(b421SeriesPackList[i]);
+ }
+
+ // 鎶婂悎骞剁殑鎶�鑳藉寘鍔犺繘鏉�
+ newPackList.Add(combinePack);
+
+ // 鎶�鑳藉寘鍚庨潰鐨勫寘锛堜笉鍖呮嫭b426鐨勭粨鏉熸爣绛撅級
+ for (int i = combinePack.toIndex + 1; i < b421SeriesPackList.Count; i++)
+ {
+ newPackList.Add(b421SeriesPackList[i]);
+ }
+
+ return CombineToSkillPackFromList(_guid, newPackList);
+
+ }
+ else
+ {
+ return b421SeriesPackList;
+ }
+
+ }
+
+ public void Distribute()
+ {
+ BattleField battleField = BattleManager.Instance.GetBattleField(guid);
+
+ if (null == battleField)
+ {
+ Debug.LogError("BattleField not found for guid: " + guid);
+ return;
+ }
+
+ if (startTag.Tag.StartsWith("Skill_"))
+ {
+ H0604_tagUseSkillAttack skill = packList[0] as H0604_tagUseSkillAttack;
+ BattleObject caster = battleField.battleObjMgr.GetBattleObject((int)skill.ObjID);
+ SkillRecordAction skillRecordAction = new SkillRecordAction(battleField, caster, skill, packList);
+ battleField.PlayRecord(skillRecordAction);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta b/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs.meta
similarity index 83%
rename from Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
rename to Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs.meta
index 9310e5e..3bb5754 100644
--- a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
+++ b/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 3d40a22572b07c24e9eefb52db0bfd87
+guid: 34030b38537bbf6498977ece22d729b5
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0418_tagObjInfoRefresh.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0418_tagObjInfoRefresh.cs
index aa62164..20f4fe7 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0418_tagObjInfoRefresh.cs
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0418_tagObjInfoRefresh.cs
@@ -31,7 +31,7 @@
{
if (PlayerDatas.Instance.PlayerId == vNetData.ObjID)
{
-
+ // 鎴樻枟涓鏋滄垬閿ゆ秷鑰� 鐣岄潰鑷繁鍘荤洃鍚秷鎭�
PlayerDatas.Instance.RefreshPlayerData(vNetData);
}
else
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB426_tagSCTurnFightTag.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB426_tagSCTurnFightTag.cs
new file mode 100644
index 0000000..21116ae
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB426_tagSCTurnFightTag.cs
@@ -0,0 +1,11 @@
+using UnityEngine;
+using System.Collections;
+
+// B4 26 鍥炲悎鎴樻枟鏍囩 #tagSCTurnFightTag
+
+public class DTCB426_tagSCTurnFightTag : DtcBasic {
+ public override void Done(GameNetPackBasic vNetPack) {
+ base.Done(vNetPack);
+ HB426_tagSCTurnFightTag vNetData = vNetPack as HB426_tagSCTurnFightTag;
+ }
+}
diff --git a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB426_tagSCTurnFightTag.cs.meta
similarity index 83%
copy from Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
copy to Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB426_tagSCTurnFightTag.cs.meta
index 9310e5e..33001bf 100644
--- a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB426_tagSCTurnFightTag.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 3d40a22572b07c24e9eefb52db0bfd87
+guid: 77047853a6f0b1f4d879ad8dbf205761
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/Core/NetworkPackage/ServerPack/HB4_FightDefine/HB426_tagSCTurnFightTag.cs b/Main/Core/NetworkPackage/ServerPack/HB4_FightDefine/HB426_tagSCTurnFightTag.cs
new file mode 100644
index 0000000..6918090
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HB4_FightDefine/HB426_tagSCTurnFightTag.cs
@@ -0,0 +1,21 @@
+using UnityEngine;
+using System.Collections;
+
+// B4 26 鍥炲悎鎴樻枟鏍囩 #tagSCTurnFightTag
+
+public class HB426_tagSCTurnFightTag : GameNetPackBasic {
+ public byte Len;
+ public string Tag; // 鏍囩锛岄噴鏀炬妧鑳界殑鏍囩鏍煎紡: Skill_objID_skillID锛屽叾浠栨爣绛炬牸寮忓彲鍐嶆墿灞�
+ public byte Sign; // 0-鏍囩澶达紱1-鏍囩灏撅紱
+
+ public HB426_tagSCTurnFightTag () {
+ _cmd = (ushort)0xB426;
+ }
+
+ public override void ReadFromBytes (byte[] vBytes) {
+ TransBytes (out Len, vBytes, NetDataType.BYTE);
+ TransBytes (out Tag, vBytes, NetDataType.Chars, Len);
+ TransBytes (out Sign, vBytes, NetDataType.BYTE);
+ }
+
+}
diff --git a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta b/Main/Core/NetworkPackage/ServerPack/HB4_FightDefine/HB426_tagSCTurnFightTag.cs.meta
similarity index 83%
copy from Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
copy to Main/Core/NetworkPackage/ServerPack/HB4_FightDefine/HB426_tagSCTurnFightTag.cs.meta
index 9310e5e..cde0156 100644
--- a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
+++ b/Main/Core/NetworkPackage/ServerPack/HB4_FightDefine/HB426_tagSCTurnFightTag.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 3d40a22572b07c24e9eefb52db0bfd87
+guid: 93503b0ea916f594c9c782f20b013bbf
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/System/Battle/BattleConst.cs b/Main/System/Battle/BattleConst.cs
new file mode 100644
index 0000000..a29c672
--- /dev/null
+++ b/Main/System/Battle/BattleConst.cs
@@ -0,0 +1,8 @@
+
+
+public static class BattleConst
+{
+ public const int BattleStartEffectID = 1001; // Example effect ID for battle start
+
+ public const int skillMotionFps = 30;
+}
\ No newline at end of file
diff --git a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta b/Main/System/Battle/BattleConst.cs.meta
similarity index 83%
copy from Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
copy to Main/System/Battle/BattleConst.cs.meta
index 9310e5e..5cfdd12 100644
--- a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
+++ b/Main/System/Battle/BattleConst.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 3d40a22572b07c24e9eefb52db0bfd87
+guid: eb7d9bf2b8aa54f47b15a3b378eb38b0
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/System/Battle/BattleEffectMgr.cs b/Main/System/Battle/BattleEffectMgr.cs
index d6ce2a6..7d78d36 100644
--- a/Main/System/Battle/BattleEffectMgr.cs
+++ b/Main/System/Battle/BattleEffectMgr.cs
@@ -49,7 +49,7 @@
}
EffectPlayer effectPlayer = EffectPlayer.Create(effectId, parent);
- effectPlayer.onDestroy = OnEffectDestroy;
+ effectPlayer.onDestroy += OnEffectDestroy;
if (effectPlayer != null)
{
effectDict[effectId].Add(effectPlayer);
diff --git a/Main/System/Battle/BattleField/BattleField.cs b/Main/System/Battle/BattleField/BattleField.cs
index 00b4f8a..d2006d5 100644
--- a/Main/System/Battle/BattleField/BattleField.cs
+++ b/Main/System/Battle/BattleField/BattleField.cs
@@ -18,7 +18,7 @@
public int round = 0;
- public string guid = string.Empty;
+ public string guid = string.Empty;//绛変簬string.Empty鐨勬椂鍊欎唬琛ㄦ槸StoryBattleField 鏄富绾垮壇鏈�
public int MapID = 0;
@@ -90,7 +90,7 @@
guid = _guid;
}
- public virtual void Init(int _MapID, int _FuncLineID, JsonData _extendData,
+ public virtual void Init(int _MapID, int _FuncLineID, JsonData _extendData,
List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList)
{
MapID = _MapID;
@@ -108,7 +108,16 @@
battleRootNodeGO.name = this.GetType().Name;
battleObjMgr = new BattleObjMgr();
- battleObjMgr.Init(this, redTeamList[redTeamIndex], blueTeamList[blueTeamIndex]);
+ if (blueTeamList == null)
+ {
+ battleObjMgr.Init(this, redTeamList[redTeamIndex], null);
+ battleObjMgr.HaveRest(BattleCamp.Red);
+ }
+ else
+ {
+ battleObjMgr.Init(this, redTeamList[redTeamIndex], blueTeamList[blueTeamIndex]);
+ }
+
battleEffectMgr = new BattleEffectMgr();
battleEffectMgr.Init(this);
battleTweenMgr = new BattleTweenMgr();
@@ -206,7 +215,7 @@
battleTweenMgr.PauseGame();
}
- public virtual void TurnFightState(int TurnNum, int State,
+ public virtual void TurnFightState(int TurnNum, int State,
uint FuncLineID, JsonData extendData)
{
round = TurnNum;
@@ -219,8 +228,37 @@
public virtual void OnTurnFightState(int turnNum, int State, int FuncLineID, JsonData extendData)
{
-
+ // 鍒囨崲鍥炲悎
+ // 鏄瘡涓垬鏂楀紑濮�/姣忎釜鍥炲悎鐨勭涓�涓垬鏂楀寘
+ // MapID = MapID
+
+ // MapID; // 鑷畾涔夊湴鍥綢D锛屽彲鐢ㄤ簬缁戝畾鎴樻枟鍦板浘鍦烘櫙鍔熻兘锛堝涓荤嚎鍏冲崱銆佷富绾縝oss銆佺埇濉斻�佺珵鎶�鍦虹瓑锛�
+ // FuncLineID; // MapID瀵瑰簲鐨勬墿灞曞�硷紝濡傚叿浣撴煇涓叧鍗$瓑 绔犺妭*10000+鍏冲崱缂栧彿*100+绗瑇娉紝濡傜涓�绔狅紝绗�10鍏冲崱鐨刡oss鍊� = 11001
+ // State; // 0-璧峰鐘舵�佹爣璁帮紱1-鍑嗗瀹屾瘯锛�2-鎴樻枟涓紱3-鎴樻枟缁撴潫锛�4-缁撶畻濂栧姳锛�5-缁撴潫鐘舵�佹爣璁�
+ // TurnNum; // 褰撳墠杞
+ // Len;
+ // Msg; //size = Len +
+
+ // 鍋氳〃鐜�
+ if (turnNum == 1)
+ {
+ if (State == 2)
+ {
+ Debug.Log("鎴樻枟寮�濮�");
+ }
+ }
+ else
+ {
+ Debug.Log("鎴樻枟鍥炲悎 : " + turnNum + "锛岀姸鎬� " + State);
+ }
+
+
+
+ // 鍋氫竴涓狝ction 閫氱煡UI缈讳笅鐗屽瓙 鐒跺悗缁撴潫Action
+ // TurnFightStateAction turnFightStateAction = new TurnFightStateAction(this, turnNum, State, FuncLineID, extendData);
+ // recordPlayer.PlayRecord(turnFightStateAction);
}
+
public void ObjInfoRefresh(H0418_tagObjInfoRefresh _refreshInfo)
{
@@ -284,6 +322,17 @@
}
}
+ public RectTransform GetTeamNode(BattleCamp battleCamp, int index)
+ {
+ if (battleCamp == BattleCamp.Red)
+ {
+ return battleRootNode.redTeamNodeList[index].transform as RectTransform;
+ }
+ else
+ {
+ return battleRootNode.blueTeamNodeList[index].transform as RectTransform;
+ }
+ }
public bool IsRoundReachLimit()
{
@@ -303,4 +352,31 @@
}
}
}
+
+ public void StartBattle(Action onMoveComplete)
+ {
+ List<BattleObject> redTeam = battleObjMgr.GetBattleObjList(BattleCamp.Red);
+
+ Tween tween = null;
+
+ foreach (var obj in redTeam)
+ {
+ obj.motionBase.PlayAnimation(MotionName.run, true);
+ RectTransform trans = obj.heroGo.transform as RectTransform;
+ tween = trans.DOMove(obj.GetAliasTeamNode().position, 0.5f).SetEase(Ease.Linear);
+ battleTweenMgr.OnPlayTween(tween);
+ }
+
+ tween.onComplete = () =>
+ {
+ foreach (var obj in redTeam)
+ {
+ obj.motionBase.PlayAnimation(MotionName.idle, true);
+ }
+
+ // 鎾斁鎴樻枟寮�濮嬬殑鐗规晥
+ var efplayer = battleEffectMgr.PlayEffect(0, BattleConst.BattleStartEffectID, battleRootNode.transform);
+ efplayer.onDestroy += a => onMoveComplete();
+ };
+ }
}
\ No newline at end of file
diff --git a/Main/System/Battle/BattleField/RecordActions/BattleStartAction.cs b/Main/System/Battle/BattleField/RecordActions/BattleStartAction.cs
new file mode 100644
index 0000000..6d098f1
--- /dev/null
+++ b/Main/System/Battle/BattleField/RecordActions/BattleStartAction.cs
@@ -0,0 +1,39 @@
+using UnityEngine;
+using System.Collections.Generic;
+
+public class BattleStartAction : RecordAction
+{
+ private bool isRun = false;
+
+ public BattleStartAction(BattleField _battleField, BattleObject _caster, H0604_tagUseSkillAttack vNetData)
+ : base(RecordActionType.BattleStart, _battleField, _caster)
+ {
+
+ }
+
+ public override bool IsFinished()
+ {
+ return isFinish;
+ }
+
+
+ public override void Run()
+ {
+ base.Run();
+
+ if (isRun)
+ return;
+
+ // 闅愯棌閮ㄥ垎UI
+ EventBroadcast.Instance.Broadcast(EventName.DISPLAY_BATTLE_UI, battleField.guid, false);
+
+ battleField.StartBattle(() =>
+ {
+ isFinish = true;
+ // 瀹屾垚灏卞紑濮嬫樉绀篣I
+ EventBroadcast.Instance.Broadcast(EventName.DISPLAY_BATTLE_UI, battleField.guid, true);
+ });
+
+ isRun = true;
+ }
+}
\ No newline at end of file
diff --git a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta b/Main/System/Battle/BattleField/RecordActions/BattleStartAction.cs.meta
similarity index 83%
copy from Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
copy to Main/System/Battle/BattleField/RecordActions/BattleStartAction.cs.meta
index 9310e5e..d331651 100644
--- a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
+++ b/Main/System/Battle/BattleField/RecordActions/BattleStartAction.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 3d40a22572b07c24e9eefb52db0bfd87
+guid: 6cc7c2a8cefccb64f93a1728173ffbae
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs b/Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs
index 74ba476..0c11ba2 100644
--- a/Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs
+++ b/Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs
@@ -7,10 +7,10 @@
private bool isCast = false;
- public SkillRecordAction(BattleField _battleField, BattleObject _caster, H0604_tagUseSkillAttack vNetData)
+ public SkillRecordAction(BattleField _battleField, BattleObject _caster, H0604_tagUseSkillAttack vNetData, List<GameNetPackBasic> packList)
: base(RecordActionType.Skill, _battleField, _caster)
{
- skillBase = SkillFactory.CreateSkill(_caster, vNetData, _battleField);
+ skillBase = SkillFactory.CreateSkill(_caster, vNetData, packList, _battleField);
}
public override bool IsFinished()
diff --git a/Main/System/Battle/BattleManager.cs b/Main/System/Battle/BattleManager.cs
index 5697047..11e5d9e 100644
--- a/Main/System/Battle/BattleManager.cs
+++ b/Main/System/Battle/BattleManager.cs
@@ -17,25 +17,41 @@
base.Init();
// StartStoryBattle();
logicUpdate.Start(Run);
+ DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
}
public override void Release()
{
base.Release();
logicUpdate.Destroy();
+ DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk;
}
- public void CreateStoryBattle(int MapID, int FuncLineID, JsonData extendData, List<TeamBase> redTeamList, List<TeamBase> blueTeamList)
+ protected void OnPlayerLoginOk()
+ {
+ ulong exAttr1 = PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.ExAttr1);
+ ulong exAttr2 = PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.ExAttr2);
+
+ int MapID = 0;
+ int FuncLineID = (int)exAttr2;
+
+ CreateStoryBattle(MapID, FuncLineID, null, null);
+ }
+
+ // 涓婃父鎴忕殑鏃跺�� 绛夋垬鏂楅樀瀹规洿鏂板畬姣� 鍒涘缓涓荤嚎鍓湰 鏁屾柟鐨勬暟鎹彲浠ユ殏鏃朵笉鏄剧ず 宸辨柟琛ㄧ幇涓虹潯瑙�
+ // 濡傛灉涓荤嚎鍓湰瀛樺湪 閭d箞缁存寔褰撳墠鐨勫壇鏈笉鍙�
+ protected void CreateStoryBattle(int MapID, int FuncLineID, JsonData extendData, List<TeamBase> blueTeamList = null)
{
if (null == storyBattleField)
{
storyBattleField = new StoryBattleField();
+
+ storyBattleField.guid = string.Empty; // 涓荤嚎鍓湰鐨刧uid涓虹┖
+ var redTeamList = new List<TeamBase>();
+ redTeamList.Add(TeamManager.Instance.GetTeam(TeamType.Story));
+ storyBattleField.Init(MapID, FuncLineID, extendData, redTeamList, blueTeamList);
}
-
- storyBattleField.Init(MapID, FuncLineID, extendData, redTeamList, blueTeamList);
}
-
-
public void OnBattleClose(BattleField _battleField)
{
@@ -43,7 +59,7 @@
}
-#region 鎴柇缃戠粶娲惧彂鍖� 鍙敹鍏ュ綋鍓嶅寘鐨勫悗缁�
+#region 鎴柇缃戠粶娲惧彂鍖� 鍙敹鍏ュ綋鍓嶅寘鐨勫悗缁� b425鏄富绾跨殑 闈炰富绾跨殑鍖呭苟涓嶄細璧癰425
private bool allow = true;
private Queue<GameNetPackBasic> packQueue = new Queue<GameNetPackBasic>();
@@ -62,6 +78,10 @@
else
{
allow = true;
+
+ // 鍙戦�佹垬鎶ョ墖娈电粨鏉熷寘
+ AnalysisPackQueueAndDistribute();
+
}
}
else
@@ -75,12 +95,80 @@
return allow;
}
+ protected void AnalysisPackQueueAndDistribute()
+ {
+ List<GameNetPackBasic> packQueueSnapshot = new List<GameNetPackBasic>(packQueue);
+
+ List<GameNetPackBasic> newPackList = new List<GameNetPackBasic>();
+
+ // 杩欓噷宸茬粡鏄寜鐓equeue鐨勯『搴忎簡
+ for (int i = 0; i < packQueueSnapshot.Count; i++)
+ {
+ GameNetPackBasic pack = packQueueSnapshot[i];
+
+ // 纰板埌B421 鎴柇 寰�涓嬫敹闆哹421閲岀殑鍏ㄩ儴鍐呭
+ if (pack is HB421_tagMCTurnFightObjAction)
+ {
+ HB421_tagMCTurnFightObjAction b421Pack = pack as HB421_tagMCTurnFightObjAction;
+
+ List<GameNetPackBasic> b421PackList = new List<GameNetPackBasic>();
+
+ i++; // 璺宠繃褰撳墠鐨凚421鍖�
+
+ for (; i < packQueueSnapshot.Count; i++)
+ {
+ GameNetPackBasic nextPack = packQueueSnapshot[i];
+ if (nextPack is HB421_tagMCTurnFightObjAction)
+ {
+ // 閬囧埌浜嗗叾浠朆421 鍚姩瑙掕壊鐨凙ction寮�濮嬶紝
+ // B421鍚庡啀纰板埌B421涓�瀹氭槸鏈変竴涓汉鐨勮鍔ㄧ粨鏉熶簡 鍥為��涓�涓綅缃�
+ i--;
+ break;
+ }
+ else
+ {
+ b421PackList.Add(nextPack);
+ }
+ }
+
+ // 鍙兘娌$敤浜� 涓昏灏辨槸鍒╃敤涓�涓媠kill鐨刢ombine 鏆傜暀 鐪嬩箣鍚庤繕鏈夋病鏈夊埆鐨勯渶姹�
+ CustomB421ActionPack actionPack = CustomB421ActionPack.CreateB421ActionPack(GetGUID(b421Pack.packUID), b421PackList);
+
+ while (actionPack.actionPacks.Count > 0)
+ {
+ GameNetPackBasic actionPackItem = actionPack.actionPacks.Dequeue();
+ newPackList.Add(actionPackItem);
+ }
+ }
+ else
+ {
+ newPackList.Add(pack);
+ }
+ }
+
+
+ // b421璺焍426鐨勫寘宸茬粡澶勭悊瀹屼簡
+ packQueue = new Queue<GameNetPackBasic>(newPackList);
+
+ DistributeNextPackage();
+ }
+
public bool DistributeNextPackage()
{
if (packQueue.Count > 0)
{
GameNetPackBasic pack = packQueue.Dequeue();
- PackageRegedit.Distribute(pack);
+
+ if (pack is CustomHB426CombinePack)
+ {
+ CustomHB426CombinePack combinePack = pack as CustomHB426CombinePack;
+ combinePack.Distribute();
+ }
+ else
+ {
+ PackageRegedit.Distribute(pack);
+ }
+
return true;
}
else
@@ -191,15 +279,18 @@
battleField.Destroy();
}
-
- battleField = BattleFieldFactory.CreateBattleField(guid, MapID, FuncLineID, extendData, redTeamList, blueTeamList);
+ if (string.IsNullOrEmpty(guid))
+ {
+ battleField = storyBattleField;
+ }
+ else
+ {
+ battleField = BattleFieldFactory.CreateBattleField(guid, MapID, FuncLineID, extendData, redTeamList, blueTeamList);
+ }
battleFields.Add(guid, battleField);
- if (string.Empty == guid)
- {
- storyBattleField = battleField as StoryBattleField;
- }
+ battleField.Init(MapID, FuncLineID, extendData, redTeamList, blueTeamList);
return battleField;
}
diff --git a/Main/System/Battle/BattleObject/BattleObjMgr.cs b/Main/System/Battle/BattleObject/BattleObjMgr.cs
index 0141bdc..2999e0b 100644
--- a/Main/System/Battle/BattleObject/BattleObjMgr.cs
+++ b/Main/System/Battle/BattleObject/BattleObjMgr.cs
@@ -27,16 +27,21 @@
protected void CreateTeam(List<GameObject> posNodeList, Dictionary<int, BattleObject> campDict, TeamBase teamBase, BattleCamp _Camp)
{
DestroyTeam(campDict);
- for (int i = 0; i < teamBase.teamHeros.Length; i++)
+ if (teamBase == null)
{
- TeamHero teamHero = teamBase.teamHeros[i];
- if (teamHero != null)
- {
- BattleObject battleObj = BattleObjectFactory.CreateBattleObject(battleField, posNodeList, teamHero, _Camp);
- allBattleObjDict.Add(battleObj.ObjID, battleObj);
- campDict.Add(teamHero.positionNum, battleObj);
- }
+ return;
}
+
+ for (int i = 0; i < teamBase.serverHeroes.Length; i++)
+ {
+ TeamHero teamHero = teamBase.serverHeroes[i];
+ if (teamHero != null)
+ {
+ BattleObject battleObj = BattleObjectFactory.CreateBattleObject(battleField, posNodeList, teamHero, _Camp);
+ allBattleObjDict.Add(battleObj.ObjID, battleObj);
+ campDict.Add(teamHero.positionNum, battleObj);
+ }
+ }
}
public BattleObject GetBattleObject(int objId)
@@ -46,6 +51,18 @@
return battleObj;
}
return null;
+ }
+
+ public List<BattleObject> GetBattleObjList(BattleCamp _Camp)
+ {
+ if (_Camp == BattleCamp.Red)
+ {
+ return redCampList;
+ }
+ else
+ {
+ return blueCampList;
+ }
}
public List<BattleObject> GetBattleObjList(H0604_tagUseSkillAttack tagUseSkillAttack)
@@ -78,6 +95,26 @@
}
+ // 绌洪棽鐘舵��
+ public void HaveRest(BattleCamp _Camp)
+ {
+ // 浼戞伅鐘舵��
+ if (_Camp == BattleCamp.Red)
+ {
+ foreach (var item in redCampDict.Values)
+ {
+ item.HaveRest();
+ }
+ }
+ else
+ {
+ foreach (var item in blueCampDict.Values)
+ {
+ item.HaveRest();
+ }
+ }
+ }
+
public void Release()
{
DestroyTeam(redCampDict);
diff --git a/Main/System/Battle/BattleObject/BattleObject.cs b/Main/System/Battle/BattleObject/BattleObject.cs
index 00862e4..9aa12be 100644
--- a/Main/System/Battle/BattleObject/BattleObject.cs
+++ b/Main/System/Battle/BattleObject/BattleObject.cs
@@ -269,7 +269,7 @@
heroGo.SetActive(false);
}
- // 浼ゅ杩樿鐪� 鏄惁闂伩 鏆村嚮 and so on 闇�瑕佹湁涓�涓狣amageType 鏈嶅姟鍣ㄥ簲璇ヤ細缁�
+ // 浼ゅ杩樿鐪� 鏄惁闂伩 鏆村嚮 and so on 闇�瑕佹湁涓�涓狣amageType 鏈嶅姟鍣ㄥ簲璇ヤ細缁�
protected virtual void PopDamage(long curHp, List<long> damageValues, int attackType)
{
// 鍏跺疄搴旇閫氱煡鍑哄幓缁橴I鐣岄潰瑙h�� 璁︰I鐣岄潰鑷繁鏉ユ樉绀虹殑 YYL TODO
@@ -294,6 +294,18 @@
return battleField.GetTeamNode(Camp == BattleCamp.Red ? BattleCamp.Blue : BattleCamp.Red);
}
+ public BattleCamp GetEnemyCamp()
+ {
+ return Camp == BattleCamp.Red ? BattleCamp.Blue : BattleCamp.Red;
+ }
+
+ public void HaveRest()
+ {
+ // YYL TODO
+ // 浼戞伅鐘舵��
+ // 澶氫竴涓獄zz鐨勪竴涓壒鏁�
+ }
+
#if UNITY_EDITOR_STOP_USING
public void EditorRevive()
{
diff --git a/Main/System/Battle/Bullet/Bullet.cs b/Main/System/Battle/Bullet/Bullet.cs
deleted file mode 100644
index e9f9529..0000000
--- a/Main/System/Battle/Bullet/Bullet.cs
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-using System;
-using System.Collections.Generic;
-using UnityEngine;
-
-public class Bullet
-{
- protected BattleObject caster;
-
- protected SkillConfig skillConfig;
-
- protected List<H0604_tagUseSkillAttack.tagSkillHurtObj> hurtList;
-
- protected BattleField battleField;
-
- protected Action onComplete;
-
-
- protected int curFrame = 0;
-
-
- public Bullet(BattleObject _caster, SkillConfig skillConfig,
- List<H0604_tagUseSkillAttack.tagSkillHurtObj> hurtList, BattleField battleField, Action _onComplete)
- {
- this.caster = _caster;
- this.skillConfig = skillConfig;
- this.hurtList = hurtList;
- this.battleField = battleField;
- this.onComplete = _onComplete;
-
- }
-
- public virtual void Start()
- {
-
- }
- public virtual void Run()
- {
-
- }
-
- protected virtual void PlayEffect(int effectId, SkillEffectAnchor target)
- {
- // 杩橀渶瑕丼oAttackType鏉ュ垽鏂槸鎬庢牱鐨勭壒鏁�
-
- switch (target)
- {
- // 鐗规晥鍏堜笉绠� TODO YYL 绛夌壒鏁堥噸鏂板啓杩囦竴閬嶅悗鍐嶅啓
-
- case SkillEffectAnchor.Caster:
- // caster.PlayEffect(effectId);
- break;
- case SkillEffectAnchor.Target:
- // caster.teamHero.PlayEffectOnAllies(effectId);
- break;
- case SkillEffectAnchor.AlliesCenter:
- // caster.teamHero.PlayEffectOnAlliesCenter(effectId);
- break;
- case SkillEffectAnchor.EnemiesCenter:
- // caster.teamHero.PlayEffectOnEnemiesCenter(effectId);
- break;
- default:
- Debug.LogWarning($"Unhandled effect target: {target}");
- break;
- }
- }
-
-
- protected virtual void PlayAudio(int audioId)
- {
- SoundPlayer.Instance.PlayUIAudio(audioId);
- }
-
- protected virtual void ShakeScreen(int intensity)
- {
- // Implement screen shaking logic here
- Debug.Log($"Shaking screen with intensity: {intensity}");
- }
-
- protected virtual void PopDamage()
- {
-
- }
-
- protected virtual void OnSkillComplete()
- {
- onComplete?.Invoke();
- }
-
- protected virtual void PlaySkill(int skillId)
- {
-
- }
-}
\ No newline at end of file
diff --git a/Main/System/Battle/Bullet/Bullet.cs.meta b/Main/System/Battle/Bullet/Bullet.cs.meta
deleted file mode 100644
index 1765184..0000000
--- a/Main/System/Battle/Bullet/Bullet.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 8d4d5668dea0ef64da48bab26e795fac
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Main/System/Battle/Bullet/BulletFactory.cs b/Main/System/Battle/Bullet/BulletFactory.cs
deleted file mode 100644
index a776873..0000000
--- a/Main/System/Battle/Bullet/BulletFactory.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-
-using System;
-using System.Collections.Generic;
-using UnityEngine;
-
-public static class BulletFactory
-{
- public static Bullet CreateBullet(BattleObject _caster, SkillConfig skillConfig, List<H0604_tagUseSkillAttack.tagSkillHurtObj> hurtList, BattleField battleField, Action _onComplete)
- {
- return null;
- }
-}
\ No newline at end of file
diff --git a/Main/System/Battle/Bullet/BulletFactory.cs.meta b/Main/System/Battle/Bullet/BulletFactory.cs.meta
deleted file mode 100644
index 8aa3b6e..0000000
--- a/Main/System/Battle/Bullet/BulletFactory.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: b007b1040446daf4db9c2a14b6d25b1d
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Main/System/Battle/Bullet/CloseCombatBullet.cs b/Main/System/Battle/Bullet/CloseCombatBullet.cs
deleted file mode 100644
index 90467cd..0000000
--- a/Main/System/Battle/Bullet/CloseCombatBullet.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-
-
-using System;
-using System.Collections.Generic;
-using UnityEngine;
-
-// 杩戞垬鏀诲嚮
-public class CloseCombatBullet : Bullet
-{
-
- protected int keyFrameIndex = 0;
-
- protected int frame = 0;
-
- public CloseCombatBullet(BattleObject _caster, SkillConfig _skillConfig, List<H0604_tagUseSkillAttack.tagSkillHurtObj> _hurtList, BattleField _battleField, Action _onComplete)
- : base(_caster, _skillConfig, _hurtList, _battleField, _onComplete)
- {
-
- }
-
-
- public override void Start()
- {
- base.Start();
-
- // 鐢╯killconfig.xp鏉ュ垽鏂笉淇濋櫓
- MotionName motionName = GetMotionName(skillConfig.SkillMotionName);
- caster.motionBase.PlayAnimation(motionName, false);
- }
-
- public MotionName GetMotionName(string strMotionName)
- {
- return Enum.Parse<MotionName>(strMotionName);
- }
-
-
- protected override void OnSkillComplete()
- {
- foreach (var hurtObj in hurtList)
- {
- BattleObject targetObj = battleField.battleObjMgr.GetBattleObject((int)hurtObj.ObjID);
- if (targetObj != null)
- {
- long curHP = GeneralDefine.GetFactValue(hurtObj.CurHP, hurtObj.CurHPEx);
- targetObj.teamHero.curHp = curHP;
- }
- }
- base.OnSkillComplete();
-
- }
-
-
- protected override void PopDamage()
- {
- if (keyFrameIndex >= skillConfig.DamageDivide.Length)
- {
- Debug.LogError("CloseCombatBullet PopDamage keyFrameIndex out of range: " + keyFrameIndex);
- return;
- }
-
- int[] tenKDamagePercentArray = skillConfig.DamageDivide[keyFrameIndex++];
-
- foreach (var hurtObj in hurtList)
- {
- long factDamage = GeneralDefine.GetFactValue(hurtObj.HurtHP, hurtObj.HurtHPEx);
- List<long> damageList = new List<long>();
- for (int i = 0; i < tenKDamagePercentArray.Length; i++)
- {
- long damage = (long)(Mathf.Round(factDamage * tenKDamagePercentArray[i] / 10000.0f));
- damageList.Add(damage);
- }
-
- BattleObject targetObj = battleField.battleObjMgr.GetBattleObject((int)hurtObj.ObjID);
- if (targetObj != null)
- {
- // 鎾斁鍙楀嚮鍔ㄤ綔
- targetObj.Hurt(damageList, hurtObj.AttackType);
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Main/System/Battle/Bullet/CloseCombatBullet.cs.meta b/Main/System/Battle/Bullet/CloseCombatBullet.cs.meta
deleted file mode 100644
index 12c6799..0000000
--- a/Main/System/Battle/Bullet/CloseCombatBullet.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: a21315aaaa6e8f6448f864298b4516c0
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Main/System/Battle/Bullet/TrajectoryBullet.cs b/Main/System/Battle/Bullet/TrajectoryBullet.cs
deleted file mode 100644
index e69de29..0000000
--- a/Main/System/Battle/Bullet/TrajectoryBullet.cs
+++ /dev/null
diff --git a/Main/System/Battle/Motion/MotionBase.cs b/Main/System/Battle/Motion/MotionBase.cs
index e5dc60d..adcb575 100644
--- a/Main/System/Battle/Motion/MotionBase.cs
+++ b/Main/System/Battle/Motion/MotionBase.cs
@@ -125,6 +125,88 @@
return currentTrackEntry;
}
+
+ public Spine.TrackEntry PlaySkillAnimation(SkillConfig skillConfig, Action onComplete = null, Action onBeginPhaseEnd = null, Action onActivePhaseEnd = null)
+ {
+ if (skillConfig == null)
+ {
+ Debug.LogError("鎶�鑳介厤缃负绌猴紝鏃犳硶鎾斁鎶�鑳藉姩鐢�");
+ return null;
+ }
+
+ return PlayAnimation(skillConfig.SkillMotionName, skillConfig.StartupFrames, skillConfig.ActiveFrames, skillConfig.LoopCount,
+ onComplete, onBeginPhaseEnd, onActivePhaseEnd);
+ }
+
+ public virtual Spine.TrackEntry PlayAnimation(
+ string animationName,
+ int loopBeginFrame,
+ int loopEndFrame,
+ int loopTimes,
+ Action _onComplete = null,
+ Action onBeginPhaseEnd = null, // 鍓嶆憞缁撴潫鍥炶皟
+ Action onActivePhaseEnd = null // 涓憞缁撴潫鍥炶皟
+ )
+ {
+ if (spineAnimationState == null || skeleton == null) return null;
+
+ var anim = skeleton.Data.FindAnimation(animationName);
+ if (anim == null) return null;
+
+ float fps = BattleConst.skillMotionFps;
+ float beginTime = loopBeginFrame / fps;
+ float endTime = loopEndFrame / fps;
+
+ currentTrackEntry = spineAnimationState.SetAnimation(0, anim, false);
+
+ int curLoop = 0;
+ bool finished = false;
+ bool beginPhaseTriggered = false;
+
+ Spine.Unity.UpdateBonesDelegate updateLocalHandler = null;
+ updateLocalHandler = (ISkeletonAnimation animated) =>
+ {
+ if (finished) return;
+ var entry = currentTrackEntry;
+ if (entry == null || entry.Animation != anim)
+ {
+ skeletonGraphic.UpdateLocal -= updateLocalHandler;
+ return;
+ }
+
+ // 鍓嶆憞缁撴潫锛堝彧瑙﹀彂涓�娆★級
+ if (!beginPhaseTriggered && entry.TrackTime >= beginTime)
+ {
+ beginPhaseTriggered = true;
+ onBeginPhaseEnd?.Invoke();
+ }
+
+ // 涓憞缁撴潫锛堟瘡娆″埌endTime閮借Е鍙戯級
+ if (entry.TrackTime >= endTime)
+ {
+ onActivePhaseEnd?.Invoke();
+
+ curLoop++;
+ if (curLoop >= loopTimes)
+ {
+ finished = true;
+ skeletonGraphic.UpdateLocal -= updateLocalHandler;
+ _onComplete?.Invoke();
+ return;
+ }
+ entry.TrackTime = beginTime;
+ beginPhaseTriggered = false; // 閲嶇疆锛屼笅涓�杞墠鎽囧彲鍐嶆瑙﹀彂
+ }
+ };
+ skeletonGraphic.UpdateLocal += updateLocalHandler;
+
+ if (_onComplete != null && currentTrackEntry != null)
+ {
+ trackEntryCompleteDict[currentTrackEntry] = _onComplete;
+ }
+
+ return currentTrackEntry;
+ }
/// <summary>
@@ -166,7 +248,53 @@
trackEntryCompleteDict.Remove(trackEntry);
}
}
-
+
+
+ public void Test(string animationName, int beginFrame, int activeFrame, int endFrame, int activeFrameLoopCount)
+ {
+ // 瑕佸鐞嗗墠鎽嘼eginFrame 鍚庢憞endFrame 涓憞activeFrame
+
+ // 涓憞鏄湁澶氭鐨刟ctiveFrameLoopCount
+
+ var state = spineAnimationState;
+ var anim = skeleton.Data.FindAnimation(animationName);
+
+ // 璁惧畾浣犺寰幆鐨勫尯闂达紙鍗曚綅锛氱锛�
+ float loopStart = 0.5f;
+ float loopEnd = 1.2f;
+
+ // 鎾斁鍔ㄧ敾
+ state.SetAnimation(0, anim, true);
+ // state.GetCurrent(0).TrackTime = loopStart;
+
+ int curFrame = 0;
+
+ skeletonGraphic.UpdateLocal += (skeletonAnim) =>
+ {
+ // if (curFrame == beginFrame)
+ // {
+ // OnBeginFrame?.Invoke();
+ // }
+ // else if (curFrame == activeFrame)
+ // {
+ // OnActiveFrame?.Invoke();
+ // }
+ // else if (curFrame == endFrame)
+ // {
+ // OnEndFrame?.Invoke();
+ // }
+ // var trackEntry = state.GetCurrent(0);
+ // if (trackEntry != null && trackEntry.Animation == anim)
+ // {
+ // if (trackEntry.TrackTime > loopEnd)
+ // {
+ // // 鍥炲埌loopStart锛屽疄鐜板尯闂村惊鐜�
+ // trackEntry.TrackTime = loopStart;
+ // }
+ // }
+ };
+ }
+
public virtual void Run()
{
diff --git a/Main/System/Battle/RecordPlayer/RecordActionType.cs b/Main/System/Battle/RecordPlayer/RecordActionType.cs
index 413f658..4b0cbda 100644
--- a/Main/System/Battle/RecordPlayer/RecordActionType.cs
+++ b/Main/System/Battle/RecordPlayer/RecordActionType.cs
@@ -5,4 +5,6 @@
Guard,//鏍兼尅
Skill,//鎶�鑳�
Death,//姝讳骸
+
+ BattleStart,//鎴樻枟寮�濮�
}
diff --git a/Main/System/Battle/Skill/DirectlyDamageSkill.cs b/Main/System/Battle/Skill/DirectlyDamageSkill.cs
index 2b2bcdc..8499523 100644
--- a/Main/System/Battle/Skill/DirectlyDamageSkill.cs
+++ b/Main/System/Battle/Skill/DirectlyDamageSkill.cs
@@ -6,93 +6,79 @@
public class DirectlyDamageSkill : SkillBase
{
-
- public DirectlyDamageSkill(BattleObject _caster, SkillConfig _skillCfg,
- H0604_tagUseSkillAttack vNetData, BattleField _battleField) : base(_caster, _skillCfg, vNetData, _battleField)
- {
+ protected SkillEffect skillEffect;
+ public DirectlyDamageSkill(BattleObject _caster, SkillConfig _skillCfg,
+ H0604_tagUseSkillAttack _vNetData, List<GameNetPackBasic> _packList, BattleField _battleField)
+ : base(_caster, _skillCfg, _vNetData, _packList, _battleField)
+ {
+ foreach (var pack in packList)
+ {
+ Debug.LogError("directly damage skill pack type is " + pack.GetType());
+ }
}
public override void Run()
{
- base.Run();
-
- }
-
- protected override void OnTriggerEvent(int triggerIndex, int triggerFrame)
- {
- if (0 == triggerIndex)
+ if (null != skillEffect)
{
- List<BattleObject> targetList = GetTargetList();
- // 瀛愮被瀹炵幇鍏蜂綋鐨勬妧鑳介�昏緫
- SkillEffect effect = SkillEffectFactory.CreateSkillEffect(caster, skillConfig, tagUseSkillAttack);
- if (null != effect)
- {
- // 濡傛灉鏄瓙寮圭被鍨嬬殑
- effect.Play((hitIndex, hurList) =>
- {
- for (int i = 0; i < hurList.Count; i++)
- {
- var hurt = hurList[i];
- BattleObject target = caster.battleField.battleObjMgr.GetBattleObject((int)hurt.ObjID);
-
- List<long> damageList = new List<long>();
- // 璁$畻浼ゅ 鍒嗘鐨勮瘽
- if (hitIndex >= skillConfig.DamageDivide.Length)
- {
- Debug.LogError("DamageDivide鏈夐棶棰� 闇�瑕佹鏌� 鍙樉绀轰竴娈典激瀹� 鍙杢riggerFrames鐨�");
- long totalDamage = GeneralDefine.GetFactValue(hurt.HurtHP, hurt.HurtHPEx) / (skillConfig.TriggerFrames.Length == 0 ? 1 : skillConfig.TriggerFrames.Length);
- damageList.Add(totalDamage);
- }
- else
- {
- long totalDamage = GeneralDefine.GetFactValue(hurt.HurtHP, hurt.HurtHPEx);
-
- if (hitIndex >= skillConfig.DamageDivide.Length)
- {
- int[] tenKDamagePercentArray = skillConfig.DamageDivide[hitIndex];
- long factDamage = totalDamage;
- for (int j = 0; j < tenKDamagePercentArray.Length; j++)
- {
- long damage = (long)(Mathf.Round(factDamage * tenKDamagePercentArray[j] / 10000.0f));
- damageList.Add(damage);
- }
- }
- }
- target.Hurt(damageList, hurt.AttackType);
- }
- });
- }
- }
- }
-
- protected override void DoSkillLogic(Action _onComplete = null)
- {
- // 寮�濮嬭褰曞抚鏁�
- startCounting = true;
- }
-
-
-#if UNITY_EDITOR_STOP_USING
- // 浼ゅ鍒楄〃鐞嗗簲鐢辨湇鍔″櫒鍙戠粰瀹㈡埛绔� 杩欒竟鍙仛绮楁祬妯℃嫙
- public override List<Dictionary<int, List<int>>> GetDamageList(BattleField battleField)
- {
- List<Dictionary<int, List<int>>> damageList = new List<Dictionary<int, List<int>>>();
-
- List<BattleObject> affectList = GetTargetList(battleField);
-
- Dictionary<int, List<int>> oneRoundDamage = new Dictionary<int, List<int>>();
-
- for (int j = 0; j < affectList.Count; j++)
- {
- BattleObject obj = affectList[j];
- List<int> tryDmgList = caster.TryAttack(obj, skillConfig);
- oneRoundDamage.Add(obj.ObjID, tryDmgList);
+ skillEffect.Run();
}
- damageList.Add(oneRoundDamage);
-
- return damageList;
+ base.Run();
}
-#endif
+
+
+ // 鎶�鑳藉姩鐢绘挱鏀惧畬姣�
+ protected override void DoSkillLogic(Action _onComplete = null)
+ {
+ // if (skillConfig.EffectId > 0)
+ // {
+ // // 鎾斁鎶�鑳界壒鏁�
+ // caster.battleField.battleEffectMgr.PlayEffect(
+ // caster.ObjID,
+ // skillConfig.EffectId,
+ // caster.heroGo.transform
+ // );
+ // }
+
+ _onComplete?.Invoke();
+ }
+
+ // 鍓嶆憞缁撴潫
+ protected override void OnStartSkillFrame()
+ {
+ skillEffect = SkillEffectFactory.CreateSkillEffect(
+ caster,
+ skillConfig,
+ tagUseSkillAttack
+ );
+ if (skillEffect != null)
+ {
+ skillEffect.Play(OnHitTargets);
+ }
+ }
+
+ protected override void OnHitTargets(int _hitIndex, List<H0604_tagUseSkillAttack.tagSkillHurtObj> hitList)
+ {
+ base.OnHitTargets(_hitIndex, hitList);
+ }
+
+ protected override void OnHitEachTarget(BattleObject target, List<long> damageList, ref H0604_tagUseSkillAttack.tagSkillHurtObj hurt)
+ {
+ base.OnHitEachTarget(target, damageList, ref hurt);
+ }
+
+
+ // 涓憞缁撴潫
+ protected override void OnActiveSkillFrame()
+ {
+
+ }
+
+ // 鍚庢憞缁撴潫
+ protected override void OnEndSkillFrame()
+ {
+
+ }
}
\ No newline at end of file
diff --git a/Main/System/Battle/Skill/SkillBase.cs b/Main/System/Battle/Skill/SkillBase.cs
index 71f78b2..64964ac 100644
--- a/Main/System/Battle/Skill/SkillBase.cs
+++ b/Main/System/Battle/Skill/SkillBase.cs
@@ -25,35 +25,41 @@
protected int curFrame = 0;
- protected List<int> triggerFrames = new List<int>();
+ protected List<GameNetPackBasic> packList;
- public SkillBase(BattleObject _caster, SkillConfig _skillCfg, H0604_tagUseSkillAttack vNetData, BattleField _battleField = null)
+ protected SkillBase otherSkill;
+
+ public SkillBase(BattleObject _caster, SkillConfig _skillCfg, H0604_tagUseSkillAttack vNetData, List<GameNetPackBasic> _packList, BattleField _battleField = null)
{
caster = _caster;
skillConfig = _skillCfg;
tagUseSkillAttack = vNetData;
battleField = _battleField;
+ packList = _packList;
- triggerFrames.Clear();
- triggerFrames.AddRange(skillConfig.TriggerFrames);
- }
+ }
public virtual void Run()
{
if (startCounting)
{
curFrame++;
-
- if (triggerFrames.Contains(curFrame))
- {
- OnTriggerEvent(triggerFrames.IndexOf(curFrame), curFrame);
- }
}
}
- protected virtual void OnTriggerEvent(int triggerIndex, int triggerFrame)
+ protected virtual void OnActiveSkillFrame()
{
+ }
+
+ protected virtual void OnStartSkillFrame()
+ {
+
+ }
+
+ protected virtual void OnEndSkillFrame()
+ {
+
}
public void Pause()
@@ -74,17 +80,33 @@
// 楂樹寒鎵�鏈夋湰娆℃妧鑳界浉鍏崇殑鐩爣
HighLightAllTargets();
+ // 璺濈閰嶆垚璐熸暟瑕佽浆韬� TurnBack
+
switch (skillConfig.castMode)
{
- case SkillCastMode.StandCast:
+ case SkillCastMode.Self:
PlayCastAnimation(() => DoSkillLogic(OnSkillFinished));
break;
- case SkillCastMode.MoveToTarget:
- MoveToTarget(_onComplete: () => TurnBack(() => PlayCastAnimation(() => DoSkillLogic(() => { BackToOrigin(OnSkillFinished); }))));
+ case SkillCastMode.Enemy:
+ MoveToTarget(caster.GetEnemyCamp(), skillConfig.CastIndexNum, _onComplete: () => TurnBack(() => PlayCastAnimation(() => DoSkillLogic(() => { BackToOrigin(OnSkillFinished); }))));
break;
- case SkillCastMode.DashCast:
- DashToTarget(() => BackToOrigin(OnSkillFinished));
+ case SkillCastMode.Target:
+ // 鐩爣鏄晫鏂逛富鐩爣
+ BattleObject mainTarget = battleField.battleObjMgr.GetBattleObject((int)tagUseSkillAttack.AttackID);
+ if (mainTarget == null)
+ {
+ Debug.LogError("鐩爣涓虹┖ mainTarget == null AttackID : " + tagUseSkillAttack.AttackID);
+ OnSkillFinished();
+ return;
+ }
+ MoveToTarget(mainTarget.Camp, mainTarget.teamHero.positionNum, _onComplete: () => TurnBack(() => PlayCastAnimation(() => DoSkillLogic(() => { BackToOrigin(OnSkillFinished); }))));
break;
+ case SkillCastMode.Allies:
+ MoveToTarget(caster.Camp, skillConfig.CastIndexNum, _onComplete: () => TurnBack(() => PlayCastAnimation(() => DoSkillLogic(() => { BackToOrigin(OnSkillFinished); }))));
+ break;
+ // case SkillCastMode.DashCast:
+ // DashToTarget(() => BackToOrigin(OnSkillFinished));
+ // break;
default:
Debug.LogError("鏆傛椂涓嶆敮鎸佸叾浠栫殑鏂瑰紡閲婃斁 鏈夐渶姹傝鑱旂郴绛栧垝");
break;
@@ -92,73 +114,40 @@
}
// 鍐插埡鐨勬妧鑳� 鍔ㄤ綔 璺熺Щ鍔� 鏄悓鏃惰繘琛岀殑 绉诲姩鍒扮洰鏍囩殑涓�鐬棿灏辫杩涜鎶�鑳介�昏緫
- protected void DashToTarget(Action _onComplete)
- {
- TrackEntry entry = PlayCastAnimation();
- // 鍋氫竴涓井寰殑鎻愬墠
- MoveToTarget(entry.TrackTime - 0.05f, () => DoSkillLogic(_onComplete));
- }
+ // protected void DashToTarget(Action _onComplete)
+ // {
+ // TrackEntry entry = PlayCastAnimation();
+ // BattleObject mainTarget = battleField.battleObjMgr.GetBattleObject((int)tagUseSkillAttack.AttackID);
+ // if (mainTarget == null)
+ // {
+ // Debug.LogError("鐩爣涓虹┖ mainTarget == null AttackID : " + tagUseSkillAttack.AttackID);
+ // _onComplete?.Invoke();
+ // return;
+ // }
- protected void GetTargetNode()
- {
- targetNode = null;
+ // // 鍋氫竴涓井寰殑鎻愬墠
+ // MoveToTarget(mainTarget.Camp, mainTarget.teamHero.positionNum, entry.AnimationEnd - 0.05f, () => DoSkillLogic(_onComplete));
+ // }
- if (skillConfig.castMode == SkillCastMode.StandCast)
- {
- // 鍘熷湴鏂芥硶
- targetNode = caster.heroGo.transform as RectTransform;
- }
- else if (skillConfig.castMode == SkillCastMode.MoveToTarget || skillConfig.castMode == SkillCastMode.DashCast)
- {
- if (tagUseSkillAttack.AttackID <= 0)
- {
- Debug.LogError("鎶�鑳芥病鏈夋寚瀹氱洰鏍�");
- return;
- }
-
- // 绉诲姩鍒扮洰鏍囦綅缃柦娉�
- BattleObject _mainTarget = battleField.battleObjMgr.GetBattleObject((int)tagUseSkillAttack.AttackID);
- if (_mainTarget == null)
- {
- Debug.LogError("鎶�鑳芥寚瀹氱殑鐩爣涓嶅瓨鍦�");
- return;
- }
-
- targetNode = _mainTarget.heroGo.transform as RectTransform;
- }
- else if (skillConfig.castMode == SkillCastMode.MoveToFormation)
- {
- // TODO YYL
- targetNode = /*caster.GetEnemyTeamNode();*/ battleField.GetTeamNode(caster.Camp == BattleCamp.Blue ? BattleCamp.Red : BattleCamp.Blue);
- }
- else
- {
- Debug.LogError("鏈煡鐨勬柦娉曟柟寮� 鎶�鑳絠d锛�" + skillConfig.SkillID);
- return;
- }
- }
-
- protected List<BattleObject> GetTargetList()
- {
- return battleField.battleObjMgr.GetBattleObjList(tagUseSkillAttack);
- }
-
+ // 杩欓噷鍏跺疄鏄妧鑳藉悗鎽囩粨鏉熺殑鍦版柟
protected virtual void DoSkillLogic(Action _onComplete = null)
{
- // 瀛愮被瀹炵幇鍏蜂綋鐨勬妧鑳介�昏緫
+
}
protected TrackEntry PlayCastAnimation(Action onComplete = null)
{
// 鎾斁鏂芥硶鍔ㄤ綔
- MotionName motionName = skillConfig.GetMotionName();
- TrackEntry trackEntry = caster.motionBase.PlayAnimation(motionName, false, onComplete);
- return trackEntry;
+ return caster.motionBase.PlaySkillAnimation(skillConfig, onComplete,
+ OnStartSkillFrame,//鏀诲嚮鍓嶆憞缁撴潫
+ OnActiveSkillFrame);//鏀诲嚮涓憞缁撴潫
}
- public void MoveToTarget(float duration = 0.2f, Action _onComplete = null)
+ public void MoveToTarget(BattleCamp camp, int index, float duration = 0.2f, Action _onComplete = null)
{
- GetTargetNode();
+ // GetTargetNode();
+ targetNode = battleField.GetTeamNode(camp, index);
+
Vector2 offset = new Vector2(skillConfig.CastDistance, 0);
RectTransform selfRect = caster.heroGo.transform as RectTransform;
RectTransform targetRect = targetNode;
@@ -171,6 +160,7 @@
{
if (skillConfig.CastDistance < 0)
{
+ // 杞韩
caster.heroGo.transform.localScale = new Vector3(-1, 1, 1);
}
_onComplete?.Invoke();
@@ -184,6 +174,7 @@
.SetEase(Ease.Linear)
.OnComplete(() =>
{
+ // 杞垚姝g‘鏂瑰悜
caster.heroGo.transform.localScale = Vector3.one;
_onComplete?.Invoke();
});
@@ -203,6 +194,53 @@
// YYL TODO
}
+ // 鍛戒腑鐩爣鍚庣殑鍥炶皟 姝e父鏄互鍚勬妧鑳界殑鏂瑰紡鏉ュ鐞嗙殑
+ protected virtual void OnHitTargets(int _hitIndex, List<H0604_tagUseSkillAttack.tagSkillHurtObj> hitList)
+ {
+ for (int i = 0; i < hitList.Count; i++)
+ {
+ H0604_tagUseSkillAttack.tagSkillHurtObj hurt = hitList[i];
+
+ BattleObject target = caster.battleField.battleObjMgr.GetBattleObject((int)hurt.ObjID);
+ if (target == null)
+ {
+ Debug.LogError("鐩爣涓虹┖ target == null ObjId : " + hurt.ObjID);
+ continue;
+ }
+
+ // 浼ゅ缁撶畻
+ int[] damageDivide = skillConfig.DamageDivide[_hitIndex];
+
+ List<long> damageList = new List<long>();
+
+ long totalDamage = GeneralDefine.GetFactValue(hurt.HurtHP, hurt.HurtHPEx);
+
+ for (int j = 0; j < damageDivide.Length; j++)
+ {
+ long damage = totalDamage * damageDivide[j] / 10000;
+ damageList.Add(damage);
+ }
+
+ OnHitEachTarget(target, damageList, ref hurt);
+ }
+ }
+
+ protected virtual void OnHitEachTarget(BattleObject target, List<long> damageList, ref H0604_tagUseSkillAttack.tagSkillHurtObj hurt)
+ {
+ target.Hurt(damageList, hurt.AttackType);
+
+ // 鍑讳腑鐩爣鐨勬椂鍊�,涓嶇杩戞垬杩滅▼ 閮界‘璁や竴涓嬫槸鍚︽湁鐖嗙偢鐗规晥 鐒跺悗鎾斁
+ if (skillConfig.ExplosionEffectId > 0)
+ {
+ // 鎾斁鐖嗙偢鐗规晥
+ target.battleField.battleEffectMgr.PlayEffect(
+ target.ObjID,
+ skillConfig.ExplosionEffectId,
+ target.heroGo.transform
+ );
+ }
+ }
+
public virtual bool IsFinished()
{
return isFinished;
@@ -217,21 +255,4 @@
{
isFinished = true;
}
-
-#if UNITY_EDITOR_STOP_USING
- public virtual List<BattleObject> GetTargetList(BattleField _battleField)
- {
- SkillTargetType targetType = SkillTargetType.Enemy;
- SkillTargetRangeType rangeType = SkillTargetRangeType.LowestHP;
-
- List<BattleObject> affectList = _battleField.battleObjMgr.GetTargetList(caster, targetType, rangeType);
- return affectList;
- }
-
- public virtual List<Dictionary<int, List<int>>> GetDamageList(BattleField _battleField)
- {
- Debug.LogError("SkillBase GetDamageList should be overridden by derived class");
- return null;
- }
-#endif
}
\ No newline at end of file
diff --git a/Main/System/Battle/Skill/SkillCastMode.cs b/Main/System/Battle/Skill/SkillCastMode.cs
index 26c8615..413fed4 100644
--- a/Main/System/Battle/Skill/SkillCastMode.cs
+++ b/Main/System/Battle/Skill/SkillCastMode.cs
@@ -2,8 +2,19 @@
public enum SkillCastMode
{
- StandCast, // 鍘熷湴閲婃斁
- MoveToTarget, // 璺戝埌鐩爣闈㈠墠閲婃斁鍐嶅洖鏉�
- DashCast, // 鍘熷湴鍔ㄤ綔浣嗚鑹蹭細鍐插埌鐩爣闈㈠墠
- MoveToFormation, // 绉诲姩鍒伴樀瀹逛綅缃柦娉�
+ // 绉诲姩鍒扮殑浣嶇疆 CastPosition
+ // 1.鏁� 2.鎴� 3.鑷繁鐨勪綅缃�(鍘熷湴涓嶅姩) 4.鏁屾柟涓荤洰鏍�
+ // 鏁屾垜鐨勬墿灞� CastIndexNum
+ // 鍑犲彿浣�
+
+ None,
+
+ Enemy, //鏁�
+
+ Allies, //鎴�
+
+ Self,
+
+ Target,
+
}
\ No newline at end of file
diff --git a/Main/System/Battle/Skill/SkillEffectAnchor.cs b/Main/System/Battle/Skill/SkillEffectAnchor.cs
deleted file mode 100644
index b02a2a6..0000000
--- a/Main/System/Battle/Skill/SkillEffectAnchor.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-public enum SkillEffectAnchor
-{
- Caster, //鍦ㄦ柦娉曡�呬笂
- Target, //鍦ㄧ洰鏍囦笂
- AlliesCenter,// 鍦ㄥ弸鏂逛腑蹇�
- EnemiesCenter,// 鍦ㄦ晫鏂逛腑蹇�
-}
\ No newline at end of file
diff --git a/Main/System/Battle/Skill/SkillEffectAnchor.cs.meta b/Main/System/Battle/Skill/SkillEffectAnchor.cs.meta
deleted file mode 100644
index 7ab771c..0000000
--- a/Main/System/Battle/Skill/SkillEffectAnchor.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 8c9269b4bdb75f042b97225006214939
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Main/System/Battle/Skill/SkillEffectType.cs b/Main/System/Battle/Skill/SkillEffectType.cs
index a1d4ce0..b222da7 100644
--- a/Main/System/Battle/Skill/SkillEffectType.cs
+++ b/Main/System/Battle/Skill/SkillEffectType.cs
@@ -1,7 +1,10 @@
+
+
public enum SkillEffectType
{
- Bullet, // 瀛愬脊绫诲瀷
- Direct, // 鐩存帴浼ゅ
- BuffEffect, // Buff
- StageEffect, // 鍦烘櫙鎶�
+ None,
+ Bullet,
+ Direct,
+ BuffEffect,
+ StageEffect,
}
\ No newline at end of file
diff --git a/Main/System/Battle/Skill/SkillEffectType.cs.meta b/Main/System/Battle/Skill/SkillEffectType.cs.meta
index d3332ba..188c502 100644
--- a/Main/System/Battle/Skill/SkillEffectType.cs.meta
+++ b/Main/System/Battle/Skill/SkillEffectType.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 0e224e8034be71b4d8571bb3adba5ecf
+guid: cde6d4bfbadd30544972f057d02b37e9
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/System/Battle/Skill/SkillFactory.cs b/Main/System/Battle/Skill/SkillFactory.cs
index c9d0fa4..c1b284b 100644
--- a/Main/System/Battle/Skill/SkillFactory.cs
+++ b/Main/System/Battle/Skill/SkillFactory.cs
@@ -1,4 +1,5 @@
+using System.Collections.Generic;
using UnityEngine;
@@ -40,7 +41,7 @@
- public static SkillBase CreateSkill(BattleObject _caster, H0604_tagUseSkillAttack vNetData, BattleField battleField)
+ public static SkillBase CreateSkill(BattleObject _caster, H0604_tagUseSkillAttack vNetData, List<GameNetPackBasic> packList, BattleField battleField)
{
SkillConfig skillConfig = SkillConfig.Get(vNetData.SkillID);
@@ -49,7 +50,7 @@
{
case 1:
// 鍏堝疄鐜颁竴涓敾鍑荤殑 鍚庣画鏈夊啀鎱㈡參澧炲姞
- skill = new DirectlyDamageSkill(_caster, skillConfig, vNetData, battleField);
+ skill = new DirectlyDamageSkill(_caster, skillConfig, vNetData, packList, battleField);
break;
case 2:
// skill = new DirectlyHealSkill(_skillConfig);
diff --git a/Main/System/Battle/SkillEffect/BulletCurve.meta b/Main/System/Battle/SkillEffect/BulletCurve.meta
new file mode 100644
index 0000000..a069560
--- /dev/null
+++ b/Main/System/Battle/SkillEffect/BulletCurve.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e629a2dca5d56a24daca10dac6956487
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs
new file mode 100644
index 0000000..3a92a06
--- /dev/null
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs
@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class BezierBulletCurve : BulletCurve
+{
+ private Vector2 start;
+ private Vector2 end;
+ private Vector2 control;
+
+ public BezierBulletCurve(BattleObject caster, SkillConfig skillConfig, EffectPlayer effectPlayer, RectTransform target, Action<int, List<H0604_tagUseSkillAttack.tagSkillHurtObj>> onHit)
+ : base(caster, skillConfig, effectPlayer, target, onHit) { }
+
+ public override void Reset()
+ {
+ base.Reset();
+ start = WorldToLocalAnchoredPosition(bulletTrans.position);
+ end = WorldToLocalAnchoredPosition(target.position);
+ control = (start + end) / 2 + Vector2.up * 100f;
+ }
+
+ public override void Run()
+ {
+ if (finished) return;
+ elapsed += Time.deltaTime;
+ float t = Mathf.Clamp01(elapsed / duration);
+ Vector2 pos = Mathf.Pow(1 - t, 2) * start + 2 * (1 - t) * t * control + Mathf.Pow(t, 2) * end;
+ bulletTrans.anchoredPosition = pos;
+
+ Vector2 tangent = 2 * (1 - t) * (control - start) + 2 * t * (end - control);
+ float angle = Mathf.Atan2(tangent.y, tangent.x) * Mathf.Rad2Deg - 90f;
+ bulletTrans.localRotation = Quaternion.Euler(0, 0, angle);
+
+ if (t >= 1f)
+ {
+ finished = true;
+ onHit?.Invoke(0, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta b/Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs.meta
similarity index 83%
copy from Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
copy to Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs.meta
index 9310e5e..87c4b1e 100644
--- a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 3d40a22572b07c24e9eefb52db0bfd87
+guid: 143c64c0c71854347bb8249a0f1d3d61
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs
new file mode 100644
index 0000000..772df81
--- /dev/null
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs
@@ -0,0 +1,77 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+/// <summary>
+/// 寮瑰皠鍨嬪瓙寮规洸绾匡細渚濇寮瑰皠鍒� HurtList 鐨勬瘡涓洰鏍囷紝姣忔寮瑰皠椋炶鏃堕棿鍥哄畾涓�0.2绉�
+/// </summary>
+public class BounceBulletCurve : BulletCurve
+{
+ private List<H0604_tagUseSkillAttack.tagSkillHurtObj> hurtList;
+ private int curIndex = 0;
+ private Vector2 start;
+ private Vector2 end;
+ private float bounceTime = 0.2f; // 姣忔寮瑰皠鏃堕棿
+ private float bounceElapsed = 0f;
+
+ public BounceBulletCurve(BattleObject caster, SkillConfig skillConfig, EffectPlayer effectPlayer,
+ RectTransform target, H0604_tagUseSkillAttack tagUseSkillAttack, Action<int, List<H0604_tagUseSkillAttack.tagSkillHurtObj>> onHit)
+ : base(caster, skillConfig, effectPlayer, target, onHit)
+ {
+ this.hurtList = new List<H0604_tagUseSkillAttack.tagSkillHurtObj>(tagUseSkillAttack.HurtList);
+ }
+
+ public override void Reset()
+ {
+ base.Reset();
+ curIndex = 0;
+ bounceElapsed = 0f;
+ if (hurtList.Count > 0)
+ {
+ start = WorldToLocalAnchoredPosition(bulletTrans.position);
+ end = WorldToLocalAnchoredPosition(target.position);
+ }
+ }
+
+ public override void Run()
+ {
+ if (finished || hurtList.Count == 0) return;
+
+ bounceElapsed += Time.deltaTime;
+ float t = Mathf.Clamp01(bounceElapsed / bounceTime);
+
+ Vector2 pos = Vector2.Lerp(start, end, t) + Vector2.up * Mathf.Sin(t * Mathf.PI) * 50f;
+ bulletTrans.anchoredPosition = pos;
+
+ Vector2 dir = end - start;
+ float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg - 90f;
+ bulletTrans.localRotation = Quaternion.Euler(0, 0, angle);
+
+ if (t >= 1f)
+ {
+ // 鍛戒腑褰撳墠鐩爣
+ onHit?.Invoke(curIndex, hurtList);
+
+ curIndex++;
+ if (curIndex >= hurtList.Count)
+ {
+ finished = true;
+ return;
+ }
+ // 涓嬩竴娈靛脊灏�
+ start = end;
+ var nextTargetObj = caster.battleField.battleObjMgr.GetBattleObject((int)hurtList[curIndex].ObjID);
+ if (nextTargetObj != null)
+ {
+ end = WorldToLocalAnchoredPosition(nextTargetObj.heroGo.transform.position);
+ }
+ else
+ {
+ Debug.LogError("寮瑰皠鎵句笉鍒颁笅涓�涓洰鏍�");
+ // 濡傛灉鐩爣涓㈠け锛岀洿鎺ョ敤涓婁竴涓猠nd
+ end = start;
+ }
+ bounceElapsed = 0f;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta b/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs.meta
similarity index 83%
copy from Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
copy to Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs.meta
index 9310e5e..9b3eb31 100644
--- a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 3d40a22572b07c24e9eefb52db0bfd87
+guid: 4296c603d2e1eeb498af28d3d6ae3f7d
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs
new file mode 100644
index 0000000..b159e89
--- /dev/null
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class BulletCurve
+{
+ protected BattleObject caster;
+ protected SkillConfig skillConfig;
+ protected EffectPlayer bulletEffect;
+ protected RectTransform bulletTrans; // 瀛愬脊鐨凴ectTransform
+ protected RectTransform target;
+ protected Action<int, List<H0604_tagUseSkillAttack.tagSkillHurtObj>> onHit;
+
+ protected bool finished = false;
+ protected float duration = 0f;
+ protected float elapsed = 0f;
+
+ public BulletCurve() { }
+
+ public BulletCurve(BattleObject caster, SkillConfig skillConfig, EffectPlayer bulletEffect, RectTransform target, Action<int, List<H0604_tagUseSkillAttack.tagSkillHurtObj>> onHit)
+ {
+ this.caster = caster;
+ this.skillConfig = skillConfig;
+ this.bulletEffect = bulletEffect;
+ this.target = target;
+ this.onHit = onHit;
+ this.bulletTrans = bulletEffect.transform as RectTransform;
+ }
+
+ public virtual void Reset()
+ {
+ finished = false;
+ elapsed = 0f;
+ duration = skillConfig.BulletFlyTime;
+ }
+
+ // 涓栫晫鍧愭爣杞负bulletTrans鐖惰妭鐐逛笅鐨勬湰鍦板潗鏍�
+ protected Vector2 WorldToLocalAnchoredPosition(Vector3 worldPos)
+ {
+ var parent = bulletTrans.parent as RectTransform;
+ Vector2 localPoint;
+ RectTransformUtility.ScreenPointToLocalPointInRectangle(parent, RectTransformUtility.WorldToScreenPoint(null, worldPos), null, out localPoint);
+ return localPoint;
+ }
+
+ // Run灏辨槸Update锛屾瘡甯ц皟鐢�
+ public virtual void Run()
+ {
+ if (finished) return;
+ Vector2 targetPos = WorldToLocalAnchoredPosition(target.position);
+ bulletTrans.anchoredPosition = targetPos;
+ ReachTarget();
+ }
+
+ protected virtual void ReachTarget()
+ {
+ finished = true;
+ onHit?.Invoke(0, null);
+ caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, bulletEffect);
+ }
+
+ public bool IsFinished => finished;
+}
\ No newline at end of file
diff --git a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta b/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs.meta
similarity index 83%
copy from Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
copy to Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs.meta
index 9310e5e..5bdb3a2 100644
--- a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 3d40a22572b07c24e9eefb52db0bfd87
+guid: 6fa6db282bea72441bbb2c13c6a353e3
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/BulletCurveFactory.cs b/Main/System/Battle/SkillEffect/BulletCurve/BulletCurveFactory.cs
new file mode 100644
index 0000000..e0f6863
--- /dev/null
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BulletCurveFactory.cs
@@ -0,0 +1,35 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class BulletCurveFactory
+{
+ // 1路鐩寸嚎娑堝け浜庣洰鏍�
+ // 2路鐩寸嚎璐┛娑堝け鍦ㄥ睆骞曞
+ // 3路鎶涚墿绾垮姬绾�
+ // 4路寮瑰皠
+ // 5路閫忔槑
+
+ public static BulletCurve CreateBulletCurve(
+ BattleObject caster,
+ SkillConfig skillConfig,
+ EffectPlayer bulletEffect,
+ RectTransform target,
+ H0604_tagUseSkillAttack tagUseSkillAttack,
+ Action<int, List<H0604_tagUseSkillAttack.tagSkillHurtObj>> onHit)
+ {
+ switch (skillConfig.BulletPath)
+ {
+ case 1: // 鐩寸嚎娑堝け浜庣洰鏍�
+ return new StraightBulletCurve(caster, skillConfig, bulletEffect, target, onHit);
+ case 2: // 鐩寸嚎璐┛娑堝け鍦ㄥ睆骞曞
+ return new PenetrateBulletCurve(caster, skillConfig, bulletEffect, target, onHit);
+ case 3: // 鎶涚墿绾垮姬绾�
+ return new BezierBulletCurve(caster, skillConfig, bulletEffect, target, onHit);
+ case 4: // 寮瑰皠
+ return new BounceBulletCurve(caster, skillConfig, bulletEffect, target, tagUseSkillAttack,onHit);
+ default:
+ return new BulletCurve(caster, skillConfig, bulletEffect, target, onHit);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta b/Main/System/Battle/SkillEffect/BulletCurve/BulletCurveFactory.cs.meta
similarity index 83%
copy from Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
copy to Main/System/Battle/SkillEffect/BulletCurve/BulletCurveFactory.cs.meta
index 9310e5e..5afd08c 100644
--- a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BulletCurveFactory.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 3d40a22572b07c24e9eefb52db0bfd87
+guid: 66b56fd690393d44a81cebd1ddb43506
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs
new file mode 100644
index 0000000..e34200b
--- /dev/null
+++ b/Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs
@@ -0,0 +1,70 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class PenetrateBulletCurve : BulletCurve
+{
+ private Vector2 start; // 瀛愬脊璧风偣锛堟湰鍦板潗鏍囷級
+ private Vector2 end; // 鐩爣鐐癸紙鏈湴鍧愭爣锛�
+ private Vector2 outPos; // 灞忓箷澶栧欢闀跨偣锛堟湰鍦板潗鏍囷級
+ private bool hitTriggered = false; // 鏄惁宸茶Е鍙憃nHit
+
+ public PenetrateBulletCurve(BattleObject caster, SkillConfig skillConfig, EffectPlayer effectPlayer, RectTransform target, Action<int, List<H0604_tagUseSkillAttack.tagSkillHurtObj>> onHit)
+ : base(caster, skillConfig, effectPlayer, target, onHit) { }
+
+ /// <summary>
+ /// 鍒濆鍖栧脊閬撳弬鏁�
+ /// </summary>
+ public override void Reset()
+ {
+ base.Reset();
+ hitTriggered = false;
+ start = WorldToLocalAnchoredPosition(bulletTrans.position);
+ end = WorldToLocalAnchoredPosition(target.position);
+ Vector2 dir = (end - start).normalized;
+ float extend = 500f; // 璐┛璺濈锛屽彲鏍规嵁闇�姹傝皟鏁�
+ outPos = end + dir * extend;
+ }
+
+ /// <summary>
+ /// 姣忓抚璋冪敤锛岄┍鍔ㄥ瓙寮圭Щ鍔ㄥ拰琛ㄧ幇
+ /// </summary>
+ public override void Run()
+ {
+ if (finished) return;
+ elapsed += Time.deltaTime;
+ float t = Mathf.Clamp01(elapsed / duration);
+
+ // 璐┛鍒嗕袱娈碉細0~0.5鍒扮洰鏍囩偣锛�0.5~1.0缁х画椋炲嚭
+ float mid = 0.5f;
+ Vector2 pos;
+ if (t < mid)
+ {
+ // 鍓嶅崐娈碉細鎻掑�煎埌鐩爣鐐�
+ pos = Vector2.Lerp(start, end, t / mid);
+ }
+ else
+ {
+ // 鍚庡崐娈碉細鎻掑�煎埌灞忓箷澶�
+ pos = Vector2.Lerp(end, outPos, (t - mid) / (1f - mid));
+ // 鍒拌揪鐩爣鐐圭灛闂磋Е鍙憃nHit锛屽彧瑙﹀彂涓�娆�
+ if (!hitTriggered)
+ {
+ hitTriggered = true;
+ onHit?.Invoke(0, null);
+ }
+ }
+ bulletTrans.anchoredPosition = pos;
+
+ // 鏃嬭浆锛氬缁堟湞鍚戣繍鍔ㄦ柟鍚戯紝瀛愬脊榛樿90掳鍚戜笂
+ Vector2 dir = (t < mid) ? (end - start) : (outPos - end);
+ float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg - 90f;
+ bulletTrans.localRotation = Quaternion.Euler(0, 0, angle);
+
+ // 鍒拌揪缁堢偣锛岀粨鏉�
+ if (t >= 1f)
+ {
+ finished = true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta b/Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs.meta
similarity index 83%
copy from Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
copy to Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs.meta
index 9310e5e..bec27d2 100644
--- a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
+++ b/Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 3d40a22572b07c24e9eefb52db0bfd87
+guid: d033c1638a667574bb58dd52f50f75ff
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs
new file mode 100644
index 0000000..b21c5bc
--- /dev/null
+++ b/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs
@@ -0,0 +1,38 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class StraightBulletCurve : BulletCurve
+{
+ private Vector2 start;
+ private Vector2 end;
+
+ public StraightBulletCurve(BattleObject caster, SkillConfig skillConfig, EffectPlayer bulletEffect, RectTransform target, Action<int, List<H0604_tagUseSkillAttack.tagSkillHurtObj>> onHit)
+ : base(caster, skillConfig, bulletEffect, target, onHit) { }
+
+ public override void Reset()
+ {
+ base.Reset();
+ start = WorldToLocalAnchoredPosition(bulletTrans.position);
+ end = WorldToLocalAnchoredPosition(target.position);
+ }
+
+ public override void Run()
+ {
+ if (finished) return;
+ elapsed += Time.deltaTime;
+ float t = Mathf.Clamp01(elapsed / duration);
+ Vector2 pos = Vector2.Lerp(start, end, t);
+ bulletTrans.anchoredPosition = pos;
+
+ Vector2 dir = end - start;
+ float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg - 90f;
+ bulletTrans.localRotation = Quaternion.Euler(0, 0, angle);
+
+ if (t >= 1f)
+ {
+ finished = true;
+ onHit?.Invoke(0, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta b/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs.meta
similarity index 83%
copy from Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
copy to Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs.meta
index 9310e5e..8d4956f 100644
--- a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
+++ b/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 3d40a22572b07c24e9eefb52db0bfd87
+guid: c29cc9a862a7b724f82ec4bbd0a4432d
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
index 3f42303..00dc173 100644
--- a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
@@ -11,6 +11,8 @@
// protected BattleObject caster;
// protected List<BattleObject> targets; // 鐩爣鍒楄〃
+ protected List<BulletCurve> bulletCurves = new List<BulletCurve>();
+
public BulletSkillEffect(SkillConfig _skillConfig, BattleObject _caster, H0604_tagUseSkillAttack _tagUseSkillAttack)
: base(_skillConfig, _caster, _tagUseSkillAttack)
{
@@ -21,80 +23,115 @@
public override void Play(Action<int, List<H0604_tagUseSkillAttack.tagSkillHurtObj>> _onHit)
{
- // Caster, //鍦ㄦ柦娉曡�呬笂
- // Target, //鍦ㄧ洰鏍囦笂
- // AlliesCenter,// 鍦ㄥ弸鏂逛腑蹇�
- // EnemiesCenter,// 鍦ㄦ晫鏂逛腑蹇�
-
- Action<int, List<H0604_tagUseSkillAttack.tagSkillHurtObj>> onHitFormation = (_hitIndex, _hurtList) =>
+ // 寮瑰皠 鍙﹀鐨勫仛娉曚簡
+ if (skillConfig.effectType == SkillEffectType.Bullet && skillConfig.BulletPath == 4)
{
- _onHit?.Invoke(_hitIndex, tagUseSkillAttack.HurtList.ToList());
- };
-
- if (skillConfig.effectAnchor == SkillEffectAnchor.Caster)
- {
- // 涓嶅彲鑳藉瓙寮瑰皠鍚戣嚜宸卞惂
- Debug.LogError("瀛愬脊鎶�鑳界壒鏁堜笉鑳介敋瀹氬湪鏂芥硶鑰呬笂 skillConfig.effectAnchor");
- _onHit?.Invoke(0, default);
- }
- else if (skillConfig.effectAnchor == SkillEffectAnchor.Target)
- {
- if (tagUseSkillAttack == null || tagUseSkillAttack.HurtList.Length <= 0)
+ var hurt = tagUseSkillAttack.HurtList[0];
+ BattleObject targetObject = caster.battleField.battleObjMgr.GetBattleObject((int)hurt.ObjID);
+ if (targetObject == null)
{
- Debug.LogError("瀛愬脊鎶�鑳界壒鏁堟病鏈夌洰鏍� tagUseSkillAttack.HurtList.Length <= 0");
- _onHit?.Invoke(0, default);
+ Debug.LogError("鐩爣涓虹┖ target == null ObjId : " + hurt.ObjID);
return;
}
-
- foreach (var hurt in tagUseSkillAttack.HurtList)
- {
- BattleObject target = caster.battleField.battleObjMgr.GetBattleObject((int)hurt.ObjID);
- if (target == null)
- {
- Debug.LogError("瀛愬脊鎶�鑳界壒鏁堢洰鏍囦负绌� target == null ObjId : " + hurt.ObjID);
- continue;
- }
-
- ShotToTarget(target.heroGo.transform as RectTransform, (index, list) => _onHit(0, new List<H0604_tagUseSkillAttack.tagSkillHurtObj>() { hurt }));
- }
+ ShotToTarget(targetObject, _onHit);
}
- else if (skillConfig.effectAnchor == SkillEffectAnchor.AlliesCenter)
- {
- ShotToTarget(caster.battleField.GetTeamNode(caster.Camp), onHitFormation);
- }
- else if (skillConfig.effectAnchor == SkillEffectAnchor.EnemiesCenter)
- {
- ShotToTarget(caster.battleField.GetTeamNode(caster.Camp == BattleCamp.Blue ? BattleCamp.Red : BattleCamp.Blue), onHitFormation);
- }
+ // 鏅�氱殑鍋氭硶
else
{
- Debug.LogError("鏈煡鐨勬妧鑳界壒鏁堥敋鐐圭被鍨�: " + skillConfig.effectAnchor);
+ Action<int, List<H0604_tagUseSkillAttack.tagSkillHurtObj>> onHitFormation = (_hitIndex, _hurtList) =>
+ {
+ _onHit?.Invoke(_hitIndex, tagUseSkillAttack.HurtList.ToList());
+ };
+ switch (skillConfig.castMode)
+ {
+ case SkillCastMode.Self:
+ onHitFormation?.Invoke(0, tagUseSkillAttack.HurtList.ToList());
+ Debug.LogError("瀛愬脊鐨勭洰鏍囨槸鑷繁锛屾殏鏃朵笉鏀寔 鍗忓晢绋嬪簭瀹屾垚");
+ break;
+ case SkillCastMode.Enemy:
+ var targetNode = caster.battleField.GetTeamNode(caster.GetEnemyCamp(), skillConfig.CastIndexNum);
+ ShotToFormation(targetNode, onHitFormation);
+ break;
+ case SkillCastMode.Target:
+ for (int i = 0; i < tagUseSkillAttack.HurtList.Length; i++)
+ {
+ var hurt = tagUseSkillAttack.HurtList[i];
+ BattleObject target = caster.battleField.battleObjMgr.GetBattleObject((int)hurt.ObjID);
+ if (target == null)
+ {
+ Debug.LogError("鐗规晥鐩爣涓虹┖ target == null ObjId : " + hurt.ObjID);
+ continue;
+ }
+
+ ShotToTarget(target, _onHit);
+ }
+ break;
+ case SkillCastMode.Allies:
+ var healNode = caster.battleField.GetTeamNode(caster.Camp, skillConfig.CastIndexNum);
+ ShotToFormation(healNode, onHitFormation);
+ break;
+ default:
+ Debug.LogError("鏆傛椂涓嶆敮鎸佸叾浠栫殑鏂瑰紡閲婃斁 鏈夐渶姹傝鑱旂郴绋嬪簭 " + skillConfig.SkillID);
+ break;
+ }
}
}
- protected void ShotToTarget(RectTransform target, Action<int, List<H0604_tagUseSkillAttack.tagSkillHurtObj>> _onHit)
+ protected void ShotToFormation(RectTransform target, Action<int, List<H0604_tagUseSkillAttack.tagSkillHurtObj>> _onHit)
{
- EffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.EffectId, caster.effectNode);
-
+ EffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.BulletEffectId, caster.effectNode);
RectTransform effectTrans = effectPlayer.transform as RectTransform;
- var tween = BattleUtility.MoveToTarget(effectTrans, target, Vector2.zero, skillConfig.FlyTime, () =>
+ var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, target, tagUseSkillAttack, (index, hitList) =>
{
// 琛ㄧ幇瀛愬脊椋炶鍒扮洰鏍囦綅缃�
- _onHit?.Invoke(0, null);
+ _onHit?.Invoke(index, hitList);
- // 鍑讳腑灏遍攢姣佸瓙寮�
- caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.EffectId, effectPlayer);
- // 鎾斁瀛愬脊鐖嗙偢鐗规晥
- caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.ExplotionEffectId, target);
+ // 鍑讳腑灏遍攢姣佸瓙寮�
+ caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, effectPlayer);
+ // 鎾斁瀛愬脊鐖嗙偢鐗规晥
+
+ foreach (var hurt in hitList)
+ {
+ BattleObject targetObj = caster.battleField.battleObjMgr.GetBattleObject((int)hurt.ObjID);
+ if (targetObj == null)
+ {
+ Debug.LogError("鐩爣涓虹┖ target == null ObjId : " + hurt.ObjID);
+ continue;
+ }
+
+ caster.battleField.battleEffectMgr.PlayEffect(targetObj.ObjID, skillConfig.ExplosionEffectId, targetObj.heroGo.transform);
+ }
+
+ // caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.ExplosionEffectId, target);
});
- caster.battleField.battleTweenMgr.OnPlayTween(tween);
+ bulletCurves.Add(bulletCurve);
+
+ }
+
+ protected void ShotToTarget(BattleObject target, Action<int, List<H0604_tagUseSkillAttack.tagSkillHurtObj>> _onHit)
+ {
+ EffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.BulletEffectId, caster.effectNode);
+ RectTransform effectTrans = effectPlayer.transform as RectTransform;
+
+ var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, target.heroGo.transform as RectTransform, tagUseSkillAttack, (index, hitList) =>
+ {
+ // 鍑讳腑灏遍攢姣佸瓙寮� 瀛愬脊涓嶉渶瑕佽嚜鍔ㄩ攢姣� 閰嶇疆琛ㄩ噷autoDestroy涓篺alse
+ caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, effectPlayer);
+ _onHit?.Invoke(index, hitList);
+ });
+
+ bulletCurves.Add(bulletCurve);
}
public override void Run()
{
-
+ foreach (var bulletCurve in bulletCurves)
+ {
+ if (!bulletCurve.IsFinished)
+ bulletCurve.Run();
+ }
}
}
\ No newline at end of file
diff --git a/Main/System/Battle/SkillEffect/NormalSkillEffect.cs b/Main/System/Battle/SkillEffect/NormalSkillEffect.cs
index d0e9a54..616eef4 100644
--- a/Main/System/Battle/SkillEffect/NormalSkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/NormalSkillEffect.cs
@@ -14,70 +14,70 @@
public NormalSkillEffect(SkillConfig _skillConfig, BattleObject _caster, H0604_tagUseSkillAttack _tagUseSkillAttack)
: base(_skillConfig, _caster, _tagUseSkillAttack)
{
-
+
}
public override void Play(Action<int, List<H0604_tagUseSkillAttack.tagSkillHurtObj>> _onHit)
{
- // 鐗规晥鐐稿紑鍦ㄩ樀瀹圭殑涓棿鐨勫洖璋�
- Action<int, List<H0604_tagUseSkillAttack.tagSkillHurtObj>> onHitLineUpCenter = (_hitIndex, _hurtList) =>
- {
- _onHit?.Invoke(_hitIndex, tagUseSkillAttack.HurtList.ToList());
- };
+ // // 鐗规晥鐐稿紑鍦ㄩ樀瀹圭殑涓棿鐨勫洖璋�
+ // Action<int, List<H0604_tagUseSkillAttack.tagSkillHurtObj>> onHitLineUpCenter = (_hitIndex, _hurtList) =>
+ // {
+ // _onHit?.Invoke(_hitIndex, tagUseSkillAttack.HurtList.ToList());
+ // };
- if (skillConfig.effectAnchor == SkillEffectAnchor.Caster)
- {
- CastInTarget(caster.heroGo.transform as RectTransform, onHitLineUpCenter);
- }
- else if (skillConfig.effectAnchor == SkillEffectAnchor.Target)
- {
- if (tagUseSkillAttack == null || tagUseSkillAttack.HurtList.Length <= 0)
- {
- Debug.LogError("娌℃湁鐩爣 tagUseSkillAttack.HurtList.Length <= 0");
- _onHit?.Invoke(0, default);
- return;
- }
+ // if (skillConfig.effectAnchor == SkillEffectAnchor.Caster)
+ // {
+ // CastInTarget(caster.heroGo.transform as RectTransform, onHitLineUpCenter);
+ // }
+ // else if (skillConfig.effectAnchor == SkillEffectAnchor.Target)
+ // {
+ // if (tagUseSkillAttack == null || tagUseSkillAttack.HurtList.Length <= 0)
+ // {
+ // Debug.LogError("娌℃湁鐩爣 tagUseSkillAttack.HurtList.Length <= 0");
+ // _onHit?.Invoke(0, default);
+ // return;
+ // }
- foreach (var hurt in tagUseSkillAttack.HurtList)
- {
- BattleObject target = caster.battleField.battleObjMgr.GetBattleObject((int)hurt.ObjID);
- if (target == null)
- {
- Debug.LogError("鐗规晥鐩爣涓虹┖ target == null ObjId : " + hurt.ObjID);
- continue;
- }
+ // foreach (var hurt in tagUseSkillAttack.HurtList)
+ // {
+ // BattleObject target = caster.battleField.battleObjMgr.GetBattleObject((int)hurt.ObjID);
+ // if (target == null)
+ // {
+ // Debug.LogError("鐗规晥鐩爣涓虹┖ target == null ObjId : " + hurt.ObjID);
+ // continue;
+ // }
- CastInTarget(target.heroGo.transform as RectTransform, (index, list) => _onHit(0, new List<H0604_tagUseSkillAttack.tagSkillHurtObj>() { hurt }));
- }
- }
- else if (skillConfig.effectAnchor == SkillEffectAnchor.AlliesCenter)
- {
- CastInTarget(caster.battleField.GetTeamNode(caster.Camp), onHitLineUpCenter);
- }
- else if (skillConfig.effectAnchor == SkillEffectAnchor.EnemiesCenter)
- {
- CastInTarget(caster.battleField.GetTeamNode(caster.Camp == BattleCamp.Blue ? BattleCamp.Red : BattleCamp.Blue), onHitLineUpCenter);
- }
- else
- {
- Debug.LogError("鏈煡鐨勬妧鑳界壒鏁堥敋鐐圭被鍨�: " + skillConfig.effectAnchor);
- }
+ // CastInTarget(target.heroGo.transform as RectTransform, (index, list) => _onHit(0, new List<H0604_tagUseSkillAttack.tagSkillHurtObj>() { hurt }));
+ // }
+ // }
+ // else if (skillConfig.effectAnchor == SkillEffectAnchor.AlliesCenter)
+ // {
+ // CastInTarget(caster.battleField.GetTeamNode(caster.Camp), onHitLineUpCenter);
+ // }
+ // else if (skillConfig.effectAnchor == SkillEffectAnchor.EnemiesCenter)
+ // {
+ // CastInTarget(caster.battleField.GetTeamNode(caster.Camp == BattleCamp.Blue ? BattleCamp.Red : BattleCamp.Blue), onHitLineUpCenter);
+ // }
+ // else
+ // {
+ // Debug.LogError("鏈煡鐨勬妧鑳界壒鏁堥敋鐐圭被鍨�: " + skillConfig.effectAnchor);
+ // }
}
protected void CastInTarget(RectTransform target, Action<int, List<H0604_tagUseSkillAttack.tagSkillHurtObj>> _onHit)
{
- EffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.EffectId, caster.effectNode);
+ // EffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.EffectId, caster.effectNode);
- RectTransform effectTrans = effectPlayer.transform as RectTransform;
+ // RectTransform effectTrans = effectPlayer.transform as RectTransform;
- _onHit?.Invoke(0, null);
+ // _onHit?.Invoke(0, null);
- // 閿�姣佽嚜韬笂鐨勭壒鏁堝簲璇ユ槸绛夌壒鏁堟挱鏀惧畬姣曚箣鍚�
- // caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.EffectId, effectPlayer);
- // 鎾斁鍙楀嚮鐗规晥
- caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.ExplotionEffectId, target);
+ // // 閿�姣佽嚜韬笂鐨勭壒鏁堝簲璇ユ槸绛夌壒鏁堟挱鏀惧畬姣曚箣鍚�
+ // // caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.EffectId, effectPlayer);
+ // // 鎾斁鍙楀嚮鐗规晥
+ // caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.ExplotionEffectId, target);
}
diff --git a/Main/System/Battle/SkillEffect/SkillEffect.cs b/Main/System/Battle/SkillEffect/SkillEffect.cs
index 9fb324f..348f020 100644
--- a/Main/System/Battle/SkillEffect/SkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/SkillEffect.cs
@@ -15,35 +15,10 @@
tagUseSkillAttack = _tagUseSkillAttack;
}
- public Action OnHit; // 琛ㄧ幇鍒拌揪鐩爣鏃跺洖璋�
-
//
public virtual void Play(Action<int, List<H0604_tagUseSkillAttack.tagSkillHurtObj>> _onHit)
{
- // OnHit = _onHit;
- // switch (skillConfig.effectType)
- // {
- // case SkillEffectType.StageEffect:
- // Debug.LogError("鎾斁鍦烘櫙鐗规晥");
- // break;
- // case SkillEffectType.Bullet:
- // // 浼唬鐮侊細琛ㄧ幇瀛愬脊椋炶
- // Debug.Log("鎾斁瀛愬脊鐗规晥");
- // // 鍒拌揪鐩爣鏃�
- // OnHit?.Invoke();
- // break;
- // case SkillEffectType.Direct:
- // // 浼唬鐮侊細鐩存帴鍦ㄧ洰鏍囪韩涓婃挱鏀剧壒鏁�
- // Debug.Log("鎾斁鐩存帴鐗规晥");
- // OnHit?.Invoke();
- // break;
- // case SkillEffectType.BuffEffect:
- // // 浼唬鐮侊細鎾斁鎸佺画鐗规晥
- // Debug.Log("鎾斁Buff鐗规晥");
- // break;
- // default:
- // break;
- // }
+
}
public virtual void Run()
diff --git a/Main/System/Battle/SkillEffect/SkillEffectFactory.cs b/Main/System/Battle/SkillEffect/SkillEffectFactory.cs
index ef959f3..bc4f710 100644
--- a/Main/System/Battle/SkillEffect/SkillEffectFactory.cs
+++ b/Main/System/Battle/SkillEffect/SkillEffectFactory.cs
@@ -6,20 +6,20 @@
{
public static SkillEffect CreateSkillEffect(BattleObject caster, SkillConfig skillConfig, H0604_tagUseSkillAttack tagUseSkillAttack)
{
- switch (skillConfig.effectType)
- {
- case SkillEffectType.Bullet:
- return new BulletSkillEffect(skillConfig, caster, tagUseSkillAttack);
- case SkillEffectType.Direct:
- return new NormalSkillEffect(skillConfig, caster, tagUseSkillAttack);
- // case SkillEffectType.BuffEffect:
- // return new BuffSkillEffect(skillConfig, caster, targets);
- // case SkillEffectType.StageEffect:
- // return new StageSkillEffect(skillConfig, caster, targets);
- default:
- UnityEngine.Debug.LogError("Unknown Skill Effect Type");
- break;
- }
+ // switch (skillConfig.effectType)
+ // {
+ // case SkillEffectType.Bullet:
+ // return new BulletSkillEffect(skillConfig, caster, tagUseSkillAttack);
+ // case SkillEffectType.Direct:
+ // return new NormalSkillEffect(skillConfig, caster, tagUseSkillAttack);
+ // // case SkillEffectType.BuffEffect:
+ // // return new BuffSkillEffect(skillConfig, caster, targets);
+ // // case SkillEffectType.StageEffect:
+ // // return new StageSkillEffect(skillConfig, caster, targets);
+ // default:
+ // UnityEngine.Debug.LogError("Unknown Skill Effect Type");
+ // break;
+ // }
return null;
}
}
\ No newline at end of file
diff --git a/Main/System/Hero/HeroFetterInfo.cs b/Main/System/Hero/HeroFetterInfo.cs
index 32612c6..2bab5c8 100644
--- a/Main/System/Hero/HeroFetterInfo.cs
+++ b/Main/System/Hero/HeroFetterInfo.cs
@@ -30,9 +30,9 @@
int count = 0;
- for (int i = 0; i < teamBase.teamHeros.Length; i++)
+ for (int i = 0; i < teamBase.serverHeroes.Length; i++)
{
- TeamHero teamHero = teamBase.teamHeros[i];
+ TeamHero teamHero = teamBase.serverHeroes[i];
if (null == teamHero)
continue;
diff --git a/Main/System/KnapSack/PackManager.cs b/Main/System/KnapSack/PackManager.cs
index 3aff3c2..22e4249 100644
--- a/Main/System/KnapSack/PackManager.cs
+++ b/Main/System/KnapSack/PackManager.cs
@@ -887,23 +887,23 @@
private void AddItemUseTypeDict(int id)
{
- SkillConfig skillConfig = GetSkillConfig(id);
- int itemCount = GetItemCountByID(PackType.Item, id);
- if (skillConfig != null && itemCount > 0)
- {
- if (!itemUseTypeDict.ContainsKey(skillConfig.SkillTypeID))
- {
- itemUseTypeDict.Add(skillConfig.SkillTypeID, id);
- }
- else
- {
- SkillConfig preSkillConfig = GetSkillConfig(itemUseTypeDict[skillConfig.SkillTypeID]);
- if (skillConfig.SkillLV > preSkillConfig.SkillLV)
- {
- itemUseTypeDict[skillConfig.SkillTypeID] = id;
- }
- }
- }
+ // SkillConfig skillConfig = GetSkillConfig(id);
+ // int itemCount = GetItemCountByID(PackType.Item, id);
+ // if (skillConfig != null && itemCount > 0)
+ // {
+ // if (!itemUseTypeDict.ContainsKey(skillConfig.SkillTypeID))
+ // {
+ // itemUseTypeDict.Add(skillConfig.SkillTypeID, id);
+ // }
+ // else
+ // {
+ // SkillConfig preSkillConfig = GetSkillConfig(itemUseTypeDict[skillConfig.SkillTypeID]);
+ // if (skillConfig.SkillLV > preSkillConfig.SkillLV)
+ // {
+ // itemUseTypeDict[skillConfig.SkillTypeID] = id;
+ // }
+ // }
+ // }
}
diff --git a/Main/System/MainLevel.meta b/Main/System/MainLevel.meta
new file mode 100644
index 0000000..984e3ba
--- /dev/null
+++ b/Main/System/MainLevel.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a02c6eff6ff37404ab5bdfb3357a7fa1
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Main/System/MainLevel/MainLevelManager.cs b/Main/System/MainLevel/MainLevelManager.cs
new file mode 100644
index 0000000..5b940f9
--- /dev/null
+++ b/Main/System/MainLevel/MainLevelManager.cs
@@ -0,0 +1,21 @@
+using System.Collections.Generic;
+using UnityEngine;
+using LitJson;
+
+
+public class MainLevelManager : GameSystemManager<MainLevelManager>
+{
+
+ public override void Init()
+ {
+ base.Init();
+ }
+
+ public override void Release()
+ {
+ base.Release();
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta b/Main/System/MainLevel/MainLevelManager.cs.meta
similarity index 83%
copy from Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
copy to Main/System/MainLevel/MainLevelManager.cs.meta
index 9310e5e..712fc99 100644
--- a/Main/System/Battle/Bullet/TrajectoryBullet.cs.meta
+++ b/Main/System/MainLevel/MainLevelManager.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 3d40a22572b07c24e9eefb52db0bfd87
+guid: 8b71fdc64f650e34c972f50e1a10300f
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Main/System/Message/RichTableEvent.cs b/Main/System/Message/RichTableEvent.cs
index ec7423c..31e20ae 100644
--- a/Main/System/Message/RichTableEvent.cs
+++ b/Main/System/Message/RichTableEvent.cs
@@ -193,7 +193,7 @@
var _cfg = SkillConfig.Get(_id);
if (_cfg != null)
{
- return _cfg.BuffDescription;
+ return _cfg.Description;
}
}
}
diff --git a/Main/System/Team/TeamBase.cs b/Main/System/Team/TeamBase.cs
index e22edc8..e0f4653 100644
--- a/Main/System/Team/TeamBase.cs
+++ b/Main/System/Team/TeamBase.cs
@@ -28,9 +28,9 @@
private int ShapeType;
public int ServerShapeType { get; private set; }
- public TeamHero[] teamHeros = new TeamHero[TeamConst.MaxTeamHeroCount];
+ public TeamHero[] tempHeroes = new TeamHero[TeamConst.MaxTeamHeroCount];
- public TeamHero[] serverData { get; private set; } = new TeamHero[TeamConst.MaxTeamHeroCount];
+ public TeamHero[] serverHeroes { get; private set; } = new TeamHero[TeamConst.MaxTeamHeroCount];
public TeamBase(TeamType _teamType)
{
@@ -49,12 +49,12 @@
for (int i = 0; i < lineUp.ObjCnt; i++)
{
- if (i < teamHeros.Length)
+ if (i < tempHeroes.Length)
{
var fightObj = lineUp.ObjList[i];
TeamHero hero = new TeamHero(fightObj, this);
- teamHeros[fightObj.PosNum] = hero;
- serverData[fightObj.PosNum] = hero;
+ tempHeroes[fightObj.PosNum] = hero;
+ serverHeroes[fightObj.PosNum] = hero;
}
else
{
@@ -70,9 +70,9 @@
public int GetTeamHeroCount()
{
int count = 0;
- for (int i = 0; i < teamHeros.Length; i++)
+ for (int i = 0; i < tempHeroes.Length; i++)
{
- if (teamHeros[i] != null)
+ if (tempHeroes[i] != null)
{
count++;
}
@@ -83,7 +83,7 @@
public bool IsFull()
{
- return GetTeamHeroCount() >= teamHeros.Length;
+ return GetTeamHeroCount() >= tempHeroes.Length;
}
public bool IsEmpty()
@@ -109,7 +109,7 @@
savePack.PosCnt = (byte)GetTeamHeroCount();
savePack.HeroPosList = new CB412_tagCSHeroLineupSave.tagCSHeroLineupPos[savePack.PosCnt];
- foreach (var hero in teamHeros)
+ foreach (var hero in tempHeroes)
{
if (hero != null)
{
@@ -160,7 +160,7 @@
for (int i = 0; i < heroInfos.Count; i++)
{
- if (i < teamHeros.Length)
+ if (i < tempHeroes.Length)
{
var heroInfo = heroInfos[i];
TeamHero hero = new TeamHero(heroInfo, i, this);
@@ -175,7 +175,7 @@
public TeamHero GetHero(string guid)
{
- foreach (var hero in teamHeros)
+ foreach (var hero in tempHeroes)
{
if (hero != null && hero.guid == guid)
{
@@ -187,7 +187,7 @@
public TeamHero GetServerHero(string guid)
{
- foreach (var hero in serverData)
+ foreach (var hero in serverHeroes)
{
if (hero != null && hero.guid == guid)
{
@@ -200,7 +200,7 @@
// 甯冮樀鎺ュ彛
public bool HasHero(string guid)
{
- foreach (var hero in teamHeros)
+ foreach (var hero in tempHeroes)
{
if (hero != null && hero.guid == guid)
{
@@ -212,9 +212,9 @@
public int GetEmptyPosition()
{
- for (int i = 0; i < teamHeros.Length; i++)
+ for (int i = 0; i < tempHeroes.Length; i++)
{
- if (teamHeros[i] == null)
+ if (tempHeroes[i] == null)
{
return i;
}
@@ -225,25 +225,25 @@
// 甯冮樀鎺ュ彛
public void SetTeamHero(int posNum, TeamHero hero)
{
- teamHeros[posNum] = hero;
+ tempHeroes[posNum] = hero;
}
// 甯冮樀鎺ュ彛
public void SetServerTeamHero(int posNum, TeamHero hero)
{
- serverData[posNum] = hero;
- teamHeros[posNum] = hero;
+ serverHeroes[posNum] = hero;
+ tempHeroes[posNum] = hero;
}
public void AddHero(HeroInfo heroInfo, int targetPosition)
{
- if (targetPosition < 0 || targetPosition >= teamHeros.Length)
+ if (targetPosition < 0 || targetPosition >= tempHeroes.Length)
{
Debug.LogError("Invalid target position for adding hero.");
return;
}
- TeamHero targetHero = teamHeros[targetPosition];
+ TeamHero targetHero = tempHeroes[targetPosition];
if (null == targetHero)
{
@@ -308,9 +308,9 @@
{
if (teamHero == null) return false;
- for (int i = 0; i < teamHeros.Length; i++)
+ for (int i = 0; i < tempHeroes.Length; i++)
{
- if (teamHeros[i] != null && teamHeros[i].guid == teamHero.guid)
+ if (tempHeroes[i] != null && tempHeroes[i].guid == teamHero.guid)
{
SetTeamHero(i, null);
return true; // Hero removed successfully
@@ -321,19 +321,19 @@
public void SwapPosition(int index1, int index2)
{
- if (index1 < 0 || index1 >= teamHeros.Length || index2 < 0 || index2 >= teamHeros.Length)
+ if (index1 < 0 || index1 >= tempHeroes.Length || index2 < 0 || index2 >= tempHeroes.Length)
{
Debug.LogError("Invalid indices for swapping positions.");
return;
}
- TeamHero temp = teamHeros[index1];
- teamHeros[index1] = teamHeros[index2];
- teamHeros[index2] = temp;
+ TeamHero temp = tempHeroes[index1];
+ tempHeroes[index1] = tempHeroes[index2];
+ tempHeroes[index2] = temp;
// 鏇存柊浣嶇疆缂栧彿
- if (teamHeros[index1] != null) teamHeros[index1].positionNum = index1;
- if (teamHeros[index2] != null) teamHeros[index2].positionNum = index2;
+ if (tempHeroes[index1] != null) tempHeroes[index1].positionNum = index1;
+ if (tempHeroes[index2] != null) tempHeroes[index2].positionNum = index2;
}
}
\ No newline at end of file
diff --git a/Main/System/Team/TeamHero.cs b/Main/System/Team/TeamHero.cs
index 8117758..0e2a2cd 100644
--- a/Main/System/Team/TeamHero.cs
+++ b/Main/System/Team/TeamHero.cs
@@ -80,8 +80,8 @@
positionNum = teamHero.positionNum;
teamHero.positionNum = tempPosNum;
- teamBase.teamHeros[positionNum] = this;
- teamBase.teamHeros[teamHero.positionNum] = teamHero;
+ teamBase.tempHeroes[positionNum] = this;
+ teamBase.tempHeroes[teamHero.positionNum] = teamHero;
Update();
}
diff --git a/Main/System/Team/TeamManager.cs b/Main/System/Team/TeamManager.cs
index c32a199..9fe2403 100644
--- a/Main/System/Team/TeamManager.cs
+++ b/Main/System/Team/TeamManager.cs
@@ -35,30 +35,39 @@
// 鑻遍泟褰撳墠鎵�鏈夊湪鐨勯槦浼�
List<int> heroTeams = heroInfo.itemHero.GetUseData(81);
- Dictionary<TeamType, KeyValuePair<int, int>> teamTypeShapeTypePositionDict = new Dictionary<TeamType, KeyValuePair<int, int>>();
- foreach (var teamMsg in heroTeams)
- {
- // 鎵�鍦ㄩ樀瀹逛俊鎭垪琛� [闃靛绫诲瀷*10000+闃靛瀷绫诲瀷*100+浣嶇疆缂栧彿, ...]
- int teamType = teamMsg / 10000;
- int shapeType = (teamMsg % 10000) / 100;
- int positionIndex = teamMsg % 100;
- if (teamTypeShapeTypePositionDict.ContainsKey((TeamType)teamType))
+ // 褰撳墠鑻遍泟鎵�鍦ㄧ殑闃熶紞淇℃伅 <闃熶紞绫诲瀷, <闃熷舰, 浣嶇疆>>
+ Dictionary<TeamType, KeyValuePair<int, int>> teamTypeShapeTypePositionDict = new Dictionary<TeamType, KeyValuePair<int, int>>();
+
+
+ // 澶勭悊褰撳墠璁板綍鍦ㄨ嫳闆勪俊鎭噷鐨勯槦浼嶄俊鎭�
+ if (null != heroTeams)
+ {
+ foreach (var teamMsg in heroTeams)
{
- // 闃熶紞绫诲瀷鐩稿悓锛屾洿鏂伴樀鍨嬪拰浣嶇疆
- Debug.LogError("褰撳墠鑻遍泟鎷ユ湁涓や釜鐩稿悓鐨勯槦浼嶄俊鎭�: " + teamType + " " + shapeType + " " + positionIndex + ", hero guid is " + heroInfo.itemHero.guid);
- }
- else
- {
- // 闃熶紞绫诲瀷涓嶅悓锛屾坊鍔犳柊鐨�
- KeyValuePair<int, int> shapeTypePosition = new KeyValuePair<int, int>(shapeType, positionIndex);
- teamTypeShapeTypePositionDict.Add((TeamType)teamType, shapeTypePosition);
+ // 鎵�鍦ㄩ樀瀹逛俊鎭垪琛� [闃靛绫诲瀷*10000+闃靛瀷绫诲瀷*100+浣嶇疆缂栧彿, ...]
+ int teamType = teamMsg / 10000;
+ int shapeType = (teamMsg % 10000) / 100;
+ int positionIndex = teamMsg % 100;
+
+ if (teamTypeShapeTypePositionDict.ContainsKey((TeamType)teamType))
+ {
+ // 闃熶紞绫诲瀷鐩稿悓锛屾洿鏂伴樀鍨嬪拰浣嶇疆
+ Debug.LogError("褰撳墠鑻遍泟鎷ユ湁涓や釜鐩稿悓鐨勯槦浼嶄俊鎭�: " + teamType + " " + shapeType + " " + positionIndex + ", hero guid is " + heroInfo.itemHero.guid);
+ }
+ else
+ {
+ // 闃熶紞绫诲瀷涓嶅悓锛屾坊鍔犳柊鐨�
+ KeyValuePair<int, int> shapeTypePosition = new KeyValuePair<int, int>(shapeType, positionIndex);
+ teamTypeShapeTypePositionDict.Add((TeamType)teamType, shapeTypePosition);
+ }
}
}
+
// 閬嶅巻褰撳墠鎵�鏈夐槦浼� 鍒ゆ柇褰撳墠闃熶紞閲屾槸鍚︽湁璇ヨ嫳闆�
- // 濡傛灉鏈夌殑璇� 璇诲彇涓�涓嬪綋鍓嶆槸鍚﹁鑻遍泟杩樺湪闃熶紞閲� 浣嶇疆鏄惁鍙戠敓鍙樺寲
- // 鎴栬�呮槸闃靛瀷鍙戠敓鍙樺寲 鎴栬�呭崟绾殑鑻遍泟鍙戠敓鍙樺寲
+ // 濡傛灉鏈夌殑璇� 鏍规嵁鑻遍泟閲岀殑淇℃伅褰撳墠鏄惁璇ヨ嫳闆勮繕鍦ㄩ槦浼嶉噷 鏄惁鍙戠敓鍙樺寲
+ // =>1.闃靛瀷鍙戠敓鍙樺寲 2.浣嶇疆鍙戠敓鍙樺寲
// 濡傛灉娌℃湁鐨勮瘽 灏辫鏄庤鑻遍泟琚Щ鍑洪槦浼嶄簡
foreach (var team in teamDict.Values)
{
--
Gitblit v1.8.0