Exemplo n.º 1
0
    private void InitializeComponentsInChildren()
    {
        environmentTransforms = GetComponentsInChildren <Transform> ();
        SpriteRenderer groundSprite = environmentTransforms [environmentTransforms.Length - 2].GetComponent <SpriteRenderer> ();

        npcSpawner = GetComponentInChildren <NPCSpawner> ();
        npcSpawner.Initialize(3, groundSprite);
        List <Transform> npcTransforms = npcSpawner.GetNPCTransforms();

        platformSpawner = GetComponentInChildren <PlatformSpawner> ();
        platformSpawner.Initialize(npcTransforms, groundSprite);


        playerData = SaveSystem.LoadPlayer();
        player.Initialize(this, playerData);
        player.transform.position = platformSpawner.GetPlayerSpawnPoint();
        meteorSpawner             = GetComponentInChildren <MeteorSpawner> ();
        meteorSpawner.Initialize();

        uiInGameHandler = GetComponentInChildren <UIInGameHandler> ();
        uiInGameHandler.Initialize(player, npcTransforms);

        NPCController [] npcControllers = FindObjectsOfType <NPCController> ();
        foreach (NPCController npc in npcControllers)
        {
            npc.Initialize(this, player.playerData.upgradeLevels[1]);
        }
    }
Exemplo n.º 2
0
    void OnScene(SceneView sceneView)
    {
        Handles.BeginGUI();

        GUILayout.Label("<b>Unit Spawn Information (Total count : " + spawnerList.Count + ")</b>", richStyle);

        npcDic.Clear();
        for (int i = 0; i < spawnerList.Count; i++)
        {
            ISpawner spawner = spawnerList[i];
            if (spawner is NPCSpawner)
            {
                NPCSpawner nSpawner = spawner as NPCSpawner;
                uint       npcID    = (uint)nSpawner.unitId;
                if (!npcDic.ContainsKey(npcID))
                {
                    npcDic.Add(npcID, new List <NPCSpawner>());
                }

                npcDic[npcID].Add(nSpawner);
            }
        }

        foreach (KeyValuePair <uint, List <NPCSpawner> > pair in npcDic)
        {
            GUILayout.Label("NPCID : " + pair.Key + " | Count : " + pair.Value.Count + (pair.Value[0].isBoss ? " [BOSS]" : string.Empty), txtColStyle);
        }

        Handles.EndGUI();
    }
Exemplo n.º 3
0
 public CrossDependecyResolver(NPCSpawner npcSpawner, QuestManager questManager)
 {
     this.questManager = questManager;
     this.npcSpawner   = npcSpawner;
     Debug.Log("CrossDependencyLoaded");
     npcSpawner.QuestManagerInjector = questManager;
     questManager.NPCSpawnerInjector = npcSpawner;
     Debug.Log("CrossDependencyResolved");
 }
Exemplo n.º 4
0
 // Use this for initialization
 void Start()
 {
     //InvokeRepeating("TestAndDestroy", 2f, 2f);
     //walkNormal = true;
     NPC.ShowSide();
     Spawner    = GameObject.FindWithTag("NPCSpawner").GetComponent <NPCSpawner>();
     mainCanvas = GameObject.FindWithTag("ShopCanvas").GetComponent <Canvas>();
     EnableWalkParticles();
 }
Exemplo n.º 5
0
 void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
     else if (instance != this)
     {
         Destroy(gameObject);
     }
 }
Exemplo n.º 6
0
    public virtual void OnGameEnd()
    {
        isPlaying = false;

        UIController uic = UI.GetComponent <UIController>();

        uic.ResultsScreen(true);

        NPCSpawner ns = spawner.GetComponent <NPCSpawner>();

        ns.OnGameOver();
    }
Exemplo n.º 7
0
 // Start is called before the first frame update
 void Awake()
 {
     if (current == null)
     {
         current = this;
     }
     else
     {
         Destroy(this.gameObject);
         return;
     }
 }
Exemplo n.º 8
0
    override public void OnGameEnd()
    {
        isPlaying = false;

        UIControllerNetwork ui = UI.GetComponent <UIControllerNetwork>();

        ui.networkResults();

        NPCSpawner ns = spawner.GetComponent <NPCSpawner>();

        ns.OnGameOver();
    }
Exemplo n.º 9
0
        public NPCSpawnerData(NPCSpawner spawner)
        {
            numNpcs     = spawner.NumNpcs();
            npcIndicies = spawner.GetNpcIndicies();
            npcAwake    = spawner.GetNpcAwake();

            numAwakeNpcs = spawner.GetNumAwakeNpcs();

            npcDatas = new NPC.NPCData[numNpcs];
            NPC[] npcs = spawner.GetNpcs();
            for (int i = 0; i < numNpcs; i++)
            {
                npcDatas[i] = new NPC.NPCData(npcs[i]);
            }
        }
