Пример #1
0
    /// <summary>
    /// 创建角色
    /// </summary>
    /// <param name="pos"></param>
    /// <returns></returns>
    public override ISolider CreatSolider(Vector3 pos)
    {
        if (PBDG_GameMain.Instance.m_player.GetMoney() < 100)
        {
            return(null);
        }
        else
        {
            PBDG_GameMain.Instance.m_player.SetMoeny(100);
        }


        SoldierBuildParam soldierBuildParam = new SoldierBuildParam();

        soldierBuildParam.NewBuding = new Solider();

        soldierBuildParam.AssetName = "Rookie";
        soldierBuildParam.Position  = pos;
        soldierBuildParam.AttrID    = 1;

        SoldierBuilder soldierBuilder = new SoldierBuilder();

        soldierBuilder.SetBuildParam(soldierBuildParam);


        m_builderSystem.Construct(soldierBuilder);

        return(soldierBuildParam.NewBuding as ISolider);
    }
    public T CreateCharacter <T>(WeaponType _weaponType, Vector3 _pos, int _lv = 1) where T : AbsCharacter, new()
    {
        AbsCharacter        character = new T();
        AbsCharacterBuilder builder   = new SoldierBuilder(character, typeof(T), _weaponType, _pos, _lv);

        return(CharacterBuilderDirector.Construct(builder) as T);
    }
    // 建立Soldier(Generice版)
    public ISoldier CreateSoldier <T>(ENUM_Weapon emWeapon, int Lv, Vector3 SpawnPosition) where T : ISoldier, new()
    {
        // 产生Soldier的参数
        SoldierBuildParam SoldierParam = new SoldierBuildParam();

        // 产生对应的T类别
        SoldierParam.NewCharacter = new T();
        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);
    }
Пример #4
0
    public ICharacter CreateCharacter <T>(WeaponType weaponType, Vector3 spawnPosition, int lv = 1) where T : ICharacter, new()
    {
        ICharacter character = new T();

        //string name = "";
        //int maxHP = 0;
        //float moveSpeed = 0;
        //string iconSprite = "";
        //string prefabName = "";
        //System.Type t = typeof(T);
        //if (t == typeof(SoldierCaptain))
        //{
        //    name = "上尉军官";
        //    maxHP = 100;
        //    moveSpeed = 3;
        //    iconSprite = "CaptainIcon";
        //    prefabName = "Soldier1";
        //}
        //else if (t == typeof(SoldierSergeant))
        //{
        //    name = "中士士兵";
        //    maxHP = 90;
        //    moveSpeed = 3;
        //    iconSprite = "SergeantIcon";
        //    prefabName = "Soldier3";

        //}
        //else if (t == typeof(SoldierRookie))
        //{
        //    name = "新手士兵";
        //    maxHP = 80;
        //    moveSpeed = 2.5f;
        //    iconSprite = "RookieIcon";
        //    prefabName = "Soldier2";
        //}
        //else
        //{
        //    Debug.LogError("类型" + t + "不属于ISoldier,无法创建战士");
        //    return null;
        //}

        //ICharacterAttr attr = new ICharacterAttr(new SoldierAtrrStrategy(), lv, name, maxHP, moveSpeed, iconSprite, prefabName);
        //character.attr = attr;

        ////创建角色的游戏物体
        ////1.加载   2.实例化
        //GameObject characterGO = FactoryManager.assetFactory.LoadSoldier(prefabName);
        //characterGO.transform.position = spawnPosition;
        //character.gameobject = characterGO;

        ////添加武器
        //IWeapon weapon = FactoryManager.weaponFactory.CreateWeapon(weaponType);
        //character.weapon = weapon;

        ICharacterBuilder builder = new SoldierBuilder(character, typeof(T), weaponType, spawnPosition, lv);

        character = CharacterBuilderDirector.Construct(builder);
        return(character);
    }
Пример #5
0
    public ICharacter CreateCharacter <T>(WeaponType weaponType, Vector3 pos, int lv = 1) where T : ICharacter, new()
    {
        ICharacter character = new T();

        ICharacterBuilder builder = new SoldierBuilder(character, typeof(T), weaponType, pos, lv);

        return(CharacterBuilderDirector.Construct(builder));
    }
Пример #6
0
    public ICharacter CreateCharacter <T>(WeaponType weaponType, Vector3 spawnPosition, int lv = 1) where T : ICharacter, new()
    {
        ICharacter soldier = new T();

        ICharacterBuilder builder = new SoldierBuilder(soldier, typeof(T), weaponType, spawnPosition, lv);

        return(CharacterBuilderDirector.Constructer(builder));
    }
Пример #7
0
    public ICharacter CreatCharacter <T>(Vector3 spawnPosition, Transform startParent, RoadType roadType, CampType campType, Transform[] towers, int lv = 1) where T : ICharacter, new()
    {
        ICharacter soldier = new T();                                                                                                       // 创建角色 添加状态机

        CharacterBuilderDirector director = new CharacterBuilderDirector();                                                                 // 创建指导者
        SoldierBuilder           builder  = new SoldierBuilder(startParent, soldier, typeof(T), spawnPosition, roadType, campType, towers); // 创建Soldier建造者

        return(director.Construct(builder));                                                                                                // 建造Soldier并返回
    }
