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; } }