예제 #1
0
    private void Awake()
    {
        _instance = this;
        gameTrans = UnityTool.FindChild(gameObject, "Game").transform;
        lvInfoMgr = LevelInfoMgr.Instance;
        mapMaker  = GetComponent <MapMaker>();

        enemyBuilder   = new EnemyBuilder();
        towerBuilder   = new TowerBuilder();
        bullectBuilder = new BullectBuilder();
        currentLevel   = GameRoot.Instance.pickLevel;
        info           = lvInfoMgr.levelInfoList[currentLevel];
        //初始化地图
        mapMaker.InitAllGrid();
        mapMaker.LoadLevelMap(currentLevel);
        //获得关卡数据和回合数据
        SetLevelData(info);

        level = new Level(info);
        level.HandleRound();
        beginPos = level.roundInfoList[0].pathList[0];
        EventCenter.Broadcast(EventType.SetStartPos, beginPos);
        isPause = true;
        EventCenter.AddListener <int>(EventType.UseItemInGame, UseItem);
    }
 /// <summary>
 /// Gets the tile manager script from the tile manager object
 /// gets the text on the object this script is attached to
 /// </summary>
 void Start()
 {
     TowerBuilderScript = TileManagerGO.GetComponent <TowerBuilder>();
     TileManagerScript  = TileManagerGO.GetComponent <TileManager>();
     DemonComingText    = gameObject.GetComponent <TextMeshProUGUI>();
     DemonsRemoved      = 0;
     DemonMaxCount      = TowerBuilderScript.numberOfEnemies;
 }
예제 #3
0
 private void Awake()
 {
     if (instance != null)
     {
         Debug.LogError("TowerBuilder: More than one TowerBuilder in scene!");
         return;
     }
     instance = this;
 }
예제 #4
0
 void Start()
 {
     cantBuild  = false;
     render     = GetComponent <Renderer>();
     startColor = render.material.color;
     //buildManager = BuildManager.instance;
     tb           = GameObject.Find("CardBuilder");
     towerBuilder = tb.GetComponent <TowerBuilder>();
 }
예제 #5
0
 private void Start()
 {
     _towerBuilder = GetComponent <TowerBuilder>();
     _blocks       = _towerBuilder.Build();
     foreach (var block in _blocks)
     {
         block.HitBullet += OnBlockHit;
     }
     sizeChanged?.Invoke(_blocks.Count);
 }
        public void FindBottomProgram_GivenTestFile_Returnstknk()
        {
            string filename = @"Input\testa.txt";

            string expected = "tknk";

            string actual = TowerBuilder.FindBottomProgram(filename);

            Assert.AreEqual(expected, actual);
        }
예제 #7
0
        public void FindBalancingWeight_GivenTestFile_Return60()
        {
            string filename = @"Input\testa.txt";

            int expected = 60;

            int actual = TowerBuilder.FindBalancingWeight(filename);

            Assert.AreEqual(expected, actual);
        }
예제 #8
0
    private void Start()
    {
        _towerBuilder = GetComponent <TowerBuilder>();
        _blocks       = _towerBuilder.Build();

        foreach (var block in _blocks)
        {
            block.BulletHit += OnBulletHit;
        }
        SizeUpdate?.Invoke(_blocks.Count);
    }
예제 #9
0
 public void Construct(MapBuilder mapBuilder,
                       NavMeshCreator navMeshCreator,
                       MapManager mapManager,
                       CreepsManager creepsManager,
                       TowerBuilder towerBuilder)
 {
     _mapBuilder     = mapBuilder;
     _navMeshCreator = navMeshCreator;
     _mapManager     = mapManager;
     _creepsManager  = creepsManager;
     _towerBuilder   = towerBuilder;
 }
예제 #10
0
 void Start()
 {
     selectionCircle = (GameObject)GameObject.Instantiate(circlePrefab);
     selectionCircle.SetActive(false);
     towerBuilder     = GetComponent <TowerBuilder>();
     unitManager      = GetComponent <UnitManager>();
     towerMask        = towerBuilder.towerMask;
     unitMask         = towerBuilder.unitMask;
     projectilePrefab = towerBuilder.projectilePrefab;
     towerPrefabs     = towerBuilder.towerPrefabs;
     hud = GetComponent <HUD>();
 }
