// 更新 public override void Update() { if (m_StageData.Count == 0) { return; } // 是否可以产生 m_CoolDown -= Time.deltaTime; if (m_CoolDown > 0) { return; } m_CoolDown = m_MaxCoolDown; // 取得上场的角色 StageData theNewEnemy = GetEnemy(); if (theNewEnemy == null) { return; } // 一次产生一个单位 ICharacterFactory Factory = PBDFactory.GetCharacterFactory(); Factory.CreateEnemy(theNewEnemy.emEnemy, theNewEnemy.emWeapon, m_SpawnPosition, m_AttackPosition); }
// 執行 public override void Execute() { // 建立Soldier ICharacterFactory Factory = PBDFactory.GetCharacterFactory(); ISoldier Soldier = Factory.CreateSoldier(m_emSoldier, m_emWeapon, m_Lv, m_Position); // 依機率產生前輟能力 int Rate = UnityEngine.Random.Range(0, 100); int AttrID = 0; if (Rate > 90) { AttrID = 13; } else if (Rate > 80) { AttrID = 12; } else if (Rate > 60) { AttrID = 11; } else { return; } // 加上字首能力 //Debug.Log("加上前輟能力:"+AttrID); IAttrFactory AttrFactory = PBDFactory.GetAttrFactory(); SoldierAttr PreAttr = AttrFactory.GetEliteSoldierAttr(ENUM_AttrDecorator.Prefix, AttrID, Soldier.GetSoldierValue()); Soldier.SetCharacterAttr(PreAttr); }
// 显示信息 public void ShowInfo(ICamp Camp) { //Debug.Log("显示兵营信息"); Show(); m_Camp = Camp; // 名称 m_CampNameTxt.text = m_Camp.GetName(); // 训练花费 m_TrainCostText.text = string.Format("AP:{0}", m_Camp.GetTrainCost()); // 训练中信息 ShowOnTrainInfo(); // Icon IAssetFactory Factory = PBDFactory.GetAssetFactory(); m_CampImage.sprite = Factory.LoadSprite(m_Camp.GetIconSpriteName()); // 升級功能 if (m_Camp.GetLevel() <= 0) { EnableLevelInfo(false); } else { EnableLevelInfo(true); m_CampLvTxt.text = string.Format("等级:" + m_Camp.GetLevel()); ShowWeaponLv(); // 显示武器等级 } }
// 显示信息 public void ShowInfo(ISoldier Soldier) { //Debug.Log("显示Soldier信息"); m_Soldier = Soldier; if (m_Soldier == null || m_Soldier.IsKilled()) { Hide(); return; } Show(); // 显示Soldier信息 // Icon IAssetFactory Factory = PBDFactory.GetAssetFactory(); m_Icon.sprite = Factory.LoadSprite(m_Soldier.GetIconSpriteName()); // 名称 m_NameTxt.text = m_Soldier.GetName(); // 等级 m_LvTxt.text = string.Format("等级:{0}", m_Soldier.GetSoldierValue().GetSoldierLv()); // Atk m_AtkTxt.text = string.Format("攻击力:{0}", m_Soldier.GetWeapon().GetAtkValue()); // Atk距离 m_AtkRangeTxt.text = string.Format("攻击距离:{0}", m_Soldier.GetWeapon().GetAtkRange()); // Speed m_SpeedTxt.text = string.Format("移动速度:{0}", m_Soldier.GetSoldierValue().GetMoveSpeed());; // 更新HP信息 RefreshHPInfo(); }
// 顯示資訊 public void ShowInfo(ISoldier Soldier) { //Debug.Log("顯示Soldier資訊"); m_Soldier = Soldier; if (m_Soldier == null || m_Soldier.IsKilled()) { Hide(); return; } Show(); // 顯示Soldier資訊 // Icon IAssetFactory Factory = PBDFactory.GetAssetFactory(); m_Icon.sprite = Factory.LoadSprite(m_Soldier.GetIconSpriteName()); // 名稱 m_NameTxt.text = m_Soldier.GetName(); // 等級 m_LvTxt.text = string.Format("等級:{0}", m_Soldier.GetSoldierValue().GetSoldierLv()); // Atk m_AtkTxt.text = string.Format("攻擊力:{0}", m_Soldier.GetWeapon().GetAtkValue()); // Atk距離 m_AtkRangeTxt.text = string.Format("攻擊距離:{0}", m_Soldier.GetWeapon().GetAtkRange()); // Speed m_SpeedTxt.text = string.Format("移動速度:{0}", m_Soldier.GetSoldierValue().GetMoveSpeed());; // 更新HP資訊 RefreshHPInfo(); }
// 加入武器 public override void AddWeapon() { IWeaponFactory WeaponFactory = PBDFactory.GetWeaponFactory(); IWeapon Weapon = WeaponFactory.CreateWeapon(m_BuildParam.emWeapon); // 设定给角色 m_BuildParam.NewCharacter.SetWeapon(Weapon); }
// 载入Asset中的角色模型 public override void LoadAsset(int GameObjectID) { IAssetFactory AssetFactory = PBDFactory.GetAssetFactory(); GameObject SoldierGameObject = AssetFactory.LoadSoldier(m_BuildParam.NewCharacter.GetAssetName()); SoldierGameObject.transform.position = m_BuildParam.SpawnPosition; SoldierGameObject.gameObject.name = string.Format("Soldier[{0}]", GameObjectID); m_BuildParam.NewCharacter.SetGameObject(SoldierGameObject); }
public override void SetCharacterAttr() { // 取得Enemy的數值 IAttrFactory theAttrFactory = PBDFactory.GetAttrFactory(); int AttrID = m_BuildParam.NewCharacter.GetAttrID(); SoldierAttr theSoldierAttr = theAttrFactory.GetSoldierAttr(AttrID); // 設定數值的計算策略 theSoldierAttr.SetAttStrategy(new SoldierAttrStrategy()); // 設定給角色 m_BuildParam.NewCharacter.SetCharacterAttr(theSoldierAttr); }
// 播放音效 public void PlaySound(string ClipName) { // 取得音效 IAssetFactory Factory = PBDFactory.GetAssetFactory(); AudioClip theClip = Factory.LoadAudioClip(ClipName); if (theClip == null) { return; } m_Audio.clip = theClip; m_Audio.Play(); }
// 设定角色能力 public override void SetCharacterAttr() { // 取得Enemy的数值 IAttrFactory theAttrFactory = PBDFactory.GetAttrFactory(); int AttrID = m_BuildParam.NewCharacter.GetAttrID(); EnemyAttr theEnemyAttr = theAttrFactory.GetEnemyAttr(AttrID); // 设定数值的计算策略 theEnemyAttr.SetAttStrategy(new EnemyAttrStrategy()); // 设定给角色 m_BuildParam.NewCharacter.SetCharacterAttr(theEnemyAttr); }
// 播放特效 public void PlayEffect(string EffectName) { // 取得特效 IAssetFactory Factory = PBDFactory.GetAssetFactory(); GameObject EffectObj = Factory.LoadEffect(EffectName); if (EffectObj == null) { return; } // 加入 UnityTool.Attach(m_GameObject, EffectObj, Vector3.zero); }
public override void Execute() { // 先产生Enemy ICharacterFactory Factory = PBDFactory.GetCharacterFactory(); IEnemy theEnemy = Factory.CreateEnemy(m_emEnemy, ENUM_Weapon.Gun, m_Position, Vector3.zero); // 再建立俘兵(轉接器) SoldierCaptive NewSoldier = new SoldierCaptive(theEnemy); // 移除Enemy m_PBDGame.RemoveEnemy(theEnemy); // 加入Soldier m_PBDGame.AddSoldier(NewSoldier); }
// 设定角色能力 public override void SetCharacterAttr() { // 取得Soldier的数值 IAttrFactory theAttrFactory = PBDFactory.GetAttrFactory(); int AttrID = m_BuildParam.NewCharacter.GetAttrID(); SoldierAttr theSoldierAttr = theAttrFactory.GetSoldierAttr(AttrID); // 设定 theSoldierAttr.SetAttStrategy(new SoldierAttrStrategy()); // 设定等级 theSoldierAttr.SetSoldierLv(m_BuildParam.Lv); // 设定给角色 m_BuildParam.NewCharacter.SetCharacterAttr(theSoldierAttr); }
// 建立武器 public override IWeapon CreateWeapon(ENUM_Weapon emWeapon) { IWeapon pWeapon = null; string AssetName = ""; // Unity模型名称 int AttrID = 0; // 武器的能力值 // 依武器 switch (emWeapon) { case ENUM_Weapon.Gun: pWeapon = new WeaponGun(); AssetName = "WeaponGun"; AttrID = 1; break; case ENUM_Weapon.Rifle: pWeapon = new WeaponRifle(); AssetName = "WeaponRifle"; AttrID = 2; break; case ENUM_Weapon.Rocket: pWeapon = new WeaponRocket(); AssetName = "WeaponRocket"; AttrID = 3; break; default: Debug.LogWarning("CreateWeapon:无法建立[" + emWeapon + "]"); return(null); } // 产生Asset IAssetFactory AssetFactory = PBDFactory.GetAssetFactory(); GameObject WeaponGameObjet = AssetFactory.LoadWeapon(AssetName); pWeapon.SetGameObject(WeaponGameObjet); // 取得武器的威力 IAttrFactory theAttrFactory = PBDFactory.GetAttrFactory(); WeaponAttr theWeaponAttr = theAttrFactory.GetWeaponAttr(AttrID); // 设定武器的威力 pWeapon.SetWeaponAttr(theWeaponAttr); return(pWeapon); }
// 顯示音效 protected void ShowSoundEffect(string ClipName) { if (m_Audio == null) { return; } // 取得音效 IAssetFactory Factory = PBDFactory.GetAssetFactory(); AudioClip theClip = Factory.LoadAudioClip(ClipName); if (theClip == null) { return; } m_Audio.clip = theClip; m_Audio.Play(); }
// Update is called once per frame void UnitTest_CharacterCreate() { ICharacterFactory Factory = PBDFactory.GetCharacterFactory(); // 建立Soldier ISoldier theSoldier = Factory.CreateSoldier(ENUM_Soldier.Rookie, ENUM_Weapon.Gun, 1, new Vector3(0, 0, 0)); // 建立Enemy IEnemy theEnemy = Factory.CreateEnemy(ENUM_Enemy.Elf, ENUM_Weapon.Rocket, new Vector3(0, 0, 0), new Vector3(100, 0, 0)); // 建立俘兵 ISoldier theCaptive = new SoldierCaptive(theEnemy); // Soldier打Enemy //theSoldier.Attack( theEnemy ); // Enemy打Soldier //theEnemy.Attack( theSoldier ); }
// 增加勋章 public virtual void AddMedal() { if (m_MedalCount >= MAX_MEDAL) { return; } // 增加勋章 m_MedalCount++; // 取得对应的勋章加乘值 int AttrID = m_MedalCount + MEDAL_VALUE_ID; IAttrFactory theAttrFactory = PBDFactory.GetAttrFactory(); // 加上字尾能力 SoldierAttr SufAttr = theAttrFactory.GetEliteSoldierAttr(ENUM_AttrDecorator.Suffix, AttrID, m_Attribute as SoldierAttr); SetCharacterAttr(SufAttr); }
// Soldier能力 void UnitTest_SoldierValue() { ICharacterFactory Factory = PBDFactory.GetCharacterFactory(); // 建立Soldier ISoldier theSoldier = Factory.CreateSoldier(ENUM_Soldier.Rookie, ENUM_Weapon.Gun, 1, new Vector3(0, 0, 0)); // 加上前輟能力 IAttrFactory ValueFactory = PBDFactory.GetAttrFactory(); SoldierAttr PreAttr = ValueFactory.GetEliteSoldierAttr(ENUM_AttrDecorator.Prefix, 11, theSoldier.GetSoldierValue()); theSoldier.SetCharacterAttr(PreAttr); // 加上後輟能力 SoldierAttr SufValue = ValueFactory.GetEliteSoldierAttr(ENUM_AttrDecorator.Suffix, 21, theSoldier.GetSoldierValue()); theSoldier.SetCharacterAttr(SufValue); // 建立Enemy IEnemy theEnemy = Factory.CreateEnemy(ENUM_Enemy.Elf, ENUM_Weapon.Rocket, new Vector3(0, 0, 0), new Vector3(100, 0, 0)); // 建立俘兵 ISoldier theCaptive = new SoldierCaptive(theEnemy); // 加上前輟能力 PreAttr = ValueFactory.GetEliteSoldierAttr(ENUM_AttrDecorator.Prefix, 11, theCaptive.GetSoldierValue()); theCaptive.SetCharacterAttr(PreAttr); // 加上後輟能力 SufValue = ValueFactory.GetEliteSoldierAttr(ENUM_AttrDecorator.Suffix, 21, theCaptive.GetSoldierValue()); theCaptive.SetCharacterAttr(SufValue); // Soldier打Enemy //theSoldier.Attack( theEnemy ); // Enemy打Soldier //theEnemy.Attack( theSoldier ); }