public override CharacterAttr AddCharacterAttr() { CharacterBaseAttr baseAttr = FactoryManager.AttrFactory.GetCharacterBaseAttr(t); SoldierAttr attr = new SoldierAttr(new SoldierAttrStrategy(), baseAttr, lv); return(attr); }
// 執行 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 override void setCharacterAttr() { SoldierAttr soldierAttr = new SoldierAttr(); soldierAttr.setAttrStragegy(new SoldierAttrStrategy()); m_soldierBuildParam.character.CharacterAttr = soldierAttr; }
// 取得加乘過的Soldier角色數值 public override SoldierAttr GetEliteSoldierAttr(ENUM_AttrDecorator emType,int AttrID, SoldierAttr theSoldierAttr) { // 取得加乘效果的數值 AdditionalAttr theAdditionalAttr = GetAdditionalAttr( AttrID ); if( theAdditionalAttr == null) { Debug.LogWarning("GetEliteSoldierAttr:加乘數值["+AttrID+"]不存在"); return theSoldierAttr; } // 產生裝飾者 BaseAttrDecorator theAttrDecorator = null; switch( emType) { case ENUM_AttrDecorator.Prefix: theAttrDecorator = new PrefixBaseAttr(); break; case ENUM_AttrDecorator.Suffix: theAttrDecorator = new SuffixBaseAttr(); break; } if(theAttrDecorator==null) { Debug.LogWarning("GetEliteSoldierAttr:無法針對["+emType+"]產生裝飾者"); return theSoldierAttr; } // 設定裝飾對像及加乘數值 theAttrDecorator.SetComponent( theSoldierAttr.GetBaseAttr()); theAttrDecorator.SetAdditionalAttr( theAdditionalAttr ); // 設定新的數值後回傳 theSoldierAttr.SetBaseAttr( theAttrDecorator ); return theSoldierAttr;// 回傳 }
// 训练Caption单位 public ISoldier TrainCaption(ENUM_Weapon emWeapon, int Lv) { // 产生物件 SoldierCaptain theSoldier = new SoldierCaptain(); // 设定模型 GameObject tmpGameObject = CreateGameObject("CaptainGameObjectName"); tmpGameObject.gameObject.name = "SoldierCaptain"; theSoldier.SetGameObject(tmpGameObject); // 加入武器 IWeapon Weapon = CreateWeapon(emWeapon); theSoldier.SetWeapon(Weapon); // 取得Soldier的数值,设定给角色 SoldierAttr theSoldierAttr = CreateSoliderAttr(3); theSoldierAttr.SetSoldierLv(Lv); theSoldier.SetCharacterAttr(theSoldierAttr); // 加入AI SoldierAI theAI = CreateSoldierAI(); theSoldier.SetAI(theAI); // 加入管理器 //PBaseDefenseGame.Instance.AddSoldier( theSoldier as ISoldier ); return(theSoldier as ISoldier); }
// 訓練Rookie單位 public ISoldier TrainRookie(ENUM_Weapon emWeapon, int Lv) { // 產生物件 SoldierRookie theSoldier = new SoldierRookie(); // 設定模型 GameObject tmpGameObject = CreateGameObject("RookieGameObjectName"); tmpGameObject.gameObject.name = "SoldierRookie"; theSoldier.SetGameObject(tmpGameObject); // 加入武器 IWeapon Weapon = CreateWeapon(emWeapon); theSoldier.SetWeapon(Weapon); // 取得Soldier的數值,設定給角色 SoldierAttr theSoldierAttr = CreateSoliderAttr(1); theSoldierAttr.SetSoldierLv(Lv); theSoldier.SetCharacterAttr(theSoldierAttr); // 加入AI SoldierAI theAI = CreateSoldierAI(); theSoldier.SetAI(theAI); // 加入管理器 //PBaseDefenseGame.Instance.AddSoldier( theSoldier as ISoldier ); return(theSoldier as ISoldier); }
// 加入角色數值 public override void AddAttr(ICharacter pRole, int Lv) { // 取得Soldier的數值,設定給角色 SoldierAttr theSoldierAttr = CreateSoliderAttr(pRole.GetAttrID()); theSoldierAttr.SetSoldierLv(Lv); pRole.SetCharacterAttr(theSoldierAttr); }
public SoldierCaptive(IEnemy enemy) { mEnemy = enemy; ICharacterAttr attr = new SoldierAttr(enemy.attr.strategy, 1, enemy.attr.baseAttr); this.attr = attr; this.gameobject = mEnemy.gameobject; this.weapon = mEnemy.weapon; }
public override void AddCharacterAttr() { CharacterBaseAttr baseAttr = FactoryManager.attrFactory.GetCharacterBaseAttr(mT); mPrefabName = baseAttr.prefabName; ICharacterAttr attr = new SoldierAttr(new SoldierAttrStrategy(), mLv, baseAttr); mCharacter.attr = attr; }
/// <summary> /// 俘兵营,利用适配器模式. /// 构造顺序按照SoldierBuilder建造者模式的顺序构建 /// </summary> /// <param name="m_Enemy"></param> public SoldierCaptive(IEnemy m_Enemy) { this.m_Enemy = m_Enemy; ICharacterAttr attr = new SoldierAttr(m_Enemy.Attr.Strategy, 1, m_Enemy.Attr.BaseAttr); this.Attr = attr; this.GameObject = m_Enemy.GameObject; this.Weapon = m_Enemy.Weapon; }
public override void AddCharacterAttr() { CharacterBaseAttr soldierBaseAttr = FactoryManager.GetAttrFactory.GetCharacterBaseAttr(mT); mPrefabName = soldierBaseAttr.PrefabName;//下方添加角色需要prefabName; ICharacterAttr attr = new SoldierAttr(new SoldierAttrStrategy(), mLv, soldierBaseAttr); mCharacter.Attr = attr; }
public override int GetDmgDescValue(ICharacterAttr CharacterAttr) { SoldierAttr theSoldierAttr = CharacterAttr as SoldierAttr; if (theSoldierAttr == null) { return(0); } return((theSoldierAttr.GetSoldierLv() - 1) * 2); }
public override SoldierAttr GetSoldierAttr(int AttrID) { if (m_SoldierAttrDB.ContainsKey(AttrID)) { SoldierAttr NewAttr = new SoldierAttr(); NewAttr.SetSoldierAttr(m_SoldierAttrDB[AttrID]); return(NewAttr); } Debug.LogWarning("GetSoldierAttr:AttrID[" + AttrID + "]不存在"); return(null); }
public override void SetBuildingAttr() { IAttrFactory Factroy = PBDGFactory.GetAttrFactory(); int attrID = m_buildParam.AttrID; SoldierAttr soldierAttr = Factroy.GetSoldierAttr(attrID); m_buildParam.NewBuding.SetAttr(soldierAttr); }
public override void AddCharacterAttr() { /* * //数值初始化 * string name = ""; * * int maxHP = 0; * * float moveSpeed = 0f; * * string iconSprite = ""; * * if (m_CharacterType == typeof(SoldierCaptain)) * { * name = "上尉士兵"; * maxHP = 100; * moveSpeed = 3f; * iconSprite = "CaptainIcon"; * m_PrefabName = "Soldier1"; * } * else if (m_CharacterType == typeof(SoldierSergeant)) * { * name = "中士士兵"; * maxHP = 90; * moveSpeed = 3f; * iconSprite = "SergeantIcon"; * m_PrefabName = "Soldier3"; * } * else if (m_CharacterType == typeof(SoldierRookie)) * { * name = "新兵士兵"; * maxHP = 80; * moveSpeed = 2.5f; * iconSprite = "RookieIcon"; * m_PrefabName = "Soldier2"; * } * else * { * Debug.LogError("找不到指定的士兵类型 T=" + m_CharacterType.ToString()); * } * ICharacterAttr attr = new SoldierAttr(new SoldierAttrStategy(), m_LV, name, maxHP, moveSpeed, iconSprite, m_PrefabName); * m_Character.Attr = attr; */ //享元模式优化成员属性 CharacterBaseAttr baseAttr = FactoryManager.AttrFactory.GetCharacterBaseAttr(m_CharacterType); m_PrefabName = baseAttr.PrefabName; ICharacterAttr attr = new SoldierAttr(new SoldierAttrStategy(), m_LV, baseAttr); m_Character.Attr = attr; }
// 获得Soldier的属性 public override SoldierAttr GetSoldierAttr(int AttrID) { if (m_SoldierAttrDB.ContainsKey(AttrID) == false) { Debug.LogWarning("GetSoldierAttr:AttrID[" + AttrID + "]属性不存在"); return(null); } // 产生属性对象并设置共享的属性数据 SoldierAttr NewAttr = new SoldierAttr(); NewAttr.SetBaseAttr(m_SoldierAttrDB[AttrID]); return(NewAttr); }
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); }
// 取得Soldier的數值 public override SoldierAttr GetSoldierAttr( int AttrID ) { if( m_SoldierAttrDB.ContainsKey( AttrID )==false) { Debug.LogWarning("GetSoldierAttr:AttrID["+AttrID+"]數值不存在"); return null; } // 產生數物件並設定共用的數值資料 SoldierAttr NewAttr = new SoldierAttr(); NewAttr.SetSoldierAttr(m_SoldierAttrDB[AttrID]); return NewAttr; }
public override SoldierAttr GetSoldierAttr(int Attr) { if (m_SoldierAttrDB.ContainsKey(Attr) == false) { Debug.LogError("未找到数据"); return(null); } SoldierAttr soldierAttr = new SoldierAttr(); soldierAttr.SetSoldierAttr(m_SoldierAttrDB[Attr]); return(soldierAttr); }
// 取得Soldier的数值 public override SoldierAttr GetSoldierAttr(int AttrID) { if (m_SoldierAttrDB.ContainsKey(AttrID) == false) { Debug.LogWarning("GetSoldierAttr:AttrID[" + AttrID + "]数值不存在"); return(null); } // 产生数物件并设定共用的数值资料 SoldierAttr NewAttr = new SoldierAttr(); NewAttr.SetSoldierAttr(m_SoldierAttrDB[AttrID]); return(NewAttr); }
public SoldierCaptive(IEnemy enemy) { mEnemy = enemy; //添加属性 ICharacterAttr attr = new SoldierAttr(enemy.attr.strategy, 1, enemy.attr.baseAttr); this.attr = attr; //游戏物体 this.gameObject = mEnemy.gameObject; //添加武器 this.weapon = mEnemy.weapon; }
//属性初始化 public override void initAttr(ICharacterAttr characterAttr) { SoldierAttr soldierAttr = characterAttr as SoldierAttr; if (soldierAttr == null) //需要判断参数是否是士兵属性 { return; } //等级加HP上限 if (soldierAttr.Lv > 0) { soldierAttr.addMaxHp((soldierAttr.Lv - 1) * 10); } }
// 设置角色能力 public override void SetCharacterAttr() { // 获取Soldier的属性 IAttrFactory theAttrFactory = RTSFactory.GetAttrFactory(); SoldierAttr theSoldierAttr = theAttrFactory.GetSoldierAttr( m_BuildParam.NewCharacter.GetAttrID()); // 设置 theSoldierAttr.SetAttrStrategy(new SoldierAttrStrategy()); // 设置等级 theSoldierAttr.SetSoldierLv(m_BuildParam.Lv); // 设置给角色 m_BuildParam.NewCharacter.SetCharacterAttr(theSoldierAttr); }
// 设定角色能力 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); }
/// <summary> /// 设置角色属性 /// </summary> public override void SetCharacterAttr() { IAttrFactory theAttrFactory = GameFactory.GetAttrFactory(); int AttrID = m_BuildParam.NewCharacter.GetAttrID(); SoldierAttr theSoldierAttr = theAttrFactory.GetSoldierAttr(AttrID); //m_BuildParam.NewCharacter.SetCharacterAttr(theSoldierAttr); theSoldierAttr.SetAttStrategy(new SoldierAttrStrategy()); theSoldierAttr.SetSoldierLv(m_BuildParam.Lv); m_BuildParam.NewCharacter.SetCharacterAttr(theSoldierAttr); }
// 增加勋章 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); }
public override void InitAttr(ICharacterAttr CharacterAttr) { SoldierAttr theSoldierAttr = CharacterAttr as SoldierAttr; if (theSoldierAttr == null) { return; } int AddMaxHP = 0; int Lv = theSoldierAttr.GetSoldierLv(); if (Lv > 0) { AddMaxHP = (Lv - 1) * 2; } theSoldierAttr.AddMaxHP(AddMaxHP); }
public override void InitAttr(ICharacterAttr _characterAttr) { SoldierAttr theSoldierAttr = _characterAttr as SoldierAttr; if (theSoldierAttr == null) { return; } //最大生命力有等级加成 int addMaxHP = 0; int lv = theSoldierAttr.GetSoldierLv(); if (lv > 0) { addMaxHP = (lv - 1) * 2; } //设置最高HP theSoldierAttr.AddMaxHP(addMaxHP); }
public override void InitAttr(ICharacterAttr CharacterAttr) { //是否为士兵类 SoldierAttr theSoldierAttr = CharacterAttr as SoldierAttr; if (theSoldierAttr == null) { return; } //最大生命力有等级加成 int AddMaxHP = 0; int Lv = theSoldierAttr.GetSoldierLv(); if (Lv > 0) { AddMaxHP = (Lv - 1) * 2; } //设置最高HP theSoldierAttr.AddMaxHP(AddMaxHP); }
// public SoldierCaptive( IEnemy theEnemy) { m_emSoldier = ENUM_Soldier.Captive; m_Captive = theEnemy; // 設定成像 SetGameObject( theEnemy.GetGameObject() ); // 將Enemy數值轉成Soldier用的 SoldierAttr tempAttr = new SoldierAttr(); tempAttr.SetSoldierAttr( theEnemy.GetCharacterAttr().GetBaseAttr() ); tempAttr.SetAttStrategy( theEnemy.GetCharacterAttr().GetAttStrategy()); tempAttr.SetSoldierLv( 1 ); // 設定為1級 SetCharacterAttr( tempAttr ); // 設定武器 SetWeapon( theEnemy.GetWeapon() ); // 更改為SoldierAI m_AI = new SoldierAI( this ); m_AI.ChangeAIState( new IdleAIState() ); }
// 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 ); }
// public SoldierCaptive(IEnemy theEnemy) { m_emSoldier = ENUM_Soldier.Captive; m_Captive = theEnemy; // 設定成像 SetGameObject(theEnemy.GetGameObject()); // 將Enemy數值轉成Soldier用的 SoldierAttr tempAttr = new SoldierAttr(); tempAttr.SetSoldierAttr(theEnemy.GetCharacterAttr().GetBaseAttr()); tempAttr.SetAttStrategy(theEnemy.GetCharacterAttr().GetAttStrategy()); tempAttr.SetSoldierLv(1); // 設定為1級 SetCharacterAttr(tempAttr); // 設定武器 SetWeapon(theEnemy.GetWeapon()); // 更改為SoldierAI m_AI = new SoldierAI(this); m_AI.ChangeAIState(new IdleAIState()); }
// 取得Soldier的數值:有字首字尾的加乘 public abstract SoldierAttr GetEliteSoldierAttr(ENUM_AttrDecorator emType,int AttrID, SoldierAttr theSoldierAttr);
public void SetCharacterAttr(SoldierAttr Attr){}
public void SetCharacterAttr(SoldierAttr Attr) { }