Esempio n. 1
0
        public static void Update(SceneGame gs)
        {
            //selectedTowerClass = new FishingNet();
            //selectedTowerClass = new StoneThrower();
            //selectedTowerClass = new Harpoon();
            //selectedTowerClass = new Fishing();
            //selectedTowerClass = new Bait();

            imageBitmap = new Bitmap(gs.currentStage.stageImageBuildable);
            //stageImageBuildable에서 마우스 위치의 색상 얻기
            if (MouseClass.mouseX >= 0 && MouseClass.mouseY >= 0 && MouseClass.mouseX <= 479 && MouseClass.mouseY <= 479)
            {
                mousePositionColour = imageBitmap.GetPixel((int)MouseClass.mouseX, (int)MouseClass.mouseY); //맵 상에서 마우스 위치의 색상 코드 구하기
            }
            //타워 배치 테스트
            if (currentMode == 1 && MouseClass.mouseX >= 0 && MouseClass.mouseY >= 0 && MouseClass.mouseX <= 479 && MouseClass.mouseY <= 479 && MouseClass.isClicked)
            {
                bool towerNotOverlapping    = true;
                bool towerBuildableByColour = false;
                int  towerHeading           = -1;

                //겹치는 타워가 있는지 보기
                for (int i = 0; i < gs.currentStage.towersNo; i++)
                {
                    BaseTower tower = gs.currentStage.towerContainer[i];


                    if (MouseClass.mouseX > tower.posX - tower.Width && MouseClass.mouseX < tower.posX + tower.Width &&
                        MouseClass.mouseY > tower.posY - tower.Height && MouseClass.mouseY < tower.posY + tower.Height)
                    {
                        towerNotOverlapping = false;
                        //Console.WriteLine("[GameController] Tower overlapping");
                        break;
                    }
                }
                //타워를 지을 수 있는 곳인지 보기
                for (int i = 0; i < buildableColour.Length; i++)
                {
                    if (mousePositionColour == buildableColour[i])
                    {
                        towerBuildableByColour = true;
                        towerHeading           = i;
                        break;
                    }
                }
                //타워를 지음
                if (towerBuildableByColour && towerBuildable && towerNotOverlapping)
                {
                    //BaseTower tower = new TestTower();
                    if (gs.currentStage.towersNo < BaseStage.maxTowers && Player.getMoney() >= selectedTowerClass.getBuyPrice())
                    {
                        gs.currentStage.spawnNewTower(gs, selectedTowerClass, MouseClass.mouseX, MouseClass.mouseY, towerHeading);
                    }
                    else if (gs.currentStage.towersNo >= BaseStage.maxTowers)
                    {
                        towerBuildable  = false;
                        towerSelectable = false;
                        currentMode     = 0;
                        System.Windows.Forms.MessageBox.Show("타워가 너무 많습니다.");
                    }
                    towerBuildable  = false;
                    towerSelectable = false;
                    currentMode     = 0;
                    //Console.WriteLine("[GameController] Placed tower " + selectedTowerClass.Name + ", heading " + towerHeading);
                }
            }
            if (currentMode == 1 && !MouseClass.isClicked)
            {
                towerBuildable = true;
            }

            //타워 선택 테스트
            if (currentMode == 0 && MouseClass.mouseX >= 0 && MouseClass.mouseY >= 0 && towerSelectable && MouseClass.mouseX <= 479 && MouseClass.mouseY <= 479 && MouseClass.isClicked)
            {
                for (int i = 0; i < gs.currentStage.towersNo; i++)
                {
                    BaseTower tower = gs.currentStage.towerContainer[i];


                    if (MouseClass.mouseX > tower.posX - tower.Width / 2 && MouseClass.mouseX < tower.posX + tower.Width / 2 &&
                        MouseClass.mouseY > tower.posY - tower.Height / 2 && MouseClass.mouseY < tower.posY + tower.Height / 2)
                    {
                        //선택 해제

                        /*if (selectedTower == i)
                         * {
                         *  selectedTower = -1;
                         *  towerSelectable = false;
                         *  break;
                         * }*/
                        //선택
                        //else
                        if (selectedTower != i)
                        {
                            selectedTower   = i;
                            towerSelectable = false;
                            //Console.WriteLine("[GameController] Selected tower {0}", i);
                            break;
                        }
                    }
                    else
                    {
                        selectedTower = -1;
                    }
                }
            }
            if (currentMode == 0 && !MouseClass.isClicked)
            {
                towerSelectable = true;
            }
        }