法杖,武器切换

This commit is contained in:
SoulliesOfficial
2025-12-24 16:58:51 -05:00
parent 2a2aa728d5
commit 3bcd7c1cf8
78 changed files with 230589 additions and 50400 deletions

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 227a01888e283184ca2c520daf8ac212
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,89 @@
using System.Collections.Generic;
using Cielonos.MainGame.Characters;
using UnityEngine;
namespace Cielonos.MainGame
{
public partial class BattleManager
{
public class AttackAreaSubmodule : SubmoduleBase<BattleManager>
{
public AttackAreaCollection playerAttackAreas;
public AttackAreaCollection enemyAttackAreas;
public AttackAreaSubmodule(BattleManager owner) : base(owner)
{
playerAttackAreas = new AttackAreaCollection();
enemyAttackAreas = new AttackAreaCollection();
}
public void Register(AttackAreaBase attackArea)
{
if (attackArea.creator.fraction == Fraction.Player)
{
Debug.Log($"Registered AttackArea: {attackArea.areaName}");
playerAttackAreas.Add(attackArea);
}
else if (attackArea.creator.fraction == Fraction.Enemy)
{
enemyAttackAreas.Add(attackArea);
}
}
public void Unregister(AttackAreaBase attackArea)
{
if (attackArea.creator.fraction == Fraction.Player)
{
Debug.Log($"Unregistered AttackArea: {attackArea.areaName}");
playerAttackAreas.Remove(attackArea);
}
else if (attackArea.creator.fraction == Fraction.Enemy)
{
enemyAttackAreas.Remove(attackArea);
}
}
}
public class AttackAreaCollection
{
public List<AttackAreaBase> activeAttackAreas;
public List<NormalArea> activeNormalAreas;
public List<Projectile> activeProjectiles;
public AttackAreaCollection()
{
activeAttackAreas = new List<AttackAreaBase>();
activeNormalAreas = new List<NormalArea>();
activeProjectiles = new List<Projectile>();
}
public void Add(AttackAreaBase attackArea)
{
activeAttackAreas.Add(attackArea);
if (attackArea is NormalArea normalArea)
{
activeNormalAreas.Add(normalArea);
}
else if (attackArea is Projectile projectile)
{
activeProjectiles.Add(projectile);
}
}
public void Remove(AttackAreaBase attackArea)
{
activeAttackAreas.Remove(attackArea);
if (attackArea is NormalArea normalArea)
{
activeNormalAreas.Remove(normalArea);
}
else if (attackArea is Projectile projectile)
{
activeProjectiles.Remove(projectile);
}
}
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: e21e9325e65fefa42924ff1f8880d266

View File

@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Cielonos.MainGame.Characters;
using Sirenix.OdinInspector;
using SLSFramework.General;
using UnityEngine;
namespace Cielonos.MainGame
{
public partial class BattleManager : Singleton<BattleManager>
{
private static Player Player => MainGameManager.Player;
[ShowInInspector]
private EnemySubmodule enemySm;
[ShowInInspector]
private AttackAreaSubmodule attackAreaSm;
protected override void Awake()
{
base.Awake();
enemySm ??= new EnemySubmodule(this);
attackAreaSm ??= new AttackAreaSubmodule(this);
}
}
public partial class BattleManager
{
public static EnemySubmodule EnemySm => Instance.enemySm;
public static AttackAreaSubmodule AttackAreaSm => Instance.attackAreaSm;
}
}

View File

@@ -1,32 +1,10 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Cielonos.MainGame.Characters;
using Sirenix.OdinInspector;
using SLSFramework.General;
using UnityEngine;
namespace Cielonos.MainGame
{
public partial class BattleManager : Singleton<BattleManager>
{
private static Player Player => MainGameManager.Player;
[ShowInInspector]
private EnemySubmodule enemySm;
protected override void Awake()
{
base.Awake();
enemySm ??= new EnemySubmodule(this);
}
}
public partial class BattleManager
{
public static EnemySubmodule EnemySm => Instance.enemySm;
}
public partial class BattleManager
{
public class EnemySubmodule : SubmoduleBase<BattleManager>
@@ -98,4 +76,4 @@ namespace Cielonos.MainGame
}
}
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: cfa83226b5985464ebb62c8b756c514d