public void OnSkill5Stay()
    {
        if (Input.GetKeyDown(KeyCode.Mouse0) && isSkill5)
        {
            Ray          ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit2D hit = Physics2D.Raycast(ray.origin, ray.direction, 100000, LayerMask.GetMask("enemy"));
            if (hit.collider)
            {
                separated_body.SetActive(true);
                var pos_list = new List <int>()
                {
                    -1, 0, 1
                };
                var x = pos_list[Random.Range(0, pos_list.Count)];
                var y = pos_list[Random.Range(0, pos_list.Count)];
                while (x == y && x == 0)
                {
                    x = pos_list[Random.Range(0, pos_list.Count)];
                }
                separated_body.transform.position = hit.collider.transform.position + new Vector3(x, y, 0).normalized * 18;
                separated_body.transform.right    = (hit.collider.transform.position - separated_body.transform.position).normalized;
                pos = separated_body.transform.position + separated_body.transform.right * 36;
                var heavy_sword_slash = GameObjectPoolManager.GetPool("heavy_sword_slash").Get(separated_body.transform.position + separated_body.transform.right * 15, Quaternion.Euler(new Vector3(180 - Quaternion.FromToRotation(Vector2.right, separated_body.transform.right).eulerAngles.z, 90, 0)), 0.5f);

                heavy_sword_slash.GetComponentInChildren <BaseAttackTrigger>().attack_type = HitType.普通;
            }
        }
        if ((Vector2)separated_body.transform.position == pos)
        {
            separated_body.SetActive(false);
        }
        separated_body.transform.position = Vector3.MoveTowards(separated_body.transform.position, pos, 4f);
    }
    static int GetGameObjectAsync(IntPtr L)
    {
        try
        {
            ToLua.CheckArgsCount(L, 3);
            GameObjectPoolManager obj = (GameObjectPoolManager)ToLua.CheckObject(L, 1, typeof(GameObjectPoolManager));
            string arg0 = ToLua.CheckString(L, 2);
            Void_UnityEngineObject arg1 = null;
            LuaTypes funcType3          = LuaDLL.lua_type(L, 3);

            if (funcType3 != LuaTypes.LUA_TFUNCTION)
            {
                arg1 = (Void_UnityEngineObject)ToLua.CheckObject(L, 3, typeof(Void_UnityEngineObject));
            }
            else
            {
                LuaFunction func = ToLua.ToLuaFunction(L, 3);
                arg1 = DelegateFactory.CreateDelegate(typeof(Void_UnityEngineObject), func) as Void_UnityEngineObject;
            }

            obj.GetGameObjectAsync(arg0, arg1);
            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
    static int UnspawnAndDestory(IntPtr L)
    {
        try
        {
            int count = LuaDLL.lua_gettop(L);

            if (count == 2 && TypeChecker.CheckTypes(L, 1, typeof(GameObjectPoolManager), typeof(UnityEngine.GameObject)))
            {
                GameObjectPoolManager  obj  = (GameObjectPoolManager)ToLua.ToObject(L, 1);
                UnityEngine.GameObject arg0 = (UnityEngine.GameObject)ToLua.ToObject(L, 2);
                obj.UnspawnAndDestory(arg0);
                return(0);
            }
            else if (count == 3 && TypeChecker.CheckTypes(L, 1, typeof(GameObjectPoolManager), typeof(UnityEngine.GameObject), typeof(float)))
            {
                GameObjectPoolManager  obj  = (GameObjectPoolManager)ToLua.ToObject(L, 1);
                UnityEngine.GameObject arg0 = (UnityEngine.GameObject)ToLua.ToObject(L, 2);
                float arg1 = (float)LuaDLL.lua_tonumber(L, 3);
                obj.UnspawnAndDestory(arg0, arg1);
                return(0);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "invalid arguments to method: GameObjectPoolManager.UnspawnAndDestory"));
            }
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
Example #4
0
    protected virtual void DieCallBack()
    {
        if (Shadow)
        {
            Shadow.SetActive(false);
        }
        var coin = GameObjectPoolManager.GetPool("coin_effect").Get(transform.position + new Vector3(0, 1, 0), Quaternion.identity, 2f);

        coin.GetComponent <CoinParticle>().transf = View.CurrentScene.GetView <GameInfoView>().hud.coin_icon.rectTransform;
        var exp = GameObjectPoolManager.GetPool("exp_effect").Get(transform.position + new Vector3(0, 1, 0), Quaternion.identity, 1.85f);

        exp.GetComponent <ExpParticle>().transf = View.CurrentScene.GetView <GameInfoView>().expbar.GetComponent <RectTransform>();
        var colliders = GetComponentsInChildren <PolygonCollider2D>();
        var rigis     = GetComponentsInChildren <Rigidbody2D>();

        _anim.enabled = false;
        foreach (var col in colliders)
        {
            col.enabled = true;
        }
        foreach (var rigi in rigis)
        {
            if (!rigi.simulated)
            {
                rigi.simulated = true;
                rigi.AddTorque(2, ForceMode2D.Impulse);
                rigi.AddForce(new Vector3(Random.Range(-1f, 1f) * 4f, Random.Range(0.5f, 1f) * 5, 0), ForceMode2D.Impulse);
            }
        }
        isMoveable = false;
        GetComponent <Collider2D>().enabled = false;
        _rigi.simulated = false;
        dieCallBack?.Invoke();
        Destroy(gameObject, 3);
    }
    void Start()
    {
        difficultyManager = new DifficultyManager();
        new ServiceLocator ();
        ServiceLocator.addService<IProcessorFSM> (new ProcessorFSM ());
        ServiceLocator.addService<IProcessorPatternConfiguration> (new ProcessorPatternConfigurator ());
        ServiceLocator.addService<IBladeSectionDifficulty>(difficultyManager);
        levelData = new LevelData();
        poolManager = new GameObjectPoolManager();
        testSectionBuilderConfigurator = new SectionBuilderConfigurator(levelData) as ISectionBuilderConfiguration;
        testSectionBuilderSeclector = new SectionBuilderSelector(testSectionBuilderConfigurator, levelData) as ISectionBuilderSelection;

        SectionBuilderClear clearBuilder = new SectionBuilderClear();
        SectionBuilderBlades bladesBuilder = new SectionBuilderBlades(levelData, poolManager);
        SectionBuilderProcessors processorsBuilder = new SectionBuilderProcessors (levelData, poolManager);
        testSectionBuilderSeclector.addSectionBuilder(clearBuilder);
        testSectionBuilderSeclector.addSectionBuilder(bladesBuilder);
        testSectionBuilderSeclector.addSectionBuilder(processorsBuilder);

        levelData.activeSectionBuilder = clearBuilder;

        testSectionDesigner = new SectionDesigner(testSectionBuilderSeclector, levelData) as ISectionDesigning;
        rowCleaner = new RowCleaner(poolManager);
        testLevelHandler = new LevelHandler(levelData, testSectionDesigner, rowCleaner);

        for (int i = 0; i < 50; ++i)
        {
            testLevelHandler.buildNewRow();
        }
    }
Example #6
0
    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Unit"))
        {
            AudioManager.Instance.PlayOneShot("skill_q_hit");
            GetComponent <ObjectRecover>().RecoverImmediately();

            ownerHero.skillDict[SkillType.Q].SetSkillTarget(
                other.GetComponent <HeroUnitController>().unit
                , (unit) => { (unit as HeroUnit).SetStatus(StatusType.Q, new Status(
                                                               (callBackType) =>
                {
                    switch (callBackType)
                    {
                    case CallBackType.Add:
                        GameObjectPoolManager.GetPool("skill_q_hit").Get(unit.GetTransform(), -1);
                        break;

                    case CallBackType.Remove:

                        GameObjectPoolManager.GetPool("skill_q_hit").RecoverAll();
                        break;

                    default:
                        break;
                    }
                }
                                                               )); }
                );
        }
    }
Example #7
0
    public override void Update()
    {
        switch (heroState)
        {
        case HeroState.Idle:
            break;

        case HeroState.MoveTo:
            if (Vector3.Distance(transform.position, aimPos) <= 0.1f)
            {
                SetHeroState(HeroState.Idle);
                return;
            }
            transform.forward  = Vector3.Slerp(transform.forward, (aimPos - transform.position).normalized, Time.deltaTime * 20);
            transform.position = Vector3.MoveTowards(transform.position, aimPos, Time.deltaTime * 2.5f);
            break;

        case HeroState.Attack:
            transform.forward = Vector3.Slerp(transform.forward, (selectEnemyUnit.GetPosNoY() - transform.position).normalized, Time.deltaTime * 20);
            if (Vector3.Distance(transform.position, selectEnemyUnit.GetPos()) <= 2f)
            {
                PlayAnim(AnimParamType.Bool, "run", false);
                timer += Time.deltaTime;
                if (timer >= 1)
                {
                    PlayAnim(AnimParamType.Trigger, "attack");
                    timer = 0;
                }
                return;
            }
            PlayAnim(AnimParamType.Bool, "run", true);
            transform.position = Vector3.MoveTowards(transform.position, selectEnemyUnit.GetPosNoY(), Time.deltaTime * 2.5f);
            break;

        case HeroState.PutEye:
            if (Vector3.Distance(transform.position, aimPos) <= 5f)
            {
                AudioManager.Instance.PlayOneShot("eye");
                GameObjectPoolManager.GetPool("eye").Get(aimPos, Quaternion.identity, 5);
                SetHeroState(HeroState.Idle);
                return;
            }
            transform.forward  = Vector3.Slerp(transform.forward, (aimPos - transform.position).normalized, Time.deltaTime * 20);
            transform.position = Vector3.MoveTowards(transform.position, aimPos, Time.deltaTime * 2.5f);
            break;

        case HeroState.SkillMoveTo:
            if (Vector3.Distance(transform.position, aimPos) <= 3)
            {
                currentSkill.Execute();
                return;
            }
            transform.forward  = Vector3.Slerp(transform.forward, (aimPos - transform.position).normalized, Time.deltaTime * 20);
            transform.position = Vector3.MoveTowards(transform.position, aimPos, Time.deltaTime * 2.5f);
            break;

        default:
            break;
        }
    }
Example #8
0
    private void Awake()
    {
        if (GameObjectPoolManager.HasGameObjectPool(bulletPoolName) == false)
        {
            GameObjectPoolManager.CreateGameObjectPoolForGameObject(bulletPoolName, bulletPoolItem.gameObject, bulletPoolPreNum);
        }

        m_BulletPool = GameObjectPoolManager.GetGameObjectPool(bulletPoolName);

        if (GameObjectPoolManager.HasGameObjectPool(shellPoolName) == false)
        {
            GameObjectPoolManager.CreateGameObjectPoolForGameObject(shellPoolName, shellPoolItem.gameObject, shellPoolPreNum);
        }

        m_ShellPool = GameObjectPoolManager.GetGameObjectPool(shellPoolName);

        if (GameObjectPoolManager.HasGameObjectPool(muzzlePoolName) == false)
        {
            GameObjectPoolManager.CreateGameObjectPoolForGameObject(muzzlePoolName, muzzlePoolItem.gameObject, muzzlePoolPreNum);
        }

        m_MuzzlePool = GameObjectPoolManager.GetGameObjectPool(muzzlePoolName);

        m_AudioSource = this.GetComponent <AudioSource>();
        if (m_AudioSource == null)
        {
            this.gameObject.AddComponent <AudioSource>();
            m_AudioSource = this.GetComponent <AudioSource>();
        }

        m_Animator = this.GetComponent <Animator>();

        m_Animator.speed = shootSpeed;
    }
    public void SkillRExcute()
    {
        GameObjectPoolManager.GetPool("skill_r").Get(footPos.position, transform.rotation, 1);
        AudioManager.Instance.PlayOneShot("skill_r");
        var skillTargetUnit = controlUnit.skillDict[SkillType.R].GetSkillTarget();

        (skillTargetUnit as HeroUnit).AddForce(controlUnit.GetForward(), 7);
    }
Example #10
0
 public void Flash(Vector3 aimPos)
 {
     AudioManager.Instance.PlayOneShot("flash");
     GameObjectPoolManager.GetPool("flash_effect").Get(transform.position, Quaternion.identity, 2);
     transform.forward = (aimPos - transform.position).normalized;
     base.SetPos(aimPos);
     GameObjectPoolManager.GetPool("flash_effect2").Get(transform.position, Quaternion.identity, 2);
 }
Example #11
0
 public void configure(int width, GameObjectPoolManager pools)
 {
     arenaWidth = width;
     currentArenaHeight = -1;
     this.pools = pools;
     pools.addPool(wallTile,120 *2);
     pools.addPool(basicFloorTile, width * 60 *2);
 }
    public void FireAttackOnce() // 发射出一个火球 追踪玩家
    {
        var fireball = GameObjectPoolManager.GetPool("enemy_fire_ball").Get(transform.position + new Vector3(0, 11, 0), Quaternion.identity, 3);

        fireball.GetComponent <AutoMoveObjectByDirection>().Direction  = ActorController.Controller.transform.position - fireball.transform.position;
        fireball.GetComponent <AutoMoveObjectByDirection>().space_type = Space.World;
        fireball.GetComponent <EnemyAttackTrigger>().owner             = GetComponentInParent <BaseEnemyController>();
    }
Example #13
0
    public void Awake()
    {
        if (GameObjectPoolManager.HasGameObjectPool(laserImpactPoolName) == false)
        {
            GameObjectPoolManager.CreateGameObjectPoolForGameObject(laserImpactPoolName, laserImpactPoolItem.gameObject, laserImpactPreNum);
        }

        m_LaserImpactPool = GameObjectPoolManager.GetGameObjectPool(laserImpactPoolName);
    }
Example #14
0
    void Awake()
    {
        if (GameObjectPoolManager.HasGameObjectPool(lightingImpactPoolName) == false)
        {
            GameObjectPoolManager.CreateGameObjectPoolForGameObject(lightingImpactPoolName, lightingImpact.gameObject, lightingImpactPreNum);
        }

        m_LightingImpactPool = GameObjectPoolManager.GetGameObjectPool(lightingImpactPoolName);
    }
 public SectionBuilderHeatVent(LevelData levelData, GameObjectPoolManager poolManager)
 {
     this.levelData = levelData;
     this.poolManager = poolManager;
     difficultyManager = ServiceLocator.getService<IHeatVentSectionDifficulty>();
     type = SectionBuilderType.heatVent;
     heatVent = Resources.Load("HeatVent") as GameObject;
     poolManager.addPool(heatVent, 20);
 }
    public void SetPickUpSlash()
    {
        AudioManager.Instance.PlayOneShot("player_heavy_attack");
        var temp = GameObjectPoolManager.GetPool("pick_up_slash").Get(transform.position + new Vector3(0, 2, -5), Quaternion.Euler(-45, 90 * transform.right.x, 180), 0.5f);

        temp.GetComponentInChildren <PlayerSwordAttackTrigger>().attack_type = HitType.挑;
        temp.transform.parent     = transform.parent.parent;
        temp.transform.localScale = Vector3.one * 2f;
    }
Example #17
0
    void Awake()
    {
        if (GameObjectPoolManager.HasGameObjectPool(prismImpactPoolName) == false)
        {
            GameObjectPoolManager.CreateGameObjectPoolForGameObject(prismImpactPoolName, prismImpact.gameObject, prismImpactPreNum);
        }

        m_PrismImpactPool = GameObjectPoolManager.GetGameObjectPool(prismImpactPoolName);
    }
Example #18
0
    public override void GetHurt(AttackData attackData)
    {
        if (!photonView.IsMine)
        {
            photonView.RPC("RPCGetHurt", RpcTarget.Others, JsonMapper.ToJson(attackData));
        }

        if (shieldEffect.activeSelf && (attackData.attack_pos - transform.position).normalized.x * transform.right.x > 0)
        {
            _rigi.ResetVelocity();
            _rigi.AddForce(-transform.right * 20, ForceMode2D.Impulse);
            GameObjectPoolManager.GetPool("metal_hit").Get(transform.position + transform.right * 2, Quaternion.identity, 1.5f);
            return;
        }

        _anim.SetTrigger("hit");
        GameStaticMethod.ChangeChildrenSpriteRendererColor(gameObject, Color.red);
        transform.rotation = attackData.attack_pos.x > transform.position.x ? Quaternion.identity : Quaternion.Euler(0, 180, 0);
        GameObjectPoolManager.GetPool("hit_effect").Get(transform.position + new Vector3(0, 2, 0), Quaternion.identity, 0.5f);


        _model.SetHealth(-DreamerTool.Util.DreamerUtil.GetHurtValue(attackData.hurt_value, _model.GetPlayerAttribute(PlayerAttribute.物防)));


        switch (attackData.attack_type)
        {
        case HitType.普通:
            break;

        case HitType.击退:
            if (!actor_state.isGround)
            {
                _rigi.ResetVelocity();
                _rigi.ClearGravity();
            }
            else
            {
                _rigi.ResetVelocity();
                _rigi.AddForce(-transform.right * 20, ForceMode2D.Impulse);
            }
            break;

        case HitType.击飞:
            _rigi.ResetVelocity();
            _rigi.AddForce(new Vector2(-transform.right.x * 0.5f, 0.5f).normalized * 50, ForceMode2D.Impulse);
            break;

        case HitType.挑:
            _rigi.ResetVelocity();
            _rigi.AddForce(transform.up * 95, ForceMode2D.Impulse);
            break;

        default:
            break;
        }
    }
 public void FireAttack() //发射出6个不同方向的火球不追踪玩家
 {
     for (int i = 0; i < 6; i++)
     {
         var frie_ball = GameObjectPoolManager.GetPool("enemy_fire_ball").Get(transform.position + new Vector3(0, 3, 0), Quaternion.Euler(i * 60, 90, 90), 3);
         frie_ball.GetComponent <AutoMoveObjectByDirection>().Direction  = new Vector3(0, 0, -1);
         frie_ball.GetComponent <AutoMoveObjectByDirection>().space_type = Space.Self;
         frie_ball.GetComponent <EnemyAttackTrigger>().owner             = GetComponentInParent <BaseEnemyController>();
     }
 }
 public SectionBuilderProcessors(LevelData levelData, GameObjectPoolManager poolManager)
 {
     this.levelData = levelData;
     this.poolManager = poolManager;
     type = SectionBuilderType.processor;
     GameObject processor = Resources.Load("Processor") as GameObject;
     GameObject processorGroup = Resources.Load("ProcessorGroup") as GameObject;
     poolManager.addPool(processor, 200);
     poolManager.addPool(processorGroup, 20);
 }
Example #21
0
    public override void OnTriggerEnter2D(Collider2D collision)
    {
        base.OnTriggerEnter2D(collision);

        if (collision.gameObject.tag == "Player")
        {
            GetComponent <ObjectRecover>().RecoverImmediately();
            GameObjectPoolManager.GetPool("fire_ball_explosion").Get(transform.position, Quaternion.Euler(-90, 0, 0), 1);
        }
    }
    public void SpawnBump()
    {
        // 用物件池管理器取得團塊的複製品
        Bump _clone = GameObjectPoolManager.GetUseableObject <Bump>("Bump");

        // 這裡先寫死,可以透過GameDataManager.LoadGameData(path)的方式取得靜態資料填入
        // 也可以透過GameResourceManager.LoadResource(path)的方式取得ScriptableObject取得靜態資料填入
        _clone.transform.position   = new Vector3(Random.Range(-10f, 10f), Random.Range(-10f, 10f));
        _clone.transform.localScale = Vector3.one;
    }
Example #23
0
    public static void GameInit()
    {
        if (ActorModel.Model == null)
        {
            ActorModel.CreateModel();
        }

        GameObjectPoolManager.InitByScriptableObject();

        SkillModel.Init();
    }
Example #24
0
 public void Setup(LevelData levelData, GameObjectPoolManager poolManager)
 {
     tilePosition = Vector3.zero;
     this.levelData = levelData;
     this.poolManager = poolManager;
     poolManager.addPool(sideWallTilePrefab, 100);
     poolManager.addPool(floorTilePrefab, 300);
     poolManager.addPool(bladeRowWallLeft, 20);
     poolManager.addPool(bladeRowWallRight, 20);
     wallSectionBuilder.poolManager = poolManager;
 }
    // Use this for initialization
    void Start()
    {
        current = this;

        for (int i = 0; i < numberobjects; i++) {
            GameObject obj = (GameObject) Instantiate (genericprefab);
            obj.SetActive (false);
            obj.name = genericprefab.name;
            genericpool.Add (obj);
        }
    }
Example #26
0
    public MyParticleInstance GetParticleInstance(string particleName, Action callback)
    {
        GameObject         gameObject = GameObjectPoolManager.GetInstance().GetGameObject(mTemplete, rootTrans);
        MyParticleInstance pi         = gameObject.GetComponent <MyParticleInstance>();

        pi.load(particleName, callback);
        pi.gameObject.transform.parent        = rootTrans;
        pi.gameObject.transform.localPosition = Vector3.zero;
        pi.gameObject.SetActive(true);
        pi.gameObject.name = particleName;
        return(pi);
    }
 public void OnSkill4Stay()
 {
     if (isMove)
     {
         ActorController.Controller.transform.position = Vector3.MoveTowards(ActorController.Controller.transform.position, Skill4_Pos, 2.5f);
         if (ActorController.Controller.actor_state.isGround)
         {
             isMove = false;
             GameObjectPoolManager.GetPool("skill4_effect").Get(ActorController.Controller.transform.position + new Vector3(0, -4, 0), Quaternion.identity, 0.75f);
         }
     }
 }
Example #28
0
 void OnDestroy()
 {
     if (showGOs != null)
     {
         foreach (var showGO in showGOs)
         {
             var goPoolMgr = GameObjectPoolManager.GetInstance();
             goPoolMgr?.ReleaseGameObject(showGO);
         }
         showGOs.Clear();
     }
 }
Example #29
0
    public virtual void GetHurt(AttackData attackData)
    {
        if (actor_state.isSuperArmor)
        {
            return;
        }

        if (actor_state.isShield && (attackData.attack_pos - transform.position).normalized.x * transform.right.x > 0)
        {
            _rigi.ResetVelocity();
            _rigi.AddForce(-transform.right * 20, ForceMode2D.Impulse);
            GameObjectPoolManager.GetPool("metal_hit").Get(transform.position + transform.right * 2, Quaternion.identity, 1.5f);
            return;
        }

        View.CurrentScene.GetView <GameInfoView>().SetScreenEffect(Color.red, 1, 0.1f, 0.5f);
        _anim.SetTrigger("hit");
        transform.rotation = attackData.attack_pos.x > transform.position.x ? Quaternion.identity : Quaternion.Euler(0, 180, 0);
        GameObjectPoolManager.GetPool("hit_effect").Get(transform.position + new Vector3(0, 2, 0), Quaternion.identity, 0.5f);
        Timer.Register(0.25f, () => { View.CurrentScene.GetView <GameInfoView>().SetScreenEffect(Color.red, 0, 0.1f, 0.5f); });
        actor_state.isSuperArmor = true;
        Timer.Register(super_armor_time, () => { actor_state.isSuperArmor = false; });
        var hurt_value = -DreamerTool.Util.DreamerUtil.GetHurtValue(attackData.hurt_value, ActorModel.Model.GetPlayerAttribute(PlayerAttribute.物防));

        ActorModel.Model.SetHealth(hurt_value);

        GameStaticMethod.ChangeChildrenSpriteRendererColor(gameObject, Color.red);



        switch (attackData.attack_type)
        {
        case HitType.普通:
            break;

        case HitType.击退:
            _rigi.ResetVelocity();
            _rigi.AddForce(-transform.right * 10, ForceMode2D.Impulse);
            break;

        case HitType.击飞:
            _rigi.ResetVelocity();
            _rigi.AddForce(new Vector2(-transform.right.x * 0.5f, 0.5f).normalized * 20, ForceMode2D.Impulse);
            break;

        case HitType.挑:
            break;

        default:
            break;
        }
    }
Example #30
0
    // 在這個class被實例化後,被下達Start()時執行
    protected override void OnStart()
    {
        m_startGameUI = GetPage <StartGameUIPage>() as StartGameUIPage;
        m_gamingUI    = GetPage <GamingUIPage>() as GamingUIPage;

        UFOController _player = GameObjectPoolManager.GetUseableObject <UFOController>("UFO"); // 創建玩家

        BumpManager.Instance.SpawnBump();                                                      // 創建第一個團塊
        ScoreManager.Instance.ResetScroe();                                                    // 重設分數
        m_startGameUI.EnablePage(this, false);                                                 // 關閉開始頁面UI
        m_gamingUI.EnablePage(this, true);                                                     // 開啟遊戲UI
        m_gameTimer = 0f;                                                                      // 重設計時器
    }
    // Use this for initialization
    void Start()
    {
        testRow = new List<GameObject>();
        levelData = new LevelData();
        poolManager = new GameObjectPoolManager();
        testBuilder = new SectionBuilderBlades (levelData, poolManager);

        for (int i = 0 ; i < 50 ; ++i)
        {
            levelData.levelTop+=1;
            testBuilder.buildNewRow(testRow);
        }
    }
Example #32
0
        public Callback <GameObject, int> GetOrNewSprite(string viewCode, bool usePool = false, int maxCount = 20)
        {
            string     viewName       = null;
            GameObject prefabInstance = null;
            var        callback       = Callback <GameObject, int> .GetOrNew();

            if (!usePool)
            {
                EEntityType entityType = EntityUtil.GetEntityTypeByCode(viewCode);
                if (poolInfos.TryGetValue(entityType, out var poolInfo))
                {
                    usePool  = true;
                    maxCount = poolInfo.maxCount;
                }
            }

            if (usePool)
            {
                if (!GameObjectPoolManager.GetInstance().HasPool(viewCode))
                {
                    AssetManager.GetInstance().LoadSprite(viewCode).onSuccess.Set((prefab) =>
                    {
                        GameObjectPoolManager.GetInstance().NewPool(viewCode, prefab, maxCount);
                        prefabInstance    = GameObjectPoolManager.GetInstance().GetOrCreateGameObject(viewCode);
                        GameObject viewGO = new GameObject(viewName);
                        prefabInstance.transform.SetParent(viewGO.transform, false);
                        callback.onSuccess?.Invoke(prefabInstance);
                    });
                }
                else
                {
                    prefabInstance = GameObjectPoolManager.GetInstance().GetOrCreateGameObject(viewCode);
                    GameObject viewGO = new GameObject(viewName);
                    prefabInstance.transform.SetParent(viewGO.transform, false);
                    callback.onSuccess?.Invoke(prefabInstance);
                }
            }
            else
            {
                AssetManager.GetInstance().LoadSprite(viewCode).onSuccess.Set((prefab) =>
                {
                    if (prefab)
                    {
                        prefabInstance = Object.Instantiate(prefab);
                        callback.onSuccess?.Invoke(prefabInstance);
                    }
                });
            }

            return(callback);
        }
 static int Release(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 1);
         GameObjectPoolManager obj = (GameObjectPoolManager)ToLua.CheckObject(L, 1, typeof(GameObjectPoolManager));
         obj.Release();
         return(0);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
    public SectionBuilderBlades(LevelData levelData, GameObjectPoolManager poolManager)
    {
        this.levelData = levelData;
        this.poolManager = poolManager;
        difficultyManager = ServiceLocator.getService<IBladeSectionDifficulty>();
        type = SectionBuilderType.blade;
        blade = Resources.Load("Blade") as GameObject;
        bladeRow = Resources.Load("BladeRow") as GameObject;

        poolManager.addPool(blade, 100);
        poolManager.addPool(bladeRow, 30);

        bladeLength = blade.GetComponent<BoxCollider2D>().size.x;
    }
Example #35
0
    void Awake()
    {
        int missileNum = missileMountPoint.Length;

        if (GameObjectPoolManager.HasGameObjectPool(missilePoolName) == false)
        {
            GameObjectPoolManager.CreateGameObjectPoolForGameObject(missilePoolName, misslePrefab.gameObject, missileNum * misslePoolMultiTime);
        }

        missileGameObjectPool = GameObjectPoolManager.GetGameObjectPool(missilePoolName);

        m_MissileRuntimeDatas = new GameObject[missileNum];

        ReloadMissile();
    }
 public void Init()
 {
     new ServiceLocator();
     poolParent = new GameObject();
     poolManager = new GameObjectPoolManager(poolParent.transform);
     blade = Resources.Load("Blade") as GameObject;
     poolManager.addPool(blade, 100);
     testLevelData= new LevelData();
     clearBuilder = new SectionBuilderClear();
     testLevelData.activeSectionBuilder = clearBuilder;
     difficultyManager = new mockDifficultyManager();
     ServiceLocator.addService<IBladeSectionDifficulty>(difficultyManager);
     ServiceLocator.addService<IProcessorGroupDifficulty>(difficultyManager);
     rowCleaner = new RowCleaner(poolManager);
 }
 static int DestoryGameObjectPool(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 2);
         GameObjectPoolManager  obj  = (GameObjectPoolManager)ToLua.CheckObject(L, 1, typeof(GameObjectPoolManager));
         UnityEngine.GameObject arg0 = (UnityEngine.GameObject)ToLua.CheckUnityObject(L, 2, typeof(UnityEngine.GameObject));
         obj.DestoryGameObjectPool(arg0);
         return(0);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
 static int UnRegist(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 2);
         GameObjectPoolManager obj = (GameObjectPoolManager)ToLua.CheckObject(L, 1, typeof(GameObjectPoolManager));
         string arg0 = ToLua.CheckString(L, 2);
         obj.UnRegist(arg0);
         return(0);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
 public void Init()
 {
     poolParent = new GameObject(); //.Instantiate(poolParent, Vector3.zero, Quaternion.identity) as GameObject;
     poolManager = new GameObjectPoolManager(poolParent.transform);
     new ServiceLocator();
     difficultyManager = new mockDifficultyManager();
     ServiceLocator.addService<IBladeSectionDifficulty>(difficultyManager);
     ServiceLocator.addService<IProcessorGroupDifficulty>(difficultyManager);
     //blade = Resources.Load("Blade") as GameObject;
     //poolManager.addPool(blade, 100);
     testLevelData= new LevelData();
     clearBuilder = new SectionBuilderClear();
     testLevelData.activeSectionBuilder = clearBuilder;
     //Debug.Log(testLevelData);
 }
Example #40
0
    public bool SpawnEnemy(int level, int spawnEnemyID, UnityAction dieCallBack = null)
    {
        var config = EnemyConfig.Get(spawnEnemyID);

        if (config == null)
        {
            return(false);
        }
        GameObjectPoolManager.GetPool("dust").Get(transform.position, Quaternion.identity, 1);
        Timer.Register(0.25f, () => {
            var enemy = Instantiate(config.GetGameObjectPrefab(), transform.position, Quaternion.identity);
            enemy.GetComponentInChildren <BaseEnemyController>().SetLevel(level);
            enemy.GetComponentInChildren <BaseEnemyController>().dieCallBack = dieCallBack;
        });
        return(true);
    }
Example #41
0
    public LevelHandler BuildGameFramework()
    {
        difficultyManager.levelData = levelData;

        SetupServiceLocator();

        poolManager = new GameObjectPoolManager(poolParent);
        arenaBuilder.Setup(levelData, poolManager);

        sectionBuilderConfigurator = new SectionBuilderConfigurator(levelData) as ISectionBuilderConfiguration;
        sectionBuilderSeclector = new SectionBuilderSelector(sectionBuilderConfigurator, levelData) as ISectionBuilderSelection;

        SetupSectionBuilders();

        sectionDesigner = new ArenaSectionDesigner(sectionBuilderSeclector, levelData, arenaBuilder) as ISectionDesigning;
        rowCleaner = new RowCleaner(poolManager);
        levelHandler = new LevelHandler(levelData, sectionDesigner, rowCleaner);

        return levelHandler;
    }
Example #42
0
 public mockSectionBuilderProcessors(GameObjectPoolManager poolManager)
 {
     type = SectionBuilderType.processor;
     this.poolManager = poolManager;
     processor = Resources.Load("Processor") as GameObject;
     poolManager.addPool(processor, 100);
 }
Example #43
0
 public mockSectionBuilderBlades(GameObjectPoolManager poolManager)
 {
     type = SectionBuilderType.blade;
     this.poolManager = poolManager;
     blade = Resources.Load("Blade") as GameObject;
     poolManager.addPool(blade, 100);
 }