Exemple #1
0
        private void PollMouse(uint elapsedTime)
        {
            MouseData mouse = new MouseData(TCODMouse.getStatus());

            CheckMouseButtons(mouse);

            // check for mouse move
            //if (mouse.Position != lastMousePosition)
            //{
            //    DoMouseMove(mouse);

            //    lastMousePosition = mouse.Position;
            //    lastMouseMoveTime = totalElapsed;
            //}
            if ((mouse.PixelPosition != _lastMousePixelPosition))
            {
                DoMouseMove(mouse);

                _lastMousePosition      = mouse.Position;
                _lastMousePixelPosition = mouse.PixelPosition;
                _lastMouseMoveTime      = elapsedTime;
            }

            // check for hover
            if (_isHovering == false)
            {
                StartHover(mouse);
            }
        }
Exemple #2
0
        private void CheckForMouseEvents()
        {
            var mouseData = TCODMouse.getStatus();

            if (mouseData.CellVelocityX != 0 || mouseData.CellVelocityY != 0)
            {
                CurrentScene.MouseMoved(mouseData);
            }
            if (mouseData.WheelDown || mouseData.WheelUp)
            {
                CurrentScene.MouseWheel(mouseData);
            }
            if (mouseData.LeftButton != previousMouseData.LeftButton)
            {
                CurrentScene.MouseLeftButton(mouseData);
            }
            if (mouseData.MiddleButton != previousMouseData.MiddleButton)
            {
                CurrentScene.MouseMiddleButton(mouseData);
            }
            if (mouseData.RightButton != previousMouseData.RightButton)
            {
                CurrentScene.MouseRightButton(mouseData);
            }
            previousMouseData = mouseData;
        }
Exemple #3
0
        /// <summary>
        /// Called after Application.Start has been called.  Override and place application specific
        /// setup code here after calling base method.
        /// </summary>
        /// <param name="info"></param>
        protected virtual void Setup(ApplicationInfo info)
        {
            if (!string.IsNullOrEmpty(info.Font))
            {
                TCODConsole.setCustomFont(info.Font, (int)info.FontFlags);
            }

            FpsLimit        = info.FpsLimit;
            _fpsFrameLength = FpsLimit == 0 ? 0 : MilliSecondsPerSecond / FpsLimit;
            _lastDrawMilli  = 0;

            UpdatesPerSecondLimit = info.UpdatesPerSecondLimit;
            _upsFrameLength       = UpdatesPerSecondLimit == 0 ? 0 : MilliSecondsPerSecond / UpdatesPerSecondLimit;
            _lastUpdateMilli      = 0;

            _delayFps = FpsLimit > UpdatesPerSecondLimit;

            TCODSystem.setFps(FpsLimit);

            TCODConsole.initRoot(info.ScreenSize.Width, info.ScreenSize.Height, info.Title,
                                 info.Fullscreen, info.RendererType);
            TCODConsole.setKeyboardRepeat(info.InitialDelay, info.IntervalDelay);

            TCODMouse.showCursor(true);

            if (SetupEventHandler != null)
            {
                SetupEventHandler(this, EventArgs.Empty);
            }

            Pigments = new PigmentMap(DefaultPigments.FrameworkDefaults,
                                      info.Pigments);
        }
Exemple #4
0
 static void Main(string[] args)
 {
     TCODConsole.initRoot(80, 50, "Z-Day", false);
     TCODSystem.setFps(30);
     TCODMouse.showCursor(false);
     Game.Current = new Game();
     Game.Current.Initialize();
     Game.Current.Play();
 }