Exemplo n.º 10
0
    // Use this for initialization
    void Start()
    {
        if (worldObject == null)
        {
            worldObject = GameObject.Find("_Scripts");
        }

        if (worldSpawner == null)
        {
            worldSpawner = worldObject.GetComponent <NPCSpawner>();
        }

        path = gameObject.AddComponent <LineRenderer>();

        UpdateVisual();
    }
Exemplo n.º 11
0
    // Use this for initialization
    public void Start()
    {
        if (worldObject == null)
        {
            worldObject = GameObject.Find("_Scripts");
        }

        if (worldSpawner == null)
        {
            worldSpawner = worldObject.GetComponent <NPCSpawner>();
        }


        if (path == null)
        {
            path = GetComponent <LineRenderer>();
        }
    }
Exemplo n.º 12
0
    // Start is called before the first frame update
    private void Start()
    {
        // Starting values
        sliders            = GetComponent <SliderChangeScript>();
        burnoutChangeValue = 2f;
        moodChangeValue    = 2f;
        counterAdd         = divideNum;
        clockTime          = clockStart;
        budgetScript       = GetComponent <BudgetScript>();

        // Pool NPCs
        spawner = GetComponent <NPCSpawner>();

        // Game events
        GameEvents.instance.onSundayEvent += itIsSunday;

        // Start the game loop
        StartCoroutine(PlayGameLoop());
    }
Exemplo n.º 13
0
    void OnJoinedRoom()
    {
        Debug.Log("Joined Room!");

        NPCSpawner spawner = GetComponent <NPCSpawner>();

        GameObject     mePlayer = (GameObject)PhotonNetwork.Instantiate("Player Networked", new Vector3(UnityEngine.Random.Range(spawner.worldMinX, spawner.worldMaxX), UnityEngine.Random.Range(spawner.worldMinY, spawner.worldMaxY)), Quaternion.identity, 0);
        PlayerMovement pMove    = mePlayer.GetComponent <PlayerMovement>();

        pMove.gameSettings = gameObject;

        GameSettingsNetwork gsn = GetComponent <GameSettingsNetwork>();

        gsn.myNumber = pMove.playerNumber = PhotonNetwork.playerList.Length - 1;
        gsn.UpdateNetworkColor();


        GetComponent <GameLogicNetwork>().OnLobbyWait();
    }
Exemplo n.º 14
0
    private void WalkTowardsSpotInRegion()
    {
        Vector3 position = NPCSpawner.GetRandomPointWithinMeshRegion(region);

        moveController.move.SetAutoMovePosition(position);
    }
Exemplo n.º 15
0
    void InitSpawnCtlr()
    {
        // 난이도 선택 및 NPCSpawn 시작!
        SpawnController[] spawnCtlrs = GameObject.FindObjectsOfType <SpawnController>();
        if (null == spawnCtlrs || 0 == spawnCtlrs.Length)
        {
            spawnCtlr = ResourceMgr.InstAndGetComponent <SpawnController>("MapComponent/SpawnController");
        }
        else
        {
            spawnCtlr = spawnCtlrs[0];
        }

        if (!TutorialGameState.IsTutorial)
        {
            spawnCtlr.gameObject.SetActive(false);
            return;
        }

        spawnCtlr.Init(G_GameInfo.PlayerController.Leader.gameObject);
        CameraManager.instance.mainCamera.enabled = true;
        //G_GameInfo.PlayerController.Leader.SuperRecoveryTick = float.MaxValue;
        //G_GameInfo.PlayerController.Leader.CharInfo.SuperArmor = 0;

        //<==========================================
        //          스폰될 NPC들 설정해주기
        //<==========================================
        //Dictionary<uint, StageLowData.NpcPostingInfo> placementDic = LowDataMgr.GetSingleStagePlacementDatas(StageInfo.stageId);
        spawnGroup = spawnCtlr.GetList <SpawnGroup>();

        int           totalMonster = 0;
        List <string> SpawnEffects = new List <string>();

        for (int i = 0; i < spawnGroup.Count; i++)
        {
            SpawnGroup group = spawnGroup[i];
            totalMonster += group.spawnerList.Count;
            for (int spawnerNo = 0; spawnerNo < group.spawnerList.Count; spawnerNo++)
            {
                // NPCSpawner만 골라서 처리해주도록 한다.
                NPCSpawner npcSpawner = group.spawnerList[spawnerNo] as NPCSpawner;
                if (null == npcSpawner)
                {
                    continue;
                }

                npcSpawner.Owner = group;
            }

            // 스폰불가능한 Spawner는 지우도록 한다.
            group.spawnerList.RemoveAll((spawner) =>
            {
                bool removed = false;
                if (spawner is NPCSpawner)
                {
                    removed = (spawner as NPCSpawner).unitId == 0;
                }

                if (removed)
                {
                    DestroyImmediate((spawner as NPCSpawner).gameObject);
                }

                return(removed);
            });
        }

        spawnCtlr.StartController();

        //< 이펙트를 풀에 생성해둔다
        for (int i = 0; i < SpawnEffects.Count; i++)
        {
            FillSpawnPool(effectPool, SpawnEffects[i], 3);
        }

        GameObject arrowGo = GameObject.Find("Arrow");

        if (arrowGo == null)
        {
            return;
        }

        Transform arrowTf = arrowGo.transform;

        for (int i = 0; i < arrowTf.childCount; i++)
        {
            Transform tf = arrowTf.GetChild(i);
            if (tf == null)
            {
                continue;
            }

            EventObj eventObj = tf.GetComponent <EventObj>();
            if (eventObj == null)
            {
                eventObj = tf.gameObject.AddComponent <EventObj>();
            }

            eventObj.EventTarget = G_GameInfo.PlayerController.Leader.gameObject;
            eventObj.Callback    = delegate() {
                ArrowList.RemoveAt(0);
            };

            eventObj.Hide();
            ArrowList.Add(eventObj);
        }

        ArrowList[0].Show();
    }
