备份CatanBuilding瘦身独立工程
This commit is contained in:
76
Assets/Scripts/SandDig/ExplosionEffect/ExplosionManager.cs
Normal file
76
Assets/Scripts/SandDig/ExplosionEffect/ExplosionManager.cs
Normal file
@@ -0,0 +1,76 @@
|
||||
using System.Collections.Generic;
|
||||
using asap.core;
|
||||
using cfg;
|
||||
using Script.RuntimeScript.ExplosionEffect.Effect;
|
||||
using Script.RuntimeScript.GameLogic;
|
||||
using UniRx;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Script.RuntimeScript.ExplosionEffect
|
||||
{
|
||||
public class ExplosionManager
|
||||
{
|
||||
private Dictionary<ExplosionEnum, IExplosion> ExplosionDic;
|
||||
|
||||
private CompositeDisposable _disposable = new CompositeDisposable();
|
||||
|
||||
public ExplosionManager()
|
||||
{
|
||||
ExplosionDic = new Dictionary<ExplosionEnum, IExplosion>
|
||||
{
|
||||
{ ExplosionEnum.Row, new RowExplosion() },
|
||||
{ ExplosionEnum.Col, new ColExplosion() },
|
||||
{ ExplosionEnum.Bomb, new BombExplosion() }
|
||||
};
|
||||
}
|
||||
|
||||
public void Init()
|
||||
{
|
||||
AddEvent();
|
||||
}
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
CleanEvent();
|
||||
}
|
||||
|
||||
private void AddEvent()
|
||||
{
|
||||
GContext.OnEvent<ExplosionClick>().Subscribe(OnExplosion).AddTo(_disposable);
|
||||
}
|
||||
|
||||
private void CleanEvent()
|
||||
{
|
||||
_disposable.Dispose();
|
||||
}
|
||||
|
||||
private void OnExplosion(ExplosionClick param)
|
||||
{
|
||||
SpecialEventItem item = param.effect as SpecialEventItem;
|
||||
switch (item.Data.Config.DiggingType)
|
||||
{
|
||||
case RowClear:
|
||||
CastExplosion(ExplosionEnum.Row,item);
|
||||
break;
|
||||
case ColumnClear:
|
||||
CastExplosion(ExplosionEnum.Col,item);
|
||||
break;
|
||||
case BombClear:
|
||||
CastExplosion(ExplosionEnum.Bomb,item);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void CastExplosion(ExplosionEnum explosionType,SpecialEventItem item)
|
||||
{
|
||||
if (ExplosionDic.TryGetValue(explosionType, out IExplosion explosion))
|
||||
{
|
||||
explosion.Play(item);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError("explosion type not found!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user