Exemple #5
0
        public void initialize(bool restarting)
        {
            Console.WriteLine("Initializing...");
            gameStatus = GameStatus.LOADING;
            TCODConsole.initRoot(screenWidth, screenHeight, "Janus Roguelike", false);

            TCODMouse.showCursor(true);

            menuGui = new GUI.MenuGui(screenWidth, screenHeight);

            levels = new Dictionary <int, Level>();

            gui        = new GUI.Gui();
            loadingGui = new GUI.LoadingGui();
            messageGui = new GUI.MessageGui();
            defeatGui  = new GUI.DefeatGui();
            debugCommands.initialize(this);

            levels.Add(FIRST_LEVEL, new Level());

            levelnr = FIRST_LEVEL;
            //currentLevel = new Level();
            if (FIRST_LEVEL == int.MaxValue)
            {
                currentLevel.initialize(restarting, FIRST_LEVEL, typeof(Generators.TestLevelGenerator));
            }
            else
            {
                currentLevel.initialize(restarting, FIRST_LEVEL);
            }

            changeLevel(FIRST_LEVEL);

            player = new Player();
            player.getDestructible().ressurect();

            player.x = map.startx; //assign player position
            player.y = map.starty;

            player.fov.update();
            if (actorHandler.getActor(0) != null)
            {
                actorHandler.actors.Remove(actorHandler.getActor(0));
            }
            actorHandler.addActor(player);

            Saver.load();

            Console.WriteLine("Initializing Complete");


            render();

            lastKey    = new TCODKey();
            gameStatus = GameStatus.STARTUP;
        }
Exemple #6
0
        public void update(bool validate)
        {
            this.validate = validate;
            if (validate == true)
            {
                currentLevel.actorHandler.update(true);
            }
            mousedata = TCODMouse.getStatus();

            key = TCODConsole.checkForKeypress((int)TCODKeyStatus.KeyPressed);
            debugCommands.update();


            if (gameStatus == GameStatus.LOADING)
            {
                loadingGui.update();
            }
            else if (gameStatus == GameStatus.DEFEAT)
            {
                if (key.Pressed)
                {
                    Console.WriteLine("Restarting game...");
                    initialize(true);
                }
            }
            else if (gameStatus == GameStatus.MENU)
            {
                menuGui.focused = true;
                menuGui.update();

                if (key.KeyCode == (TCODKeyCode.Escape))
                {
                    menuGui.focused = false;
                    gameStatus      = GameStatus.IDLE;
                }
            }
            else
            {
                gameStatus = GameStatus.IDLE;

                player.update();
                gui.update();
                messageGui.update();
                if (gameStatus == GameStatus.NEW_TURN)
                {
                    currentLevel.update();
                    //Message.flush();
                }

                Message.update();
            }
            lastKey = key;
        }
Exemple #7
0
        /// <summary>
        /// Starts the game simulation and set off the normal update life cycle
        /// </summary>
        /// <returns> A code corresponding to how the game exited: 0 = normal quit </returns>
        public int Run()
        {
            if (mainConsole == null || isRunning)
            {
                return(APPLICATION_EXIT_ERROR);
            }

            isRunning = true;
            internalTimer.Start();

            // Main update loop
            while (!TCODConsole.isWindowClosed() && isRunning)
            {
                long current   = internalTimer.ElapsedMilliseconds;
                long frameTime = current - previousUpdateTime;
                previousUpdateTime = current;

                frameLag += frameTime;

                // Actual update / console drawing runs on an inner catchup loop that is also interuptable
                // will run catchup frames or delay so that it closely matches desired FRAME_RATE, that
                // is also synced with the TCODConsoles own render frame rate
                while (frameLag >= MS_PER_UPDATE &&
                       !TCODConsole.isWindowClosed() && isRunning)
                {
                    // TCOD must be flushed immedietly before polling the input channels
                    TCODConsole.flush();
                    lastKey   = TCODConsole.checkForKeypress((int)TCODKeyStatus.KeyPressed);
                    mouseData = TCODMouse.getStatus();

                    // Handle transitions between states
                    if (gotoNewState)
                    {
                        EnteredNewState(nextState);
                        gotoNewState = false;
                    }

                    Update();
                    Render();

                    // always allow for core update interrupt
                    if (lastKey.KeyCode == TCODKeyCode.F4)
                    {
                        isRunning = false;
                    }
                }
            }

            internalTimer.Stop();
            return(APPLICATION_EXIT_NORMAL);
        }