Пример #8
0
    public Character CreatCharacter(Type characterType, Type weaponType, Vector3 spawnPos, int lv = 1)
    {
        SoldierBuilder builder = new SoldierBuilder(characterType, weaponType, spawnPos, lv);
        Character      soldier = CharacterDirector.Construct(builder);

        GameFacade.Instance.CharacterSystem.AddSoldier(soldier as Soldier);//添加到角色系统

        return(soldier);
    }
Пример #9
0
    public ICharacter CreateCharacter <T>(WeaponType weaponType, Vector3 spawnPosition, int level = 1) where T : ICharacter, new()
    {
        ICharacter character = new T();

        ICharacterBuilder builder = new SoldierBuilder(character, typeof(T), weaponType, spawnPosition, level);

        character = CharacterBuildDirector.Construct(builder);

        return(character);
    }
Пример #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);
        }
Пример #11
0
    // 建立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);
    }
Пример #12
0
    // 建立Soldier
    public override Soldier CreateSoldier(CardData cardData, Vector3 SpawnPosition)
    {
        // 产生Soldier的参数
        SoldierBuildParam SoldierParam = new SoldierBuildParam();

        // 设定参数
        SoldierParam.NewCharacter  = new Soldier();
        SoldierParam.SpawnPosition = SpawnPosition;
        SoldierParam.cardData      = cardData;

        //  产生对应的Builder及设定参数
        SoldierBuilder theSoldierBuilder = new SoldierBuilder();

        theSoldierBuilder.SetBuildParam(SoldierParam);

        // 参数
        m_BuilderDirector.Construct(theSoldierBuilder);
        return(SoldierParam.NewCharacter);
    }
Пример #13
0
    public override ISoldier CreateSoldier(Player player, Vector3 SpawnPosition)
    {
        SoldierBuildParam SoldierParam = new SoldierBuildParam();

        switch (player.roleType)
        {
        case ENUM_Role.鬼剑士:
            SoldierParam.NewCharacter = new SoldierGJS();
            break;

        case ENUM_Role.黑暗武士:
            SoldierParam.NewCharacter = new SoldierHAWS();
            break;

        default:
            Debug.LogWarning("无法创建[" + player.roleType.ToString() + "]");
            return(null);
        }

        if (SoldierParam.NewCharacter == null)
        {
            return(null);
        }


        SoldierParam.emWeapon       = player.roleWeapon;
        SoldierParam.SpawnPosition  = SpawnPosition;
        SoldierParam.Lv             = player.level;
        SoldierParam.AssetName      = player.model;
        SoldierParam.IconSpriteName = player.icon;

        SoldierBuilder theSoldierBuilder = new SoldierBuilder();

        theSoldierBuilder.SetBuildParam(SoldierParam);


        m_BuilderDirector.Construct(theSoldierBuilder);

        return(SoldierParam.NewCharacter as ISoldier);
    }
	// 建立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;
	}
Пример #15
0
        /// <summary>
        /// Create a bunch of recruits!
        /// </summary>
        /// <param name="writer"></param>
        /// <returns></returns>
        private static List <ISoldier> CreateRecruits(IWriter writer)
        {
            var soldierBuilder = new SoldierBuilder(writer);

            var recruits = new List <ISoldier>();

            while (true)
            {
                var soldier = soldierBuilder.CreateSoldier();
                writer.WriteMessage(soldier.DisplayNewSoldier());
                recruits.Add(soldier);

                writer.WriteMessage("\nWould you like to create more soliders?" +
                                    "\nPress Y to create more, or N to stop add created soldiers to the army.");
                if (Console.ReadKey().Key == ConsoleKey.N)
                {
                    break;
                }
            }

            writer.ClearMessage();
            return(recruits);
        }
Пример #16
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);
    }
Пример #17
0
    private void InitFireTeam()
    {
        FireTeamCharacters = new FireTeamSquad ();
        CharacterDirector = new CharacterManager ();

        foreach (NewSoldierData Data in FireTeamData) {

            SoldierBuilder Builder = new SoldierBuilder (Data);
            FireTeamSoldier CreatedCharacter = CharacterDirector.CreateSoldier (Builder);

            CreatedCharacter.OnCharacterReachDestinationEvent += OnCharacterReachDestination;
            CreatedCharacter.OnClickAndTapOnCharacterEvent += OnFireTeamCharacterTapAndClick;
            FireTeamCharacters.AddFireTeamSoldier(CreatedCharacter);
        }

        List<Vector3> StartLocations = LevelMapDirector.GetSoldiersStartingLocations ();
        FireTeamCharacters.PlaceSquadOnMap (StartLocations);

        List<FireTeamSoldier> Soldiers = FireTeamCharacters.GetSoldiersList();
        foreach(FireTeamSoldier Soldier in Soldiers) {
            LevelMapDirector.SetCellStatus(Soldier.GetPosition(), LevelMap.OCCUPY_CELL_VALUE);
        }

        Logic.SetFireTeamSquad (FireTeamCharacters);
    }
Пример #18
0
 public FireTeamSoldier CreateSoldier(SoldierBuilder Builder)
 {
     Builder.BuildModel (ModelDirector);
     return Builder.GetCharacter();
 }
Пример #19
0
 public void CreateSoldier(SoldierBuilder soldierBuilder)
 {
     soldierBuilder.Gun();
     soldierBuilder.Transport();
     soldierBuilder.AtkPoint();
 }