using UnityEngine;
using System.Collections;
using System.Collections.Generic;
namespace YLBattle
{
public partial class GameBattleManager
{
///
/// Test版本
///
///
///
/// 是否可释放技能
public void BattleInitializeTest(List blue, List red,
bool isCastSkill0 = false,
bool isCastSkill1 = false,
bool isCastSkill2 = false,
bool isCastSkill3 = false,
bool isCastSkill4 = false
)
{
this.mBattleParam.redteam.Clear();
this.mBattleParam.blueteam.Clear();
int seat = -1;
//List mSort = new List() { 3, 1, 0, 2, 4 };
foreach (GameHeroVo vo in red)
{
seat++;
if (vo == null)
{
continue;
}
HeroAdapter adaptee = new HeroAdapter(vo, seat, false);
this.mBattleParam.redteam.Add(adaptee);
}
seat = -1;
foreach (GameHeroVo vo in blue)
{
seat++;
if (vo == null)
{
continue;
}
HeroAdapter adaptee = new HeroAdapter(vo, seat, false);
this.mBattleParam.blueteam.Add(adaptee);
}
BattleSwitch.IsOpenAttack = isCastSkill0;
BattleSwitch.IsOpenEnemySkill = isCastSkill1;
BattleSwitch.IsOpenLeaderSkill = isCastSkill2;
BattleSwitch.isOpenCOMBO = isCastSkill3;
BattleSwitch.IsConsumePower = isCastSkill4;
BattlesSimulatedData.Instance.TestBlue = blue;
BattlesSimulatedData.Instance.TestRed = red;
BattleInitialize(0, null, false, null, 0, 0, string.Empty, (int)BattleMode.Test, 0);
}
///
/// Guide引导
///
///
///
/// 是否可释放技能
public void BattleInitializeGuide(int level, List blue, List red)
{
this.mBattleParam.redteam.Clear();
this.mBattleParam.blueteam.Clear();
int seat = -1;
//foreach (HeroGameVo vo in red)
//{
// seat++;
// if (vo == null)
// {
// continue;
// }
// HeroAdapter adaptee = new HeroAdapter(vo, seat, false);
// this.mBattleParam.redteam.Add(adaptee);
//}
seat = -1;
foreach (GameHeroVo vo in blue)
{
seat++;
if (vo == null)
{
continue;
}
HeroAdapter adaptee = new HeroAdapter(vo, seat, false);
this.mBattleParam.blueteam.Add(adaptee);
}
// List blue2 = new List { "10001'", "10002" };
BattlesSimulatedData.Instance.TestBlue = blue;
BattlesSimulatedData.Instance.TestRed = red;
BattleInitialize(level, null, false, null, 0, 0, string.Empty, 4, 0);
}
///
/// 战斗环境初始化【PVE】
///
/// 蓝队编号
/// 敌方编号 队伍信息
/// 对手的队长UID
/// 对手的PlayerUID
/// 对手的类型
public void BattleInitializePVP(List blue, List red, string redLeaderUID,
string pvpPlayerUID = "", string pvpType = "")
{
LogHelper.Log("PVP:战斗环境初始化");
this.mBattleParam.redteam.Clear();
if (red.Count <= 0)
{
LogHelper.LogError("PVP:敌方参与人数为零");
return;
}
this.mBattleParam.mPVP_PlayerUID = pvpPlayerUID;
this.mBattleParam.mPVP_Type = pvpType;
int seat = -1;
List mSort = new List() { 3, 1, 0, 2, 4 };
foreach (GameHeroVo vo in red)
{
seat++;
if (vo == null)
{
continue;
}
HeroAdapter adaptee = new HeroAdapter(vo, mSort[seat], vo.uid == redLeaderUID ? true : false);
this.mBattleParam.redteam.Add(adaptee);
}
BattleInitialize(0, blue, false, null, 0, 0, string.Empty, 2, 0);
}
///
/// 战斗环境初始化【PVE】
///
/// 关卡号
/// 蓝队参赛人员(服务器同步下来的唯一实例iid)
/// 是否允许自动战斗
/// buffID
/// 购买buff消耗的金币
/// 难度
/// 友情支援serverPlayerID
/// 0=普通模式 1=无穷尽 2=pvp 3=test 4=guide
/// 副本ID
public void BattleInitialize(int level, List blue, bool isAuto,
List buyBuffs,
int buyBuffCostGold,
int difficity = 0,
string friendUID = "",
int mode = 0,
int carbonId = 0,
int levelStatus = 0)
{
LogHelper.Log("战斗环境初始化");
this.mBattleParam.BuyBuffCostGold = buyBuffCostGold;
this.mBattleParam.TeamBuffs = buyBuffs;
this.mLevelStatus = levelStatus;
this.mBattleParam.levelID = level;
this.mBattleParam.levelDifficity = difficity;
this.mBattleParam.BattleCOMBOPower = 0;
this.mBattleParam.BattleBlueTeamSkillPower = 0;
this.mBattleParam.BattleRedTeamSkillPower = 0;
this.mBattleParam.levelMode = mode;
this.mBattleParam.carbonId = carbonId;
List preLoadFighterRes = new List();
/***
* 此参数决定在战斗时,己方角色数据从哪里读取!!!!!!
*/
BattleSwitch.battleMode = (BattleMode)mode;
#region 角色统计
switch (mode)
{
case 0: //0=普通模式
this.mBattleParam.redteam.Clear();
//this.mGateInfo = ArenasProxy.Instance.GetCombatDataInfoById(level);
this.mGateInfo = sm_gate_combat.GetMoById(level);
/**
* 预加载角色龙骨数据
* 己方已加载完,这里主要是敌方的角色预加载
*/
//if (mGateInfo != null)
//{
// List resMonsterRes = this.mGateInfo.AllGateEnemyModelIdList();
// foreach (string sTid in resMonsterRes)
// {
// sm_hero vo = sm_hero.GetMoByID(sTid);
// if (vo != null)
// preLoadFighterRes.Add(vo.dragonBoneMod);
// }
//}
break;
case 1: // 1=无穷尽
this.mBattleParam.redteam.Clear();
//this.mFroeverInfo = ArenasProxy.Instance.GetCombatDataInfoById(level);
this.mFroeverInfo = sm_gate_combat.GetMoById(level);
break;
case 2: //2=pvp
foreach (HeroAdapter adp in this.mBattleParam.redteam)
{
if (adp != null)
preLoadFighterRes.Add(adp.DragonboneName());
}
break;
case 3: //3=test
foreach (HeroAdapter adp in this.mBattleParam.redteam)
{
if (adp != null)
preLoadFighterRes.Add(adp.DragonboneName());
}
foreach (HeroAdapter adp in this.mBattleParam.blueteam)
{
if (adp != null)
preLoadFighterRes.Add(adp.DragonboneName());
}
break;
case 4: //4=guide
this.mBattleParam.redteam.Clear();
//this.mGateInfo = ArenasProxy.Instance.GetCombatDataInfoById(level);
this.mGateInfo = sm_gate_combat.GetMoById(level);
/**
* 预加载角色龙骨数据
* 己方已加载完,这里主要是敌方的角色预加载
*/
List resMonsterResGuide = new List(); //this.mGateInfo.AllGateEnemyModelIdList();
sm_gate.GetMoById(level).GetMonsterLevels().ForEach(l => l.GetMonsterIds().ForEach(id => resMonsterResGuide.Add(id.ToString())));
foreach (string sTid in resMonsterResGuide)
{
sm_hero vo = sm_hero.GetMoByID(sTid);
if (vo != null)
preLoadFighterRes.Add(vo.dragonBoneMod);
}
break;
}
#endregion
// 数据清空
this.mBattleParam.levelStatus = 0;
this.mBattleParam.isSecSpeed = false;
this.mBattleParam.levelTotalStatus = 0;
this.mBattleParam.BattleCOMBOPower = 0;
this.mBattleParam.FriendUID = friendUID;
this.mBattleParam.levelSenceBundle = string.Empty;
this.mBattleParam.IsCastLeaderSkill = false;
this.mBattleParam.bossId = string.Empty;
this.mBattleParam.IsBossArrival = false;
/// 准备本次己方战斗人员
LogHelper.Log("外部数据初始化:准备本次己方战斗人员数据");
/// 准备本次战斗人员
this.mBattleParam.reloadBlue = true;
if (mode != 3 && mode != 4) //
{
#region 正常模式
this.mBattleParam.blueteam.Clear();
string strHero = string.Empty;
for (int i = 0; i < blue.Count; ++i)
{
string[] mdata = blue[i].Split(',');
HeroAdapter adaptee = new HeroAdapter(mdata[0], mdata[1], mdata[2] == "1" ? true : false);
if (preLoadFighterRes.Contains(mdata[0]) == false)
{
preLoadFighterRes.Add(adaptee.TID());
}
strHero += adaptee.TID() + ",";
this.mBattleParam.blueteam.Add(adaptee);
}
///预加载
if (this.mBattleParam.FriendUID.Trim().Length > 0)
{
///无占位
LogHelper.Log("预加载友情支援数据...");
HeroAdapter friendAda = new HeroAdapter(this.mBattleParam.FriendUID);
this.mBattleParam.friend = friendAda;
}
LogHelper.Log("当前关卡己方类型:" + strHero);
#endregion
}
else
{
#region 测试模式
LogHelper.Log("测试模式:准备本次双方战斗人员数据");
#endregion
}
BattleResources.Dragons = preLoadFighterRes;
this.ChangeStatus(EBattleUpdateStatus.Waiting);
this.Update();
}
}
}