Exemple #8
0
        public void Initialize(BaseScene initialScene = null)
        {
            Logger.Initialize();
            windowTitle = "Emergence";
            Settings    = LoadSettings("Assets/config.json");
            if (Settings == null)
            {
                throw new Exception("Error loading config file.");
            }

            TCODConsole.setCustomFont($"Assets/Fonts/{Settings.Font}",
                                      (int)TCODFontFlags.LayoutAsciiInRow);
            TCODSystem.setFps(Settings.Fps);
            TCODConsole.initRoot(Settings.ScreenWidth, Settings.ScreenHeight,
                                 windowTitle, false, Settings.GetRendererType());
            previousMouseData = TCODMouse.getStatus();
            CurrentScene      = initialScene;
        }
Exemple #9
0
        // /////////////////////////////////////////////////////////////////////////////////
        #endregion
        #region Protected Methods
        // /////////////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// Called after Application.Start has been called.  Override and place application specific
        /// setup code here after calling base method.
        /// </summary>
        /// <param name="info"></param>
        protected virtual void Setup(ApplicationInfo info)
        {
            if (!string.IsNullOrEmpty(info.Font))
            {
                TCODConsole.setCustomFont(info.Font,
                                          (int)(TCODFontFlags.LayoutTCOD | TCODFontFlags.Grayscale));
            }

            TCODConsole.initRoot(info.ScreenSize.Width, info.ScreenSize.Height, info.Title,
                                 info.Fullscreen, TCODRendererType.SDL);

            TCODMouse.showCursor(true);

            if (SetupEventHandler != null)
            {
                SetupEventHandler(this, EventArgs.Empty);
            }

            Pigments = new PigmentMap(DefaultPigments.FrameworkDefaults,
                                      info.Pigments);
        }
Exemple #10
0
        public bool pickATile(out int x, out int y, float maxRange)
        {
            int pickX = Program.engine.player.x - map.offsetX, pickY = Program.engine.player.y - map.offsetY;

            for (int cx = map.renderX; cx < map.renderWidth; cx++)
            {
                for (int cy = map.renderY; cy < map.renderHeight; cy++)
                {
                    if (Program.engine.player.fov.isInFov(cx + map.offsetX, cy + map.offsetY) &&
                        (maxRange == 0 || Program.engine.player.getDistance(cx + map.offsetX, cy + map.offsetY) <= maxRange))
                    {
                        TCODColor col = TCODConsole.root.getCharBackground(cx, cy);
                        col = col.Multiply(1.2f);
                        TCODConsole.root.setCharBackground(cx, cy, col);
                    }
                }
            }
            int       oldX = pickX, oldY = pickY;
            TCODColor oldC = TCODConsole.root.getCharBackground(pickX, pickY);

            while (!TCODConsole.isWindowClosed())
            {
                render();


                mousedata          = TCODMouse.getStatus();
                Program.engine.key = TCODConsole.checkForKeypress((int)TCODKeyStatus.KeyPressed);
                if (Engine.useMouse)
                {
                    if (Program.engine.player.fov.isInFov(mousedata.CellX + map.offsetX, mousedata.CellY + map.offsetY))
                    {
                        if ((maxRange == 0 || Program.engine.player.getDistance(mousedata.CellX + map.offsetX, mousedata.CellY + map.offsetY) <= maxRange))
                        {
                            pickX = mousedata.CellX;
                            pickY = mousedata.CellY;
                            if (mousedata.LeftButtonPressed)
                            {
                                x = mousedata.CellX + map.offsetX;
                                y = mousedata.CellY + map.offsetY;
                                return(true);
                            }
                        }
                    }
                    if (mousedata.RightButtonPressed)
                    {
                        x = 0;
                        y = 0;
                        return(false);
                    }
                }
                if (pickX != oldX || pickY != oldY)
                {
                    TCODConsole.root.setCharBackground(oldX, oldY, oldC);
                    oldC = TCODConsole.root.getCharBackground(pickX, pickY);
                    TCODConsole.root.setCharBackground(pickX, pickY, TCODColor.white);
                    oldX = pickX;
                    oldY = pickY;
                }
                if (Program.engine.player.fov.isInFov(pickX + map.offsetX, pickY + map.offsetY))
                {
                    if ((maxRange == 0 || Program.engine.player.getDistance(pickX + map.offsetX, pickY + map.offsetY) <= maxRange))
                    {
                        switch (Program.engine.key.KeyCode)
                        {
                        case TCODKeyCode.Enter:
                        {
                            x = pickX + map.offsetX;
                            y = pickY + map.offsetY;

                            return(true);
                        }

                        case TCODKeyCode.Up:
                        {
                            if (Program.engine.player.fov.isInFov(pickX + map.offsetX, pickY - 1 + map.offsetY))
                            {
                                if (Program.engine.player.getDistance(pickX + map.offsetX, pickY - 1 + map.offsetY) <= maxRange)
                                {
                                    pickY--;
                                }
                            }
                            break;
                        }

                        case TCODKeyCode.Down:
                            if (Program.engine.player.fov.isInFov(pickX + map.offsetX, pickY + 1 + map.offsetY))
                            {
                                if (Program.engine.player.getDistance(pickX + map.offsetX, pickY + 1 + map.offsetY) <= maxRange)
                                {
                                    pickY++;
                                }
                            }
                            break;

                        case TCODKeyCode.Left:
                            if (Program.engine.player.fov.isInFov(pickX - 1 + map.offsetX, pickY + map.offsetY))
                            {
                                if (Program.engine.player.getDistance(pickX - 1 + map.offsetX, pickY + map.offsetY) <= maxRange)
                                {
                                    pickX--;
                                }
                            }
                            break;

                        case TCODKeyCode.Right:
                            if (Program.engine.player.fov.isInFov(pickX + 1 + map.offsetX, pickY + map.offsetY))
                            {
                                if (Program.engine.player.getDistance(pickX + 1 + map.offsetX, pickY + map.offsetY) <= maxRange)
                                {
                                    pickX++;
                                }
                            }
                            break;
                        }
                    }
                }

                TCODConsole.flush();
                Program.engine.lastKey = Program.engine.key;
            }
            x = 0;
            y = 0;
            return(false);
        }
