예제 #1
0
        private void Canvas_MouseWheel(object sender, MouseWheelEventArgs e)
        {
            Point         pointToWindow   = e.GetPosition(canvas);
            CTerkepiCella tc              = getTerkepiCellaAtScreenPosition(pointToWindow);
            Point         regiCanvasCoord = getCanvasCoord(tc);

            double ho = scrollviewer1.HorizontalOffset;
            double vo = scrollviewer1.VerticalOffset;

            if (e.Delta == -120 && oldalhossz > 5)
            {
                oldalhossz -= 15;
            }
            if (e.Delta == 120 && oldalhossz < 100)
            {
                oldalhossz += 15;
            }
            zoom.Value = oldalhossz;

            terkeprajzolas();

            Point ujCanvasCoord = getCanvasCoord(tc);

            scrollviewer1.ScrollToHorizontalOffset(ho + (ujCanvasCoord.X - regiCanvasCoord.X));
            scrollviewer1.ScrollToVerticalOffset(vo + (ujCanvasCoord.Y - regiCanvasCoord.Y));
        }
예제 #2
0
        public Point getCanvasCoord(CTerkepiCella tc)
        {
            Point p1 = new Point();

            if ((tc.Oszlop % 2) == 0)
            {
                p1.X = (int)(tc.Oszlop * offsetX() + tc.Oszlop * oldalhossz);
                p1.Y = (int)(tc.Sor * 2 * offsetY() + offsetY());
            }
            else
            {
                p1.X = (int)(tc.Oszlop * offsetX() + tc.Oszlop * oldalhossz);
                p1.Y = (int)(tc.Sor * 2 * offsetY() + 2 * offsetY());
            }

            return(p1);
        }
예제 #3
0
        public CTerkepiEgyseg getTerkepiEgysegAtScreenPosition(Point p)
        {
            CTerkepiEgyseg ret = null;
            CTerkepiCella  tc  = getTerkepiCellaAtScreenPosition(p);

            foreach (CJatekos j in App.jatek.jatekosok)
            {
                foreach (CTerkepiEgyseg te in j.egysegekLista)
                {
                    if (te.aktualisCella.Oszlop == tc.Oszlop && te.aktualisCella.Sor == tc.Sor)
                    {
                        return(te);
                    }
                }
            }
            return(ret);
        }
예제 #4
0
        public void OnLeftMouseDown(Point windowCoord)
        {
            CTerkepiCella tc = getTerkepiCellaAtScreenPosition(windowCoord);

            if (App.jatek.terkep.terkepAllapot == ETerkepAllapot.harc)
            {
                IHarcoloTerkepiEgyseg tempHarcoloEgyseg = null;
                tempHarcoloEgyseg = (IHarcoloTerkepiEgyseg)aktualisEgyseg;
                if (tempHarcoloEgyseg != null)
                {
                    tempHarcoloEgyseg.Tamadas(App.jatek.terkep, getTerkepiEgysegAtScreenPosition(windowCoord));
                }
                terkeprajzolas();
                App.jatek.terkep.terkepAllapot = ETerkepAllapot.szabad;
            }

            //}
        }
예제 #5
0
        private void canvas_Drop(object sender, DragEventArgs e)
        {
            App.jatek.terkep.terkepAllapot = ETerkepAllapot.szabad;
            Point               pointToWindow   = e.GetPosition(canvas);
            CTerkepiImage       img             = (CTerkepiImage)e.Data.GetData(typeof(CTerkepiImage));
            CTerkepiCella       cella           = getTerkepiCellaAtScreenPosition(pointToWindow);
            IMozgoTerkepiEgyseg tempMozgoEgyseg = null;

            tempMozgoEgyseg = (IMozgoTerkepiEgyseg)img.terkepiEgyseg;
            if (tempMozgoEgyseg != null)
            {
                if (cella.tulaj != null)
                {
                    tempMozgoEgyseg.mozgasCellara(App.jatek.terkep, cella);
                }
            }
            terkeprajzolas();
        }