예제 #11
0
    private void Awake()
    {
#if Game
        _instance    = this;
        mGameManager = GameManager.Instance;
        //测试代码:currentStage = new Stage(1, 1,new int[]{ 1,2,3,4,5},5,0,10,true,false,false);
        currentStage     = mGameManager.currentStage;
        normalModelPanel = mGameManager.uiManager.mUIFacade.currentScenePanelDict[StringManager.NormalModelPanel] as NormalModelPanel;
        normalModelPanel.EnterPanel();
        mapMaker = GetComponent <MapMaker>();
        mapMaker.InitMapMaker();
        mapMaker.LoadMap(currentStage.mBigLevelID, currentStage.mLevelID);
        //为什么要这样写呢?因为可以在进来的时候把资源都加载一次放进数组里面,以后直接拿就好了,不要每次都问工厂要,加载要时间
        controllers = new RuntimeAnimatorController[12];

        //mapMaker.LoadMap(2, 1);
        //成员变量赋值
        coin           = 1000;
        gameSpeed      = 1;
        monsterBuilder = new MonsterBuilder();
        towerBuilder   = new TowerBuilder();
        //建塔列表的处理
        for (int i = 0; i < currentStage.mTowerIDList.Length; i++)
        {
            GameObject itemGo = GameManager.Instance.GetGameObjectResource(FactoryType.UIFactory, "Btn_TowerBuild");
            itemGo.GetComponent <ButtonTower>().towerID = currentStage.mTowerIDList[i];//把关卡可以建造的箭塔ID赋值过来
            itemGo.transform.localPosition = transform.position;
            itemGo.transform.SetParent(towerListGo.transform);
            itemGo.transform.localScale = Vector3.one;
        }
        //箭塔价格标
        towerPriceDict = new Dictionary <int, int>
        {
            { 1, 100 },
            { 2, 120 },
            { 3, 140 },
            { 4, 160 },
            { 5, 160 }
        };
        //monsterBuilder.m_monsterID = 1;
        for (int i = 0; i < controllers.Length; i++)
        {
            controllers[i] = GetRuntimeAnimatorController("Monster/" + mapMaker.bigLevelID.ToString() + "/" + (i + 1).ToString());
        }

        level = new Level(mapMaker.roundInfoList.Count, mapMaker.roundInfoList);
        normalModelPanel.topPage.UpdateCoinText();
        normalModelPanel.topPage.UpdateRoundCount();
        isPause = true;
        //level.HandleRound();//执行责任链方法,注释掉是因为要在倒计时完毕以后调用这个方法
#endif
    }
예제 #12
0
            public static bool Prefix(Tower __instance, ref Model modelToUse)
            {
                if (lastMap != "epiloge")
                {
                    return(true);
                }
                var wep     = modelToUse.Cast <TowerModel>();
                var builder = new TowerBuilder(wep);

                builder.SetFootprint(new FootprintModel("", true, true, true));
                modelToUse = builder.build();
                return(true);
            }
예제 #13
0
    [HideInInspector] public int gameSpeed; // 游戏速度(一倍速,二倍速)

    private void Awake()
    {
#if Game
        // 一些引用的赋值
        Instance         = this;
        mGameManager     = GameManager.Instance;
        currentStage     = mGameManager.CurrentStage;
        normalModelPanel = mGameManager.UIManager.mUIFacade.currentScenePanelDict[StringManager.P_NormalModelPanel] as NormalModelPanel;
        mapMaker         = GetComponent <MapMaker>();
        mapMaker.InitMapMaker();
        mapMaker.Loadmap(currentStage.bigLevelID, currentStage.levelID);                  // 加载地图
        level          = new Level(mapMaker.roundInfoList.Count, mapMaker.roundInfoList); // 获取加载完地图中怪物波次的信息
        monsterBuilder = new MonsterBuilder();
        towerBuilder   = new TowerBuilder();

        // 玩家属性的赋值
        gameSpeed = 1;
        Coin      = 500;
        isPause   = true;
        gameOver  = false;

        normalModelPanel.EnterPanel();

        // RuntimeAnimatorController资源的赋值
        controllers = new RuntimeAnimatorController[12];
        for (int i = 0; i < controllers.Length; i++)
        {
            controllers[i] = GetRuntimeAnimator("Monster/" + currentStage.bigLevelID.ToString() + "/" + (i + 1));
        }

        // 建塔列表的赋值
        for (int i = 0; i < currentStage.towerIDList.Length; i++)
        {
            GameObject item = mGameManager.GetItem(FactoryType.UI, "Btn_TowerBuilder");
            item.GetComponent <ButtonTower>().towerID = currentStage.towerIDList[i];
            item.transform.SetParent(towerListCanvas.transform);
            item.transform.localPosition = Vector3.zero;
            item.transform.localScale    = Vector3.one;
        }

        // 建塔列表的价格赋值
        towerPriceList = new Dictionary <int, int>()
        {
            { 1, 100 },
            { 2, 120 },
            { 3, 160 },
            { 4, 160 },
            { 5, 160 },
        };
#endif
    }