Exemple #11
0
        private bool getInputPos(out Point p)
        {
            string ps = "";

            p = new Point();
            int       oldX = 0, oldY = 0;
            TCODColor oldC = TCODConsole.root.getCharBackground(0, 0);

            while (true && !TCODConsole.isWindowClosed())
            {
                engine.mousedata = TCODMouse.getStatus();
                engine.key       = TCODConsole.checkForKeypress((int)TCODKeyStatus.KeyPressed);
                engine.render(false);

                TCODConsole.root.setCharBackground(engine.mousedata.CellX, engine.mousedata.CellY, TCODColor.white);
                if (engine.mousedata.CellX != oldX || engine.mousedata.CellY != oldY)
                {
                    TCODConsole.root.setCharBackground(oldX, oldY, oldC);
                    oldC = TCODConsole.root.getCharBackground(engine.mousedata.CellX, engine.mousedata.CellY);

                    oldX = engine.mousedata.CellX;
                    oldY = engine.mousedata.CellY;
                }
                TCODConsole.flush();
                if (Engine.Engine.useMouse)
                {
                    p.X = engine.mousedata.CellX;
                    p.Y = engine.mousedata.CellY;
                    if (engine.mousedata.LeftButtonPressed)
                    {
                        p.X = engine.mousedata.CellX + engine.map.offsetX;
                        p.Y = engine.mousedata.CellY + engine.map.offsetY;
                        return(true);
                    }
                }

                if (engine.key.KeyCode == TCODKeyCode.Enter)
                {
                    break;
                }
                if (char.IsLetterOrDigit(engine.key.Character) || engine.key.Character == ',')
                {
                    Message.Write(engine.key.Character.ToString());
                    ps += engine.key.Character;
                }
                if (engine.key.KeyCode == TCODKeyCode.Backspace)
                {
                    if (ps.Length > 0)
                    {
                        ps.Remove(ps.Length - 1);
                        Message.unwriteLastChar();
                    }
                }
            }


            if (ps == "here")
            {
                p.X = engine.player.x;
                p.Y = engine.player.y;
                return(true);
            }

            try
            {
                string[] coords = ps.Split(',');
                p = new Point(int.Parse(coords[0]), int.Parse(coords[1]));
                return(true);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Message.WriteLine("Incorrect position");
                return(false);
            }
        }