// 建立Enemy public override IEnemy CreateEnemy(ENUM_Enemy emEnemy, ENUM_Weapon emWeapon, Vector3 SpawnPosition, Vector3 AttackPosition) { // 產生對應的Character ICharacter theEnemy = null; switch (emEnemy) { case ENUM_Enemy.Elf: theEnemy = new EnemyElf(); break; case ENUM_Enemy.Troll: theEnemy = new EnemyTroll(); break; case ENUM_Enemy.Ogre: theEnemy = new EnemyOgre(); break; default: Debug.LogWarning("無法建立[" + emEnemy + "]"); return(null); } // 增加角色功能 AddCharacterFuncs(theEnemy, emWeapon, 0); // 加入管理器 //PBaseDefenseGame.Instance.AddEnemy( theEnemy as IEnemy); return(theEnemy as IEnemy); }
/// <summary> /// 添加关卡数据 /// </summary> /// <param name="emEnemy">怪物类型</param> /// <param name="emWeapon">武器类型</param> /// <param name="Count">数量</param> public void AddStageData(ENUM_Enemy emEnemy, int Count) { for (int i = 0; i < Count; ++i) { m_StageData.Add(new StageData(emEnemy)); } }
public override IEnemy createEnemy(ENUM_Enemy emEnemy, ENUM_Weapon emWeapon, Vector3 spawnPosition) { //建造参数 EnemyBuildParam buildParam = new EnemyBuildParam(); switch (emEnemy) { case ENUM_Enemy.Zombie: buildParam.character = new EnemyZombie(); break; default: Debug.Log("不存在该Enemy类型"); return(null); } buildParam.weapon = emWeapon; buildParam.spawnPosition = spawnPosition; EnemyBuilder enemyBuilder = new EnemyBuilder(); enemyBuilder.setBuildParam(buildParam); m_characterBuilderSystem.construct(enemyBuilder); return(buildParam.character as IEnemy); }
public override IEnemy CreateEnemy(ENUM_Enemy emEnemy, Vector3 SpawnPosition) { EnemyBuildParam EnemyParam = new EnemyBuildParam(); switch (emEnemy) { case ENUM_Enemy.Keraha: EnemyParam.NewCharacter = new EnemyKeraha(); break; default: Debug.LogWarning("无法创建[" + emEnemy + "]"); return(null); } if (EnemyParam.NewCharacter == null) { return(null); } EnemyParam.SpawnPosition = SpawnPosition; EnemyBuilder theEnemyBuilder = new EnemyBuilder(); theEnemyBuilder.SetBuildParam(EnemyParam); m_BuilderDirector.Construct(theEnemyBuilder); return(EnemyParam.NewCharacter as IEnemy); }
public StageInfo(int stageLv, ENUM_Enemy enemyType, int killCount, string icon, string name, int stageType) { StageLv = stageLv; EnemyType = enemyType; KillCount = killCount; Icon = icon; Name = name; StageType = stageType; }
// 建立Enemy public override IEnemy CreateEnemy(ENUM_Enemy emEnemy, ENUM_Weapon emWeapon, Vector3 SpawnPosition, Vector3 AttackPosition) { // 產生Enemy的參數 EnemyBuildParam EnemyParam = new EnemyBuildParam(); // 產生對應的Character switch (emEnemy) { case ENUM_Enemy.Elf: EnemyParam.NewCharacter = new EnemyElf(); break; case ENUM_Enemy.Troll: EnemyParam.NewCharacter = new EnemyTroll(); break; case ENUM_Enemy.Ogre: EnemyParam.NewCharacter = new EnemyOgre(); break; default: Debug.LogWarning("無法建立[" + emEnemy + "]"); return(null); } if (EnemyParam.NewCharacter == null) { return(null); } // 設定共用參數 EnemyParam.emWeapon = emWeapon; EnemyParam.SpawnPosition = SpawnPosition; EnemyParam.AttackPosition = AttackPosition; // 產生對應的Builder及設定參數 EnemyBuilder theEnemyBuilder = new EnemyBuilder(); theEnemyBuilder.SetBuildParam(EnemyParam); // 產生 m_BuilderDirector.Construct(theEnemyBuilder); return(EnemyParam.NewCharacter as IEnemy); }
private void InitStagetConfig() { stageInfos = new List <StageInfo>(); string s = AssetFactory.LoadConfig("Stage"); string[] arr = s.Split('&'); for (int i = 1; i < arr.Length; i++) { string[] array = arr[i].Split(','); int lv = int.Parse(array[0].Trim()); ENUM_Enemy EnemyType = (ENUM_Enemy)int.Parse(array[1].Trim()); int KillCount = int.Parse(array[2].Trim()); string icon = array[3].Trim(); string name = array[4].Trim(); int StageType = int.Parse(array[5].Trim()); StageInfo stage = new StageInfo(lv, EnemyType, KillCount, icon, name, StageType); stageInfos.Add(stage); } }
public override IEnemy CreateEnemy(ENUM_Enemy enumEnemy, ENUM_Weapon enumWeapon, Vector3 SpawnPostion, Vector3 AttackPostion) { // 产生Enenmy的参数 EnemyBuildParam EnemyParam = new EnemyBuildParam(); switch (enumEnemy) { case ENUM_Enemy.Elf: EnemyParam.NewCharacter = new EnemyElf(); break; case ENUM_Enemy.Troll: EnemyParam.NewCharacter = new EnemyTroll(); break; case ENUM_Enemy.Ogre: EnemyParam.NewCharacter = new EnemyOgre(); break; default: Debug.LogWarning("CreateEnemy:无法产生[" + enumEnemy + "]"); return(null); } if (EnemyParam.NewCharacter == null) { return(null); } EnemyParam.emWeapon = enumWeapon; EnemyParam.SpawnPosition = SpawnPostion; EnemyParam.AttackPosition = AttackPostion; EnemyBuilder theEnemyBuilder = new EnemyBuilder(); theEnemyBuilder.SetBuildParam(EnemyParam); m_BuilderDirector.Construct(theEnemyBuilder); return(EnemyParam.NewCharacter as IEnemy); }
// 取得场景中的俘兵营 private CaptiveCamp CaptiveCampFactory(ENUM_Enemy emEnemy) { string GameObjectName = "CaptiveCamp_"; float CoolDown = 0; string CampName = ""; string IconSprite = ""; switch (emEnemy) { case ENUM_Enemy.Elf: GameObjectName += "Elf"; CoolDown = 3; CampName = "精灵俘兵营"; IconSprite = "CaptiveCamp"; break; default: Debug.Log("沒有指定[" + emEnemy + "]要取得的场景物件名称"); break; } // 取得物件 GameObject theGameObject = UnityTool.FindGameObject(GameObjectName); // 取得集合点 Vector3 TrainPoint = GetTrainPoint(GameObjectName); // 产生兵营 CaptiveCamp NewCamp = new CaptiveCamp(theGameObject, emEnemy, CampName, IconSprite, CoolDown, TrainPoint); NewCamp.SetPBaseDefenseGame(m_PBDGame); // 设定兵营使用的Script AddCampScript(theGameObject, NewCamp); // 先隱藏 NewCamp.SetVisible(false); // 回传 return(NewCamp); }
// 取得Enemy兵种的数量 public int GetUnitCount(ENUM_Enemy emEnemy) { switch (emEnemy) { case ENUM_Enemy.Null: return(EnemyCount); case ENUM_Enemy.Elf: return(EnemyElfCount); case ENUM_Enemy.Troll: return(EnemyTrollCount); case ENUM_Enemy.Ogre: return(EnemyOgreCount); default: Debug.LogWarning("GetUnitCount:沒有[" + emEnemy + "]可以對映的计算方式"); break; } return(0); }
// 建立Enemy public override IEnemy CreateEnemy( ENUM_Enemy emEnemy, ENUM_Weapon emWeapon, Vector3 SpawnPosition, Vector3 AttackPosition) { // 產生Enemy的參數 EnemyBuildParam EnemyParam = new EnemyBuildParam(); // 產生對應的Character switch( emEnemy) { case ENUM_Enemy.Elf: EnemyParam.NewCharacter = new EnemyElf(); break; case ENUM_Enemy.Troll: EnemyParam.NewCharacter = new EnemyTroll(); break; case ENUM_Enemy.Ogre: EnemyParam.NewCharacter = new EnemyOgre(); break; default: Debug.LogWarning("無法建立["+emEnemy+"]"); return null; } if( EnemyParam.NewCharacter == null) return null; // 設定共用參數 EnemyParam.emWeapon = emWeapon; EnemyParam.SpawnPosition = SpawnPosition; EnemyParam.AttackPosition = AttackPosition; // 產生對應的Builder及設定參數 EnemyBuilder theEnemyBuilder = new EnemyBuilder(); theEnemyBuilder.SetBuildParam( EnemyParam ); // 產生 m_BuilderDirector.Construct( theEnemyBuilder ); return EnemyParam.NewCharacter as IEnemy; }
private Vector3 m_Position; // 出現位置 public TrainCaptiveCommand(ENUM_Enemy emEnemy, Vector3 Position, PBaseDefenseGame PBDGame) { m_PBDGame = PBDGame; m_emEnemy = emEnemy; m_Position = Position; }
public StageData(ENUM_Enemy emEnemy) { this.emEnemy = emEnemy; }
public StageData(ENUM_Enemy emEnemy, ENUM_Weapon emWeapon) { this.emEnemy = emEnemy; this.emWeapon = emWeapon; }
// 建立Enemy public override IEnemy CreateEnemy( ENUM_Enemy emEnemy, ENUM_Weapon emWeapon, Vector3 SpawnPosition, Vector3 AttackPosition) { // 產生對應的Character ICharacter theEnemy =null; switch( emEnemy) { case ENUM_Enemy.Elf: theEnemy = new EnemyElf(); break; case ENUM_Enemy.Troll: theEnemy = new EnemyTroll(); break; case ENUM_Enemy.Ogre: theEnemy = new EnemyOgre(); break; default: Debug.LogWarning("無法建立["+emEnemy+"]"); return null; } // 增加角色功能 AddCharacterFuncs( theEnemy, emWeapon, 0); // 加入管理器 //PBaseDefenseGame.Instance.AddEnemy( theEnemy as IEnemy); return theEnemy as IEnemy; }
// 建立Enemy public abstract IEnemy CreateEnemy(ENUM_Enemy emEnemy, ENUM_Weapon emWeapon, Vector3 SpawnPosition, Vector3 AttackPosition);
public override IEnemy CreateEnemy( ENUM_Enemy emEnemy, ENUM_Weapon emWeapon, Vector3 SpawnPosition, Vector3 AttackPosition) { // 重宣告為空,防此錯誤呼 Debug.LogWarning("SoldierFactory不應該產生IEnemy物件"); return null; }
private Vector3 m_Position; // 出現位置 public TrainCaptiveCommand(ENUM_Enemy emEnemy, Vector3 Position,PBaseDefenseGame PBDGame) { m_PBDGame = PBDGame; m_emEnemy = emEnemy; m_Position = Position; }
public override IEnemy CreateEnemy(ENUM_Enemy emEnemy, ENUM_Weapon emWeapon, Vector3 SpawnPosition, Vector3 AttackPosition) { // 重宣告為空,防此錯誤呼 Debug.LogWarning("SoldierFactory不應該產生IEnemy物件"); return(null); }
public abstract IEnemy createEnemy(ENUM_Enemy emEnemy, ENUM_Weapon emWeapon, Vector3 spawnPosition);
public abstract IEnemy CreateEnemy(ENUM_Enemy emEnemy, Vector3 SpawnPosition);
// 設定兵營產出的單位及冷 public CaptiveCamp(GameObject theGameObject, ENUM_Enemy emEnemy, string CampName,string IconSprite ,float TrainCoolDown,Vector3 Position):base(theGameObject, TrainCoolDown,CampName, IconSprite ) { m_emSoldier = ENUM_Soldier.Captive; m_emEnemy = emEnemy; m_Position = Position; }
// 增加關卡的敵方單位 public void AddStageData( ENUM_Enemy emEnemy, ENUM_Weapon emWeapon,int Count) { for(int i=0;i<Count;++i) m_StageData.Add ( new StageData(emEnemy, emWeapon)); }
// 取得Enemy兵種的數量 public int GetUnitCount( ENUM_Enemy emEnemy) { switch( emEnemy) { case ENUM_Enemy.Null: return EnemyCount; case ENUM_Enemy.Elf: return EnemyElfCount; case ENUM_Enemy.Troll: return EnemyTrollCount; case ENUM_Enemy.Ogre: return EnemyOgreCount; default: Debug.LogWarning("GetUnitCount:沒有["+emEnemy+"]可以對映的計算方式"); break; } return 0; }
// 設定兵營產出的單位及冷 public CaptiveCamp(GameObject theGameObject, ENUM_Enemy emEnemy, string CampName, string IconSprite, float TrainCoolDown, Vector3 Position) : base(theGameObject, TrainCoolDown, CampName, IconSprite) { m_emSoldier = ENUM_Soldier.Captive; m_emEnemy = emEnemy; m_Position = Position; }
// 建立Enemy public abstract IEnemy CreateEnemy( ENUM_Enemy emEnemy, ENUM_Weapon emWeapon, Vector3 SpawnPosition, Vector3 AttackPosition);
// 取得場景中的俘兵營 private CaptiveCamp CaptiveCampFactory( ENUM_Enemy emEnemy ) { string GameObjectName = "CaptiveCamp_"; float CoolDown = 0; string CampName = ""; string IconSprite = ""; switch( emEnemy ) { case ENUM_Enemy.Elf : GameObjectName += "Elf"; CoolDown = 3; CampName = "精靈俘兵營"; IconSprite = "CaptiveCamp"; break; default: Debug.Log("沒有指定["+emEnemy+"]要取得的場景物件名稱"); break; } // 取得物件 GameObject theGameObject = UnityTool.FindGameObject( GameObjectName ); // 取得集合點 Vector3 TrainPoint = GetTrainPoint( GameObjectName ); // 產生兵營 CaptiveCamp NewCamp = new CaptiveCamp(theGameObject, emEnemy, CampName, IconSprite, CoolDown, TrainPoint); NewCamp.SetPBaseDefenseGame( m_PBDGame ); // 設定兵營使用的Script AddCampScript( theGameObject, NewCamp); // 先隱藏 NewCamp.SetVisible(false); // 回傳 return NewCamp; }
public StageData( ENUM_Enemy emEnemy, ENUM_Weapon emWeapon ) { this.emEnemy = emEnemy; this.emWeapon= emWeapon; }