예제 #1
0
        // 建立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);
        }
예제 #2
0
 /// <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));
     }
 }
예제 #3
0
    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);
    }
예제 #4
0
    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);
    }
예제 #5
0
 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;
 }
예제 #6
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);
    }
예제 #7
0
    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);
        }
    }
예제 #8
0
        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);
        }
예제 #9
0
    // 取得场景中的俘兵营
    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);
    }
예제 #10
0
    // 取得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;
	}
예제 #12
0
    private Vector3 m_Position;   // 出現位置

    public TrainCaptiveCommand(ENUM_Enemy emEnemy, Vector3 Position, PBaseDefenseGame PBDGame)
    {
        m_PBDGame  = PBDGame;
        m_emEnemy  = emEnemy;
        m_Position = Position;
    }
예제 #13
0
 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;
		}
예제 #16
0
 // 建立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;
	}
예제 #19
0
 public override IEnemy CreateEnemy(ENUM_Enemy emEnemy, ENUM_Weapon emWeapon, Vector3 SpawnPosition, Vector3 AttackPosition)
 {
     // 重宣告為空,防此錯誤呼
     Debug.LogWarning("SoldierFactory不應該產生IEnemy物件");
     return(null);
 }
예제 #20
0
 public abstract IEnemy createEnemy(ENUM_Enemy emEnemy, ENUM_Weapon emWeapon, Vector3 spawnPosition);
예제 #21
0
 public abstract IEnemy CreateEnemy(ENUM_Enemy emEnemy, Vector3 SpawnPosition);
예제 #22
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;
	}
예제 #23
0
	// 增加關卡的敵方單位
	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;
	}
예제 #25
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);
예제 #27
0
	// 取得場景中的俘兵營
	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;
	}
예제 #28
0
		public StageData( ENUM_Enemy emEnemy, ENUM_Weapon emWeapon )
		{
			this.emEnemy = emEnemy;
			this.emWeapon= emWeapon;
		}