128 lines
3.5 KiB
C#
128 lines
3.5 KiB
C#
// Felix-Bang:FBRoundModel
|
||
// へ /|
|
||
// /\7 ∠_/
|
||
// / │ / /
|
||
// │ Z _,< / /`ヽ
|
||
// │ ヽ / 〉
|
||
// Y ` / /
|
||
// イ● 、 ● ⊂⊃〈 /
|
||
// () へ | \〈
|
||
// >ー 、_ ィ │ //
|
||
// / へ / ノ<| \\
|
||
// ヽ_ノ (_/ │//
|
||
// 7 |/
|
||
// >―r ̄ ̄`ー―_
|
||
// Describe:
|
||
// Createtime:
|
||
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using UnityEngine;
|
||
using FBFramework;
|
||
|
||
namespace FBApplication
|
||
{
|
||
public class FBRoundModel : FBModel
|
||
{
|
||
|
||
#region 常量
|
||
private const float f_roundInterval = 3f; //回合之间的间隔时间 3秒
|
||
private const float f_spawnInterval = 1f; //两怪物出生间隔 1秒
|
||
#endregion
|
||
|
||
#region 字段
|
||
private List<FBRound> f_rounds = new List<FBRound>();
|
||
private int f_roundIndex = -1; //当前回合的索引
|
||
private bool f_allRoundsComplete = false; //是否所有怪物都出来
|
||
private Coroutine f_coroutine;
|
||
#endregion
|
||
|
||
#region 属性
|
||
public override string Name
|
||
{
|
||
get { return FBConsts.M_RoundModel; }
|
||
}
|
||
|
||
/// <summary> 回合索引 </summary>
|
||
public int RoundIndex
|
||
{
|
||
get { return f_roundIndex; }
|
||
}
|
||
|
||
/// <summary> 总回合数 </summary>
|
||
public int RoundTotal
|
||
{
|
||
get { return f_rounds.Count; }
|
||
}
|
||
|
||
/// <summary> 所有回合是否完成 </summary>
|
||
public bool AllRoundComplete
|
||
{
|
||
get { return f_allRoundsComplete; }
|
||
}
|
||
#endregion
|
||
|
||
#region 方法
|
||
public void LoadLevel(FBLevel level)
|
||
{
|
||
f_rounds = level.Rounds;
|
||
}
|
||
|
||
public void StartRound()
|
||
{
|
||
f_coroutine = FBGame.Instance.StartCoroutine(RunRound());
|
||
}
|
||
|
||
public void StopRound()
|
||
{
|
||
FBGame.Instance.StopCoroutine(f_coroutine);
|
||
}
|
||
|
||
IEnumerator RunRound()
|
||
{
|
||
f_roundIndex = -1;
|
||
f_allRoundsComplete = false;
|
||
|
||
for (int i = 0; i < f_rounds.Count; i++)
|
||
{
|
||
f_roundIndex = i;
|
||
|
||
//回合开始
|
||
FBRoundStartArgs e = new FBRoundStartArgs
|
||
{
|
||
RoundIndex = f_roundIndex,
|
||
RoundTotal = RoundTotal
|
||
};
|
||
SendEvent(FBConsts.E_RoundStart, e);
|
||
|
||
FBRound round = f_rounds[i];
|
||
for (int k = 0; k < round.Count; k++)
|
||
{
|
||
//出怪间隔
|
||
yield return new WaitForSeconds(f_spawnInterval);
|
||
|
||
//出怪事件
|
||
FBSpawnMonsterArgs spawnArgs = new FBSpawnMonsterArgs
|
||
{
|
||
MonsterID = round.MonsterID
|
||
};
|
||
SendEvent(FBConsts.E_SpawnMonster,spawnArgs);
|
||
|
||
if (i == f_rounds.Count -1 && k == round.Count - 1)
|
||
f_allRoundsComplete = true;
|
||
}
|
||
|
||
//回合间隔
|
||
if(!f_allRoundsComplete)
|
||
yield return new WaitForSeconds(f_roundInterval);
|
||
}
|
||
}
|
||
|
||
|
||
#endregion
|
||
|
||
#region 帮助方法
|
||
#endregion
|
||
}
|
||
}
|