Example #1
0
 // 通知训练
 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);
        }
Example #3
0
    // 取得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;
	}
Example #6
0
    // 取得场景中的兵营
    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);
    }
Example #9
0
    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);
    }
Example #10
0
        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);
        }
Example #11
0
	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;
	}
Example #13
0
    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);
 }
Example #17
0
 // 产生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;
		}
Example #19
0
	// 通知訓練
	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;
	}
Example #21
0
	public abstract int GetTrainCost( ENUM_Soldier emSoldier,int CampLv, ENUM_Weapon emWeapon);
Example #22
0
    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;
    }
Example #23
0
 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);
Example #25
0
 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;
		}