Exemplo n.º 16
0
    void InitSpawnCtlr()
    {
        DungeonTable.TowerInfo tLowData = _LowDataMgr.instance.GetLowDataTower(StageId);
        //TimeLimit = tLowData.limitTime;

        // 난이도 선택 및 NPCSpawn 시작!
        SpawnController[] spawnCtlrs = GameObject.FindObjectsOfType <SpawnController>();
        if (null == spawnCtlrs || 0 == spawnCtlrs.Length)
        {
            spawnCtlr = ResourceMgr.InstAndGetComponent <SpawnController>("MapComponent/SpawnController");
        }
        else
        {
            spawnCtlr = spawnCtlrs[0];
        }

        spawnCtlr.Init(G_GameInfo.PlayerController.Leader.gameObject);

        //<==========================================
        //          스폰될 NPC들 설정해주기
        //<==========================================
        uint[] Group1_UnitId = new uint[] {
            tLowData.MobId1,
            tLowData.MobId2,
            tLowData.MobId3,
        };

        uint[] Group2_UnitId = new uint[] {
            tLowData.MobId4,
            tLowData.MobId5,
            tLowData.MobId6,
        };

        uint[] Group3_UnitId = new uint[] {
            tLowData.MobId7,
            tLowData.MobId8,
            tLowData.MobId9,
            tLowData.MobId10,
            tLowData.MobId11            //얘가 보스.
        };


        spawnGroup = spawnCtlr.GetList <SpawnGroup>();

        int           totalMonster = 0;
        List <string> SpawnEffects = new List <string>();

        for (int i = 0; i < spawnGroup.Count; i++)
        {
            SpawnGroup group = spawnGroup[i];
            totalMonster += group.spawnerList.Count;
            uint[] unitId = Group1_UnitId;
            if (group.groupNo == 2)
            {
                unitId = Group2_UnitId;
            }
            if (group.groupNo == 3)
            {
                unitId = Group3_UnitId;
            }

            for (int spawnerNo = 0; spawnerNo < group.spawnerList.Count; spawnerNo++)
            {
                //if (unitId[spawnerNo] == 0)continue;

                // NPCSpawner만 골라서 처리해주도록 한다.
                NPCSpawner npcSpawner = group.spawnerList[spawnerNo] as NPCSpawner;
                if (null == npcSpawner)
                {
                    continue;
                }

                npcSpawner.unitId = (int)unitId[spawnerNo];
                npcSpawner.Owner  = group;
            }

            // 스폰불가능한 Spawner는 지우도록 한다.
            group.spawnerList.RemoveAll((spawner) =>
            {
                bool removed = false;
                if (spawner is NPCSpawner)
                {
                    removed = (spawner as NPCSpawner).unitId == 0;
                }

                if (removed)
                {
                    DestroyImmediate((spawner as NPCSpawner).gameObject);
                }

                return(removed);
            });
        }

        spawnCtlr.StartController();

        //< 이펙트를 풀에 생성해둔다
        for (int i = 0; i < SpawnEffects.Count; i++)
        {
            FillSpawnPool(effectPool, SpawnEffects[i], 3);
        }

        int dropGold = NetData.instance._RewardData.GetCoin;

        NormalDropGold = Mathf.CeilToInt(dropGold / (totalMonster + 5));
        BossDropGold   = dropGold - (NormalDropGold * (totalMonster - 1));
    }