예제 #14
0
    public GameObject handleTowerCanvasGo;       //处理塔升级与买卖的画布



    private void Awake()
    {
#if Game
        _instance    = this;
        mGameManager = GameManager.Instance;
        //测试代码
        //currentStage = new Stage(10,5,new int[] { 1,2,3,4,5},false,0,1,1,true,false);
        currentStage     = mGameManager.currentStage;
        normalModelpanel = mGameManager.uiManager.mUIFacade.currentScenePanelDict[StringManager.NormalModelPanel] as NormalModelPanel;
        normalModelpanel.EnterPanel();
        mapMaker = GetComponent <MapMaker>();
        mapMaker.InitMapMaker();
        mapMaker.LoadMap(currentStage.mBigLevelID, currentStage.mLevelID);
        //成员变量赋值
        gameSpeed = 1;
        coin      = 1000;

        monsterBuilder = new MonsterBuilder();
        towerBuilder   = new TowerBuilder();
        //建塔列表的处理
        for (int i = 0; i < currentStage.mTowerIDList.Length; i++)
        {
            GameObject itemGo = mGameManager.GetGameObjectResource(FactoryType.UIFactory, "Btn_TowerBuild");
            itemGo.transform.GetComponent <ButtonTower>().towerID = currentStage.mTowerIDList[i];
            itemGo.transform.SetParent(towerListGo.transform);
            itemGo.transform.localPosition = Vector3.zero;
            itemGo.transform.localScale    = Vector3.one;
        }
        //建塔价格表
        towerPriceDict = new Dictionary <int, int>
        {
            { 1, 100 },
            { 2, 120 },
            { 3, 140 },
            { 4, 160 },
            { 5, 160 }
        };

        controllers = new RuntimeAnimatorController[12];
        for (int i = 0; i < controllers.Length; i++)
        {
            controllers[i] = GetRuntimeAnimatorController("Monster/" + mapMaker.bigLevelID.ToString() + "/" + (i + 1).ToString());
        }
        level = new Level(mapMaker.roundInfoList.Count, mapMaker.roundInfoList);
        normalModelpanel.topPage.UpdateCoinText();
        normalModelpanel.topPage.UpdateRoundText();
        //level.HandleRound();
        isPause = true;
#endif
    }
예제 #15
0
    private void Start()
    {
        towerBuilder = TowerBuilder.instance;

        // Creates a LinkedList row for each row on screen
        // corresponding with y coord, bottom to top
        for (int i = 0; i < towerBuilder.GetRowCount(); i++)
        {
            towers.AddLast(new LinkedList <GameObject>());
        }
        for (int i = 0; i < towerBuilder.GetRowCount(); i++)
        {
            enemiesInRow.AddLast(new LinkedList <GameObject>());
        }
    }
예제 #16
0
    private void Awake()
    {
        Instance = this;

        m_BuildCursor = Instantiate(m_BuildCursor); // Create a clone so we're not playing around with the prefab
        m_BuildCursor.SetActive(false);

        m_CursorSprite = m_BuildCursor.GetComponent <SpriteRenderer>();
        m_RangePreview = m_BuildCursor.GetComponent <LineRenderer>();
        m_RangePreview.positionCount = 50;

#if !UNITY_EDITOR
        m_FingerID = 0;
#endif
    }
