// 마우스 포인터 위치 검사하기 void CheckMousePoint() { Vert v = Vert.Max; Hor h = Hor.Max; // 4분면중에서 어느 면에 포인터가 위치하고 있는가? switch (name) { case "1": v = Vert.UP; h = Hor.LEFT; break; case "2": v = Vert.UP; h = Hor.RIGHT; break; case "3": v = Vert.DOWN; h = Hor.LEFT; break; case "4": v = Vert.DOWN; h = Hor.RIGHT; break; } EventHandler.instance.GetItemSizeOnGrid(v, h, parentSlot); }
private void Hor_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) //получение цвета нажатой ячейки верхней сетки { Point c = e.GetPosition(Hor); try { TextBlock r = (TextBlock)Hor.InputHitTest(c); curColor.Fill = r.Background; } catch { Rectangle r = (Rectangle)Hor.InputHitTest(c); curColor.Fill = r.Fill; } }
private void Hor_MouseRightButtonDown(object sender, MouseButtonEventArgs e) //установка метки (кружка) на нужную ячейку верхней сетки и ее снятие { Point p = e.GetPosition(Hor); try { TextBlock r = (TextBlock)Hor.InputHitTest(p); Ellipse el = new Ellipse(); el.Height = 19; el.Width = 19; el.Fill = Brushes.Transparent; el.Stroke = Brushes.White; el.StrokeThickness = 1; Canvas.SetLeft(el, Canvas.GetLeft(r)); Canvas.SetBottom(el, Canvas.GetBottom(r)); Hor.Children.Add(el); } catch { Ellipse el = (Ellipse)Hor.InputHitTest(p); Hor.Children.Remove(el); } }
// 인벤 그리드에서 아이템사이즈에 맞는 슬롯 좌표 구하기 public void GetItemSizeOnGrid(Vert v, Hor h, UI_Slot parentSlot) { // 아이템 드래그중 아니면 검사 안함 if (SelectedItem == null) { return; } UI_Item item = SelectedItem.GetComponent <UI_Item>(); // 아이템 사이즈 int x = item.SIZE.X; int y = item.SIZE.Y; // 왼쪽 상단, 오른쪽 하단 값 int maxX, minX; int maxY, minY; int upY, downY; int rightX, leftX; upY = downY = rightX = leftX = 0; // 짝수일때와 홀수일때 좌표 계산 // 짝 if (x % 2 == 0) { maxX = x / 2; minX = (x - 1) / 2; } // 홀 else { maxX = minX = x / 2; } // 짝 if (y % 2 == 0) { maxY = y / 2; minY = (y - 1) / 2; } // 홀 else { maxY = minY = y / 2; } // 4분면중 어느곳에 마우스 포인터가 위치하는지 switch (v) { case Vert.UP: upY = parentSlot.y - maxY; downY = parentSlot.y + minY; break; case Vert.DOWN: upY = parentSlot.y - minY; downY = parentSlot.y + maxY; break; } switch (h) { case Hor.RIGHT: leftX = parentSlot.x - minX; rightX = parentSlot.x + maxX; break; case Hor.LEFT: leftX = parentSlot.x - maxX; rightX = parentSlot.x + minX; break; } sc_InvGridManager.SetItemOnGrid(leftX, rightX, downY, upY); }