예제 #6
0
        public CTerkepiCella getTerkepiCellaAtScreenPosition(Point p)
        {
            CTerkepiCella ret = null;

            for (int j = 0; j < App.jatek.terkep.magassag; j++)
            {
                for (int i = 0; i < App.jatek.terkep.szelesseg; i++)
                {
                    PointCollection curvePoints = getScreenCoords(App.jatek.terkep.sorok[i][j]);
                    for (int k = 0; k < 6; k++)
                    {
                        if (IsPointInPolygon4(curvePoints, p))
                        {
                            ret = App.jatek.terkep.sorok[i][j];
                            return(ret);
                        }
                    }
                }
            }
            return(ret);
        }
예제 #7
0
        public PointCollection getScreenCoords(CTerkepiCella tc)
        {
            Point p1 = getCanvasCoord(tc);

            Point p2 = p1;

            p2.X += offsetX();
            p2.Y += offsetY();

            Point p3 = p2;

            p3.X += oldalhossz;

            Point p4 = p3;

            p4.X += offsetX();
            p4.Y -= offsetY();

            Point p5 = p4;

            p5.X -= offsetX();
            p5.Y -= offsetY();

            Point p6 = p5;

            p6.X -= oldalhossz;

            PointCollection curvePoints = new PointCollection();

            curvePoints.Add(p1);
            curvePoints.Add(p2);
            curvePoints.Add(p3);
            curvePoints.Add(p4);
            curvePoints.Add(p5);
            curvePoints.Add(p6);

            return(curvePoints);
        }
예제 #8
0
        private void HandleKeyPressOnCanvas(object sender, KeyEventArgs e)
        {
            Point pointToWindow = Mouse.GetPosition(canvas);

            if (App.jatek.terkep.terkepAllapot == ETerkepAllapot.szerkesztes)
            {
                CTerkepiCella cella = getTerkepiCellaAtScreenPosition(pointToWindow);
                if (cella != null)
                {
                    if (e.IsDown && e.Key == Key.D1)
                    {
                        cella.tulaj = App.jatek.jatekosok[0];
                    }
                    if (e.IsDown && e.Key == Key.D2)
                    {
                        cella.tulaj = App.jatek.jatekosok[1];
                    }
                    if (e.IsDown && e.Key == Key.D3)
                    {
                        cella.tulaj = App.jatek.jatekosok[2];
                    }
                    if (e.IsDown && e.Key == Key.D0)
                    {
                        cella.tulaj         = null;
                        cella.extraSzomszed = null;
                    }
                    if (e.IsDown && e.Key == Key.LeftCtrl)
                    {
                        from = getTerkepiCellaAtScreenPosition(pointToWindow);
                    }
                    if (e.IsDown && e.Key == Key.LeftShift)
                    {
                        if (from != null)
                        {
                            if (getTerkepiCellaAtScreenPosition(pointToWindow).extraSzomszed == null)
                            {
                                getTerkepiCellaAtScreenPosition(pointToWindow).extraSzomszed = new List <CTerkepiCella>();
                            }
                            CTerkepiCella c = getTerkepiCellaAtScreenPosition(pointToWindow);
                            if (c.tulaj == from.tulaj)
                            {
                                c.extraSzomszed.Add(from);
                            }
                        }
                    }
                    if (e.IsDown && e.Key == Key.T)
                    {
                        CMozgoTerkepiEgyseg e3 = new CTank();
                        e3.aktualisCella = getTerkepiCellaAtScreenPosition(pointToWindow);
                        e3.jatekos       = e3.aktualisCella.tulaj;
                        e3.aktualisCella.tulaj.egysegekLista.Add(e3);
                    }
                    if (e.IsDown && e.Key == Key.K)
                    {
                        CMozgoTerkepiEgyseg e3 = new CKatona();
                        e3.aktualisCella = getTerkepiCellaAtScreenPosition(pointToWindow);
                        e3.jatekos       = e3.aktualisCella.tulaj;
                        e3.aktualisCella.tulaj.egysegekLista.Add(e3);
                    }
                }
                terkeprajzolas();
            }
        }