// 通知训练 public void UTTrainSoldier(ENUM_Soldier emSoldier) { if (m_SoldierCamps.ContainsKey(emSoldier)) { m_SoldierCamps[emSoldier].Train(); } }
// 建立Soldier public override ISoldier CreateSoldier(ENUM_Soldier emSoldier, ENUM_Weapon emWeapon, int Lv, Vector3 SpawnPosition) { // 產生對應的Character ICharacter theSoldier = null; switch (emSoldier) { case ENUM_Soldier.Rookie: theSoldier = new SoldierRookie(); break; case ENUM_Soldier.Sergeant: theSoldier = new SoldierSergeant(); break; case ENUM_Soldier.Captain: theSoldier = new SoldierCaptain(); break; default: Debug.LogWarning("CreateSoldier:無法建立[" + emSoldier + "]"); return(null); } // 增加角色功能 AddCharacterFuncs(theSoldier, emWeapon, Lv); // 加入管理器 //PBaseDefenseGame.Instance.AddSoldier( theSoldier as ISoldier); return(theSoldier as ISoldier); }
// 取得Solder兵种的数量 public int GetUnitCount(ENUM_Soldier emSoldier) { switch (emSoldier) { case ENUM_Soldier.Null: return(SoldierCount); case ENUM_Soldier.Rookie: return(SoldierRookieCount); case ENUM_Soldier.Sergeant: return(SoldierSergeantCount); case ENUM_Soldier.Captain: return(SoldierCaptainCount); case ENUM_Soldier.Captive: return(SoldierCaptiveCount); default: Debug.LogWarning("GetUnitCount:沒有[" + emSoldier + "]可以對映的计算方式"); break; } return(0); }
Vector3 m_Position; // 出現位置 // 訓練 public TrainSoldierCommand(ENUM_Soldier emSoldier, ENUM_Weapon emWeapon, int Lv, Vector3 Position) { m_emSoldier = emSoldier; m_emWeapon = emWeapon; m_Lv = Lv; m_Position = Position; }
Vector3 m_Position; // 出現位置 // 訓練 public TrainSoldierCommand( ENUM_Soldier emSoldier, ENUM_Weapon emWeapon, int Lv, Vector3 Position) { m_emSoldier = emSoldier; m_emWeapon = emWeapon; m_Lv = Lv; m_Position = Position; }
// 取得场景中的兵营 private SoldierCamp SoldierCampFactory(ENUM_Soldier emSoldier) { string GameObjectName = "SoldierCamp_"; float CoolDown = 0; string CampName = ""; string IconSprite = ""; switch (emSoldier) { case ENUM_Soldier.Rookie: GameObjectName += "Rookie"; CoolDown = 3; CampName = "菜鳥兵营"; IconSprite = "RookieCamp"; break; case ENUM_Soldier.Sergeant: GameObjectName += "Sergeant"; CoolDown = 4; CampName = "中士兵营"; IconSprite = "SergeantCamp"; break; case ENUM_Soldier.Captain: GameObjectName += "Captain"; CoolDown = 5; CampName = "上尉兵营"; IconSprite = "CaptainCamp"; break; default: Debug.Log("沒有指定[" + emSoldier + "]要取得的场景物件名称"); break; } // 取得物件 GameObject theGameObject = UnityTool.FindGameObject(GameObjectName); // 取得集合点 Vector3 TrainPoint = GetTrainPoint(GameObjectName); // 产生兵营 SoldierCamp NewCamp = new SoldierCamp(theGameObject, emSoldier, CampName, IconSprite, CoolDown, TrainPoint); NewCamp.SetPBaseDefenseGame(m_PBDGame); // 设定兵营使用的Script AddCampScript(theGameObject, NewCamp); return(NewCamp); }
// 取得場景中的兵營 private SoldierCamp SoldierCampFactory( ENUM_Soldier emSoldier ) { string GameObjectName = "SoldierCamp_"; float CoolDown = 0; string CampName = ""; string IconSprite = ""; switch( emSoldier ) { case ENUM_Soldier.Rookie: GameObjectName += "Rookie"; CoolDown = 3; CampName = "菜鳥兵營"; IconSprite = "RookieCamp"; break; case ENUM_Soldier.Sergeant: GameObjectName += "Sergeant"; CoolDown = 4; CampName = "中士兵營"; IconSprite = "SergeantCamp"; break; case ENUM_Soldier.Captain: GameObjectName += "Captain"; CoolDown = 5; CampName = "上尉兵營"; IconSprite = "CaptainCamp"; break; default: Debug.Log("沒有指定["+emSoldier+"]要取得的場景物件名稱"); break; } // 取得物件 GameObject theGameObject = UnityTool.FindGameObject( GameObjectName ); // 取得集合點 Vector3 TrainPoint = GetTrainPoint( GameObjectName ); // 產生兵營 SoldierCamp NewCamp = new SoldierCamp(theGameObject, emSoldier, CampName, IconSprite, CoolDown, TrainPoint); NewCamp.SetPBaseDefenseGame( m_PBDGame ); // 設定兵營使用的Script AddCampScript( theGameObject, NewCamp); return NewCamp; }
// 建立Soldier public override ISoldier CreateSoldier(ENUM_Soldier emSoldier, ENUM_Weapon emWeapon, int Lv, Vector3 SpawnPosition) { // 產生Soldier的參數 SoldierBuildParam SoldierParam = new SoldierBuildParam(); // 產生對應的Character switch (emSoldier) { case ENUM_Soldier.Rookie: SoldierParam.NewCharacter = new SoldierRookie(); break; case ENUM_Soldier.Sergeant: SoldierParam.NewCharacter = new SoldierSergeant(); break; case ENUM_Soldier.Captain: SoldierParam.NewCharacter = new SoldierCaptain(); break; default: Debug.LogWarning("CreateSoldier:無法建立[" + emSoldier + "]"); return(null); } if (SoldierParam.NewCharacter == null) { return(null); } // 設定共用參數 SoldierParam.emWeapon = emWeapon; SoldierParam.SpawnPosition = SpawnPosition; SoldierParam.Lv = Lv; // 產生對應的Builder及設定參數 SoldierBuilder theSoldierBuilder = new SoldierBuilder(); theSoldierBuilder.SetBuildParam(SoldierParam); // 產生 m_BuilderDirector.Construct(theSoldierBuilder); return(SoldierParam.NewCharacter as ISoldier); }
public override int GetTrainCost(ENUM_Soldier emSoldier, int CampLv, ENUM_Weapon emWeapon) { int Cost = 0; // 依兵種 switch (emSoldier) { case ENUM_Soldier.Rookie: Cost = 5; break; case ENUM_Soldier.Sergeant: Cost = 7; break; case ENUM_Soldier.Captain: Cost = 10; break; default: Debug.LogWarning("沒有定義[" + emSoldier + "]的訓練花費"); break; } // 依武器 switch (emWeapon) { case ENUM_Weapon.Gun: Cost += 5; break; case ENUM_Weapon.Rifle: Cost += 7; break; case ENUM_Weapon.Rocket: Cost += 10; break; } // 加等級 Cost += (CampLv - 1) * 2; return(Cost); }
public override ISoldier CreateSoldier(ENUM_Soldier enumSoldier, ENUM_Weapon enumWeapon, int Level, Vector3 SpawnPosition, Vector3 AttackPosition) { // 产生Soldier的参数 SoldierBuildParam SoldierParam = new SoldierBuildParam(); switch (enumSoldier) { case ENUM_Soldier.Rookie: SoldierParam.NewCharacter = new SoldierRookie(); break; case ENUM_Soldier.Sergeant: SoldierParam.NewCharacter = new SoldierSergeant(); break; case ENUM_Soldier.Captain: SoldierParam.NewCharacter = new SoldierCaptain(); break; default: Debug.LogWarning("CreateSoldier:无法产生[" + enumSoldier + "]"); return(null); } if (SoldierParam.NewCharacter == null) { return(null); } // 设置共享参数 SoldierParam.emWeapon = enumWeapon; SoldierParam.SpawnPosition = SpawnPosition; SoldierParam.Lv = Level; // 产生对应的Builder及设置参数 SoldierBuilder theSoldierBuilder = new SoldierBuilder(); theSoldierBuilder.SetBuildParam(SoldierParam); // 产生 m_BuilderDirector.Construct(theSoldierBuilder); return(SoldierParam.NewCharacter as ISoldier); }
public override int GetTrainCost( ENUM_Soldier emSoldier,int CampLv, ENUM_Weapon emWeapon) { int Cost = 0; // 依兵種 switch( emSoldier ) { case ENUM_Soldier.Rookie: Cost = 5; break; case ENUM_Soldier.Sergeant: Cost = 7; break; case ENUM_Soldier.Captain: Cost = 10; break; default: Debug.LogWarning("沒有定義["+emSoldier+"]的訓練花費"); break; } // 依武器 switch( emWeapon) { case ENUM_Weapon.Gun: Cost += 5; break; case ENUM_Weapon.Rifle: Cost += 7; break; case ENUM_Weapon.Rocket: Cost += 10; break; } // 加等級 Cost += (CampLv-1)*2; return Cost; }
// 建立Soldier public override ISoldier CreateSoldier( ENUM_Soldier emSoldier, ENUM_Weapon emWeapon, int Lv, Vector3 SpawnPosition) { // 產生Soldier的參數 SoldierBuildParam SoldierParam = new SoldierBuildParam(); // 產生對應的Character switch( emSoldier) { case ENUM_Soldier.Rookie: SoldierParam.NewCharacter = new SoldierRookie(); break; case ENUM_Soldier.Sergeant: SoldierParam.NewCharacter = new SoldierSergeant(); break; case ENUM_Soldier.Captain: SoldierParam.NewCharacter = new SoldierCaptain(); break; default: Debug.LogWarning("CreateSoldier:無法建立[" + emSoldier + "]"); return null; } if( SoldierParam.NewCharacter == null) return null; // 設定共用參數 SoldierParam.emWeapon = emWeapon; SoldierParam.SpawnPosition = SpawnPosition; SoldierParam.Lv = Lv; // 產生對應的Builder及設定參數 SoldierBuilder theSoldierBuilder = new SoldierBuilder(); theSoldierBuilder.SetBuildParam( SoldierParam ); // 產生 m_BuilderDirector.Construct( theSoldierBuilder ); return SoldierParam.NewCharacter as ISoldier; }
public override ISoldier createSoldier(ENUM_Soldier emSoldier, ENUM_Weapon emWeapon, Vector3 spawnPosition) { SoldierBuildParam buildParam = new SoldierBuildParam(); switch (emSoldier) { case ENUM_Soldier.Assault: buildParam.character = new SoldierAssault(); break; default: Debug.Log("不存在该Soldier类型"); return(null); } buildParam.weapon = emWeapon; buildParam.spawnPosition = spawnPosition; SoldierBuilder soldierBuilder = new SoldierBuilder(); soldierBuilder.setBuildParam(buildParam); m_characterBuilderSystem.construct(soldierBuilder); return(buildParam.character as ISoldier); }
Vector3 m_Position; // 訓練完成後的集合點 // 設定兵營產出的單位及冷 public SoldierCamp(GameObject theGameObject, ENUM_Soldier emSoldier,string CampName, string IconSprite ,float TrainCoolDown,Vector3 Position):base(theGameObject, TrainCoolDown,CampName,IconSprite ) { m_emSoldier = emSoldier; m_Position = Position; }
// 建立Soldier public abstract ISoldier CreateSoldier(ENUM_Soldier emSoldier, ENUM_Weapon emWeapon, int Lv, Vector3 SpawnPosition);
// 建立Soldier public override ISoldier CreateSoldier(ENUM_Soldier emSoldier, ENUM_Weapon emWeapon, int Lv, Vector3 SpawnPosition) { // 重宣告為空,防此錯誤呼 Debug.LogWarning("EnemyFactory不應該產生ISoldier物件"); return(null); }
// 产生Soldier public abstract ISoldier CreateSoldier(ENUM_Soldier enumSoldier, ENUM_Weapon enumWeapon, int Level, Vector3 SpawnPosition, Vector3 AttackPosition);
// 建立Soldier public override ISoldier CreateSoldier( ENUM_Soldier emSoldier, ENUM_Weapon emWeapon, int Lv,Vector3 SpawnPosition) { // 產生對應的Character ICharacter theSoldier = null; switch( emSoldier) { case ENUM_Soldier.Rookie: theSoldier = new SoldierRookie(); break; case ENUM_Soldier.Sergeant: theSoldier = new SoldierSergeant(); break; case ENUM_Soldier.Captain: theSoldier = new SoldierCaptain(); break; default: Debug.LogWarning("CreateSoldier:無法建立[" + emSoldier + "]"); return null; } // 增加角色功能 AddCharacterFuncs( theSoldier, emWeapon, Lv); // 加入管理器 //PBaseDefenseGame.Instance.AddSoldier( theSoldier as ISoldier); return theSoldier as ISoldier; }
// 通知訓練 public void UTTrainSoldier( ENUM_Soldier emSoldier ) { if( m_SoldierCamps.ContainsKey( emSoldier )) m_SoldierCamps[emSoldier].Train(); }
// 取得Solder兵種的數量 public int GetUnitCount( ENUM_Soldier emSoldier) { switch( emSoldier) { case ENUM_Soldier.Null: return SoldierCount; case ENUM_Soldier.Rookie: return SoldierRookieCount; case ENUM_Soldier.Sergeant: return SoldierSergeantCount; case ENUM_Soldier.Captain: return SoldierCaptainCount; case ENUM_Soldier.Captive: return SoldierCaptiveCount; default: Debug.LogWarning("GetUnitCount:沒有["+emSoldier+"]可以對映的計算方式"); break; } return 0; }
public abstract int GetTrainCost( ENUM_Soldier emSoldier,int CampLv, ENUM_Weapon emWeapon);
Vector3 m_Position; // 訓練完成後的集合點 // 設定兵營產出的單位及冷 public SoldierCamp(GameObject theGameObject, ENUM_Soldier emSoldier, string CampName, string IconSprite, float TrainCoolDown, Vector3 Position) : base(theGameObject, TrainCoolDown, CampName, IconSprite) { m_emSoldier = emSoldier; m_Position = Position; }
public abstract ISoldier createSoldier(ENUM_Soldier emSoldier, ENUM_Weapon emWeapon, Vector3 spawnPosition);
// 建立Soldier public abstract ISoldier CreateSoldier( ENUM_Soldier emSoldier, ENUM_Weapon emWeapon, int Lv,Vector3 SpawnPosition);
public abstract int GetTrainCost(ENUM_Soldier emSoldier, int CampLv, ENUM_Weapon emWeapon);
// 建立Soldier public override ISoldier CreateSoldier( ENUM_Soldier emSoldier, ENUM_Weapon emWeapon, int Lv,Vector3 SpawnPosition) { // 重宣告為空,防此錯誤呼 Debug.LogWarning("EnemyFactory不應該產生ISoldier物件"); return null; }