コード例 #1
0
ファイル: MapRenderer.cs プロジェクト: thomaswp/ImmersionGame
        private void DrawPlatform(Graphics g, PlatformData platform)
        {
            Vector2 pos = platform.GetPosition(Degree);
            Point canvasPos = MapPointOnCanvas(pos);

            Pen pen = editorState.SelectedPlatforms.Contains(platform) ? Pens.DarkRed : Pens.Black;
            if (editorState.SelectedPlatform == platform) pen = Pens.Red;

            Pen circlePen = new Pen(pen.Color, 4);

            if (!platform.Invisible)
            {
                foreach (XNAPoint point in platform.Segments)
                {
                    DrawSegment(canvasPos, g, point);
                }
            }
            else
            {
                Color c = pen.Color;
                c = Color.FromArgb(100, c.R, c.G, c.B);
                pen = new Pen(c);
                circlePen = new Pen(c);
            }

            DrawPath(g, platform, pen);

            DrawSegue(g, platform.StartSegue, pen);

            List<PlatformSegue> segs = new List<PlatformSegue>(platform.segues);
            segs.Insert(0, platform.StartSegue);
            foreach (PlatformSegue segue in segs)
            {
                DrawSegue(g, segue, pen);
            }

            g.DrawEllipse(circlePen, new Rectangle(canvasPos.X - 25, canvasPos.Y - 25, 50, 50));
        }
コード例 #2
0
ファイル: UIHandler.cs プロジェクト: thomaswp/ImmersionGame
        private void updatePlatformOffset(PlatformData platform, int degree, Vector2 pos)
        {
            //look for the closest position in the platform's path
            //to where the mouse is, then offset it so it's there now
            float desiredDegree = 0;
            float minDis = float.MaxValue;
            for (float deg = 0; deg < 360; deg += 0.1f)
            {
                float dis = (platform.GetPosition(deg) - pos).Length();
                if (dis < minDis)
                {
                    minDis = dis;
                    desiredDegree = deg;
                }
            }

            platform.DegreeOffset += desiredDegree - degree;
            platform.DegreeOffset = (platform.DegreeOffset + 360) % 360;
        }