예제 #17
0
        /// <summary>
        /// This is where all the Tower defense update calls should be placed so that it is easy to transfer our
        /// project over to the main one without having to add a lot of code to the main program.
        /// </summary>
        /// <param name="gametime">current game time</param>
        /// <param name="keyboard">keyboard state</param>
        /// <param name="mouse">mouse state</param>
        public static void Update(GameTime gametime, KeyboardState keyboard, MouseState mouse)
        {
            Random random = new Random();

            if (LastWaveUpdate == TimeSpan.Zero)
            {
                LastWaveUpdate = gametime.TotalGameTime;
            }

            if (currentWave != null && !currentWave.complete)
            {
                currentWave.update(gametime);
                LastWaveUpdate = gametime.TotalGameTime;
            }
            else if ((gametime.TotalGameTime - LastWaveUpdate) > SpawnNextWaveIn)
            {
                if (TDPlayerStats.currentWave == TDPlayerStats.maxWaves)
                {
                    TPEngine.Get().State.PopState();
                    TPEngine.Get().State.PushState(new TDScoreScreenState());
                }

                TDPlayerStats.Money += 5;
                TDPlayerStats.currentWave++;
                currentWave = new EnemyWave(random.Next(8, 12), 1);

                //LastWaveUpdate = gametime.TotalGameTime;
            }

            if (TDPlayerStats.Grade <= 0)
            {
                TPEngine.Get().State.PopState();
                TPEngine.Get().State.PushState(new TDScoreScreenState());
            }

            if (Keyboard.GetState().IsKeyDown(Keys.X) && !clicked)
            {
                TDPlayerStats.Grade = 0;
                TPEngine.Get().State.PopState();
                TPEngine.Get().State.PushState(new TDScoreScreenState());
                clicked = true;
            }
            TowerBuilder.UpdateKeyboardInput(keyboard, mouse);
            Enemy.Update(gametime);
            Tower.Update(gametime);
            Projectile.UpdateProjectiles(gametime);
            Window.Update(gametime, keyboard, mouse);
        }
    /// <summary>
    /// Loads all of the level stats in from the TowerBuilder script
    /// </summary>
    public void LoadingLevelStats()
    {
        // linking loader script and launching
        towerbuilder = gameObject.GetComponent <TowerBuilder>();
        towerbuilder.Setter();

        // linking base stats
        xTiles       = towerbuilder.xTiles;
        yTiles       = towerbuilder.yTiles;
        maxPathTiles = towerbuilder.maxPathTiles;
        startYIndex  = towerbuilder.startYindex;
        endYIndex    = towerbuilder.endYindex;

        // passing over to levelManager
        levelManager = gameObject.GetComponent <LevelManager>();
        levelManager.timePerSpawn    = towerbuilder.timePerSpawn;
        levelManager.numberOfEnemies = towerbuilder.numberOfEnemies;

        levelManager.enemyHP = towerbuilder.enemyHP;
    }
예제 #19
0
 void Start()
 {
     levelBuilder  = GameObject.Find("LevelBuilder").GetComponent <LevelBuilder>();
     towerBuilder  = GameObject.Find("TowerBuilder").GetComponent <TowerBuilder>();
     webCamTexture = new WebCamTexture();
     if (!string.IsNullOrEmpty(DeviceName))
     {
         webCamTexture.deviceName = DeviceName;
     }
     GetComponent <Renderer>().material.mainTexture = webCamTexture;
     webCamTexture.Play();
     photo = new Texture2D(webCamTexture.width, webCamTexture.height);
     photo.SetPixels(webCamTexture.GetPixels());
     photo.Apply();
     gridPlane.GetComponent <Renderer>().material.mainTexture = photo;
     foreach (var device in WebCamTexture.devices)
     {
         Debug.Log(device.name);
     }
 }
예제 #20
0
        /// <summary>
        /// Loads the resources used by this state
        /// </summary>
        protected override void Load()
        {
            base.Load();

            tdMouse  = new TDPointer(new Vector2(200, 200));
            TDLayers = new TPLayer[numLayers];
            for (int i = 0; i < numLayers; i++)
            {
                TDLayers[i] = new TPLayer(layers);
            }
            backgroundTexture = new TPSprite(TPEngine.Get().TextureManager.LoadTexture(@"art/TowerDefense/CurrentMap"));

            //backgroundTexture = new TPSprite(TPEngine.Get().TextureManager.LoadTexture(@"art/TowerDefense/mob"));
            TDLayers[0].AddEntity(backgroundTexture);
            TDLayers[5].AddEntity(tdMouse);

            map = new Map(1280, 720);
            TowerBuilder.Load(map);
            mp = new MapCreator(map);
            TowerDefenseManager.numLayers = numLayers;
            TowerDefenseManager.Start(map, TDLayers);
            Font = TPEngine.Get().FontManager.LoadFont(@"fonts/testfont");
        }
