Example #1
0
        protected override void OnUpdateFrame(FrameEventArgs e)
        {
            base.OnUpdateFrame(e);

            //float[] lightPos = l.getPosition();
            //if (Keyboard[Key.Plus])
            //{
            //    l.setPosition(lightPos[0], lightPos[1]+0.1f, lightPos[2], lightPos[3]);
            //}
            //else if (Keyboard[Key.Minus])
            //{
            //    l.setPosition(lightPos[0], lightPos[1] - 0.1f, lightPos[2], lightPos[3]);
            //}

            if (map.isEnemyDefeated() || map.isFriendlyDefeated())
            {
                string statement = map.isEnemyDefeated() ? "YOU WON! Replay a new game? (Y/N)" : "YOU LOST! Replay a new game?";

                if (this.WindowState == WindowState.Fullscreen)
                {
                    Console.WriteLine(statement);
                    string answer = "";

                    while (!(string.Compare(answer, "Y") == 0) ||
                           !(string.Compare(answer, "N") == 0) ||
                           !(string.Compare(answer, "y") == 0) ||
                           !(string.Compare(answer, "n") == 0))
                    {
                        answer = Console.ReadLine();

                        if (string.Compare(answer, "Y") == 0 || string.Compare(answer, "y") == 0)
                        {
                            instance.LoadMap(mapFile);
                            break;
                        }
                        else if (string.Compare(answer, "N") == 0 || string.Compare(answer, "n") == 0)
                        {
                            Exit();
                            Console.WriteLine("GAME OVER!");
                            break;
                        }
                    }
                }
                else
                {
                    gameOver = true;
                }
            }

            if (Keyboard[Key.Escape])
            {
                Exit();
            }
            if (Keyboard[Key.F4])
            {
                ReferencePlane.setVisibleAxis(ReferencePlane.XYZ);
            }
            else if (Keyboard[Key.F5])
            {
                ReferencePlane.setVisibleAxis(ReferencePlane.XZ);
            }
            else if (Keyboard[Key.F6])
            {
                ReferencePlane.setVisibleAxis(ReferencePlane.XY);
            }
            else if (Keyboard[Key.F7])
            {
                ReferencePlane.setVisibleAxis(ReferencePlane.NONE);
            }
            else if (Keyboard[Key.F11])
            {
                cameraEnabled = false;
            }
            else if (Keyboard[Key.F12])
            {
                cameraEnabled = true;
            }

            mousePosition = new Point(Mouse.X, Mouse.Y);

            mouseDelta = new Point(mousePosition.X - PointToClient(WindowCenter).X,
                                   mousePosition.Y - PointToClient(WindowCenter).Y);

            if (!mouseDelta.Equals(nullDelta))
            {
                if (camera.MouseDeltaMotion(mouseDelta.X, mouseDelta.Y))
                {
                    mouseDelta.X = mouseDelta.Y = 0;
                    System.Windows.Forms.Cursor.Position = WindowCenter;
                }
            }

            if (cameraEnabled && (camera != rmcUnitCamera))
            {
                Camera.Action action = Camera.Action.NONE;

                if (Keyboard[Key.Up])
                {
                    action |= Camera.Action.MOVE_UP;
                }
                if (Keyboard[Key.Down])
                {
                    action |= Camera.Action.MOVE_DOWN;
                }
                if (Keyboard[Key.Left])
                {
                    action |= Camera.Action.MOVE_LEFT;
                }
                if (Keyboard[Key.Right])
                {
                    action |= Camera.Action.MOVE_RIGHT;
                }
                if (Keyboard[Key.W])
                {
                    action |= Camera.Action.ROTATE_UP;
                }
                if (Keyboard[Key.S])
                {
                    action |= Camera.Action.ROTATE_DOWN;
                }
                if (Keyboard[Key.D])
                {
                    action |= Camera.Action.ROTATE_RIGHT;
                }
                if (Keyboard[Key.A])
                {
                    action |= Camera.Action.ROTATE_LEFT;
                }
                if (Keyboard[Key.Q])
                {
                    action |= Camera.Action.ROLL_LEFT;
                }
                if (Keyboard[Key.E])
                {
                    action |= Camera.Action.ROLL_RIGHT;
                }

                if (action != Camera.Action.NONE)
                {
                    camera.PerformActions(action);
                }
                else
                {
                    camera.IdleAction();
                }
            }
            else if (camera == rmcUnitCamera)
            {
                if (Keyboard[Key.Space])
                {
                    map.HoverRemoteControlUnit();
                }
                if (Keyboard[Key.Left])
                {
                    map.MoveRemoteControlUnitLeft();
                }
                if (Keyboard[Key.Right])
                {
                    map.MoveRemoteControlUnitRight();
                }
                if (Keyboard[Key.Up])
                {
                    map.MoveRemoteControlUnitUp();
                }
                if (Keyboard[Key.Down])
                {
                    map.MoveRemoteControlUnitDown();
                }
                if (Keyboard[Key.ShiftLeft])
                {
                    map.GrabRobot();
                }
                if (Keyboard[Key.AltLeft])
                {
                    map.FireProjectileFromRobot();
                }

                float[] rmcUnitPos = map.GetRemoteControlUnitPosition();

                rmcUnitCamera.LookAt(rmcUnitPos[0], 6.0f, 8.0f - rmcUnitPos[1],
                                     rmcUnitPos[0], 3.0f, 4.0f - rmcUnitPos[1], 0.0f, 1.0f, 0.0f);
            }
        }