Exemplo n.º 17
0
    void InitSpawnCtlr()
    {
        // 난이도 선택 및 NPCSpawn 시작!
        SpawnController[] spawnCtlrs = GameObject.FindObjectsOfType <SpawnController>();
        if (null == spawnCtlrs || 0 == spawnCtlrs.Length)
        {
            spawnCtlr = ResourceMgr.InstAndGetComponent <SpawnController>("MapComponent/SpawnController");
        }
        else
        {
            spawnCtlr = spawnCtlrs[0];
        }

        spawnCtlr.Init(G_GameInfo.PlayerController.Leader.gameObject);

        //<==========================================
        //          스폰될 NPC들 설정해주기
        //<==========================================
        //Dictionary<uint, StageLowData.NpcPostingInfo> placementDic = LowDataMgr.GetSingleStagePlacementDatas(StageInfo.stageId);
        spawnGroup = spawnCtlr.GetList <SpawnGroup>();

        int           totalMonster = 0;
        List <string> SpawnEffects = new List <string>();

        for (int i = 0; i < spawnGroup.Count; i++)
        {
            SpawnGroup group = spawnGroup[i];
            totalMonster += group.spawnerList.Count;
            for (int spawnerNo = 0; spawnerNo < group.spawnerList.Count; spawnerNo++)
            {
                // NPCSpawner만 골라서 처리해주도록 한다.
                NPCSpawner npcSpawner = group.spawnerList[spawnerNo] as NPCSpawner;
                if (null == npcSpawner)
                {
                    continue;
                }

                npcSpawner.Owner = group;

                // NPCSpawner에서 SpawnNo를 얻어와서.
                //if (!placementDic.ContainsKey((uint)npcSpawner.UnitNum))
                //{
                //    if (GameDefine.TestMode)
                //        Debug.Log("UnitLowData.DataInfo Index Error UnitNum : " + npcSpawner.UnitNum + " , StageId : " + StageInfo.stageId);

                //    // 없는 데이터는 스폰안되도록하기.
                //    npcSpawner.unitId = 0;
                //    continue;
                //}

                //// 스테이지 정보 데이터 기반으로 스폰될 유닛 셋팅해주기.
                //npcSpawner.unitId = (int)placementDic[(uint)npcSpawner.UnitNum].unitId;
                //npcSpawner.GroupNo = (int)placementDic[(uint)npcSpawner.UnitNum].groupNo;
                //npcSpawner.SetEventData(placementDic[(uint)npcSpawner.UnitNum]);

                ////< 출현할때 이펙트 리스트를 저장
                //if (placementDic[(uint)npcSpawner.UnitNum].intro == 1 && !SpawnEffects.Contains(placementDic[(uint)npcSpawner.UnitNum].introEffect))
                //    SpawnEffects.Add(placementDic[(uint)npcSpawner.UnitNum].introEffect);
            }

            // 스폰불가능한 Spawner는 지우도록 한다.
            group.spawnerList.RemoveAll((spawner) =>
            {
                bool removed = false;
                if (spawner is NPCSpawner)
                {
                    removed = (spawner as NPCSpawner).unitId == 0;
                }

                if (removed)
                {
                    DestroyImmediate((spawner as NPCSpawner).gameObject);
                }

                return(removed);
            });
        }

        spawnCtlr.StartController();

        //< 트랩 스폰
        //TrapSpawnController[] TrapspawnCtlrs = GameObject.FindObjectsOfType<TrapSpawnController>();
        //if (TrapspawnCtlrs != null && TrapspawnCtlrs.Length > 0)
        //{
        //    TrapSpawnController TrapspawnCtlr = TrapspawnCtlrs[0];
        //    TrapspawnCtlr.Init();
        //}

        //< 이펙트를 풀에 생성해둔다
        for (int i = 0; i < SpawnEffects.Count; i++)
        {
            FillSpawnPool(effectPool, SpawnEffects[i], 3);
        }

        int dropGold = NetData.instance._RewardData.GetCoin;

        NormalDropGold = Mathf.CeilToInt(dropGold / (totalMonster + 5));
        BossDropGold   = dropGold - (NormalDropGold * (totalMonster - 1));
    }