예제 #21
0
 private void Start()
 {
     towerBuilder = TowerBuilder.instance;
 }
예제 #22
0
    private void Start()
    {
        originalColor = rend.color;

        towerBuilder = TowerBuilder.instance;
    }
예제 #23
0
 // Use this for initialization
 void Start()
 {
     go           = GameObject.Find("CardBuilder");
     towerBuilder = go.GetComponent <TowerBuilder>();
     spellcaster  = go.GetComponent <Spells>();
 }
 /// <summary>
 /// Gets the tile manager script from the tile manager object
 /// gets the text on the object this script is attached to
 /// </summary>
 void Start()
 {
     TowerBuilderScript = TileManagerGO.GetComponent <TowerBuilder>();
     TileManagerScript  = TileManagerGO.GetComponent <TileManager>();
     RemainerText       = gameObject.GetComponent <TextMeshProUGUI>();
 }
예제 #25
0
 private void Awake()
 {
     _towerBuilder = gameObject.GetComponent <TowerBuilder>();
 }
예제 #26
0
    private void Awake()
    {
#if Game
        _instance       = this;
        gameManager     = GameManager.Instance;
        curStage        = gameManager.curStage;
        normalModePanel = gameManager.uiManager.mUIFacade.GetCurScenePanel(Constant.NormalModePanel) as NormalModePanel;
        normalModePanel.EnterPanel();

        mapMaker = transform.GetComponent <MapMaker>();
        mapMaker.Init();
        mapMaker.LoadMap(curStage.mBigLevelID, curStage.mLevelID);
        monsterBuilder = new MonsterBuilder();
        towerBuilder   = new TowerBuilder();

        animatorControllerList = new RuntimeAnimatorController[12];
        for (int i = 0; i < animatorControllerList.Length; i++)
        {
            animatorControllerList[i] = GetRuntimeAnimatorController("AnimatorController/Monster/" + curStage.mBigLevelID.ToString() + "/" + (i + 1).ToString());
        }

        //初始化属性
        curRoundKillMonsterNum = 0;
        totalKillMonsterNum    = 0;
        destroyItemNum         = 0;
        carrotHp        = 10;
        coin            = 500;
        gameSpeed       = 1;
        isGamePause     = false;
        creatingMonster = false;
        isGameOver      = false;



        //建塔价格初始化
        towerPriceDict = new Dictionary <int, int>
        {
            { 1, 100 },
            { 2, 120 },
            { 3, 140 },
            { 4, 160 },
            { 5, 160 }
        };

        //建塔列表处理

        for (int i = 0; i < curStage.mTowerIDList.Length; i++)
        {
            GameObject towerGo = gameManager.GetGameObjectResource(FactoryType.UIFactory, "Btn_BuildTower");
            towerGo.GetComponent <BtnTower>().towerID = curStage.mTowerIDList[i];
            towerGo.GetComponent <BtnTower>().price   = towerPriceDict[curStage.mTowerIDList[i]];
            towerGo.transform.SetParent(towerList.transform);
            towerGo.transform.localPosition = Vector3.zero;
            towerGo.transform.localScale    = Vector3.one;
        }

        curLevel    = new Level(mapMaker.roundInfoList.Count, mapMaker.roundInfoList);
        isGamePause = true;

        normalModePanel.topPage.UpdateCoinText();
        normalModePanel.topPage.UpdateRoundText();
#endif
    }
예제 #27
0
    public override void OnStartClient()
    {
        towerBuilder = TowerBuilder.instance;

        base.OnStartClient();
    }
예제 #28
0
 private void Awake()
 {
     _towerBuilder = GetComponent <TowerBuilder>();
     _blocks       = _towerBuilder.BuildTower();
 }