示例#1
0
    private void OnGameScreenChange(GameScreens gameScreen)
    {
        switch (gameScreen)
        {
        case GameScreens.OnStart:
            Time.timeScale = 0;
            break;

        case GameScreens.Gameplay:
            Time.timeScale = 1;
            break;

        case GameScreens.InShop:
            Time.timeScale = 0;
            break;

        case GameScreens.GameOver:
            Time.timeScale = 0;
            break;

        case GameScreens.GamePause:
            Time.timeScale = 0;

            break;

        default:
            break;
        }
    }
示例#2
0
    public void ChangeToScreen(GameScreens newScreen)
    {
        if (m_CurrentScreen != null)
        {
            m_CurrentScreen.SetActive(false);
        }

        switch (newScreen)
        {
        case GameScreens.CompleteLevelScreen:
            m_CurrentScreen = m_CompleteLevelScreen.completeLevelObject;
            break;

        case GameScreens.NoScreen:
            m_CurrentScreen = null;
            break;

        case GameScreens.PauseScreen:
            m_CurrentScreen = m_PauseScreen.pauseObject;
            break;

        case GameScreens.GameUIScreen:
            m_CurrentScreen = m_GameUI.gameUIObject;
            break;
        }

        if (m_CurrentScreen != null)
        {
            m_CurrentScreen.SetActive(true);
        }
    }
示例#3
0
    private void OnGameScreenChange(GameScreens gameScreen)
    {
        switch (gameScreen)
        {
        case GameScreens.OnStart:
            enabled = false;
            break;

        case GameScreens.Gameplay:
            enabled = true;
            break;

        case GameScreens.InShop:
            enabled = false;
            break;

        case GameScreens.GameOver:
            enabled = false;
            break;

        case GameScreens.GamePause:
            enabled = false;
            break;

        default:
            break;
        }
    }
        static void Main(string[] args)
        {
            Raylib.InitWindow(800, 600, "Game engine");
            Raylib.SetTargetFPS(60);

            GameObject leftPaddle  = new Paddle(10, 275, KeyboardKey.KEY_W, KeyboardKey.KEY_S);
            GameObject rightPaddle = new Paddle(770, 275, KeyboardKey.KEY_UP, KeyboardKey.KEY_DOWN);

            Ball ball = new Ball();

            GameScreens screen = GameScreens.Start;

            while (!Raylib.WindowShouldClose())
            {
                // LOGIK
                if (screen == GameScreens.Start)
                {
                    if (Raylib.IsKeyPressed(KeyboardKey.KEY_ENTER))
                    {
                        screen = GameScreens.Game;
                    }
                }
                else if (screen == GameScreens.Game)
                {
                    GameObject.UpdateAll();
                }


                // ball.Update();

                // GRAFIK
                Raylib.BeginDrawing();

                if (screen == GameScreens.Start)
                {
                    Raylib.ClearBackground(Color.GRAY);
                    Raylib.DrawText("Press ENTER to start", 10, 10, 64, Color.BLACK);
                }
                else if (screen == GameScreens.Game)
                {
                    Raylib.ClearBackground(Color.GOLD);
                    GameObject.DrawAll();
                }



                // if (Raylib.CheckCollisionRecs(ballRect, ball2Rect))
                // {
                //   Raylib.DrawText("JA", 10, 500, 64, Color.BLACK);
                // }
                // else
                // {
                //   Raylib.DrawText("NEJ", 10, 500, 64, Color.BLACK);
                // }



                Raylib.EndDrawing();
            }
        }
示例#5
0
        public void Update(GameTime gameTime, GraphicsDevice graphicsDevice)
        {
            bool gameScreenPopped = false;

            do
            {
                gameScreenPopped = false;

                if (_gameScreens.Count == 0)
                {
                    Shri.Instance.Exit();
                }

                _currentGameScreen = GameScreens.Peek();

                if (_currentGameScreen.Initialized == false)
                {
                    _currentGameScreen.Initialize();
                    _currentGameScreen.LoadContent(Shri.Instance.ContentManager, graphicsDevice);
                }

                _currentGameScreen.Update(gameTime);

                if (_currentGameScreen.Quit)
                {
                    GameScreens.Pop();
                    gameScreenPopped = true;
                }
            }while (gameScreenPopped);
        }
示例#6
0
        static void Main(string[] args)
        {
            //pong game med Rocket League bilar + boll.
            Raylib.InitWindow(1000, 600, "Pong");
            Raylib.SetTargetFPS(60);


            //Bil texturer
            Texture2D carTexture = Raylib.LoadTexture("car.png");

            Texture2D carTextureL = Raylib.LoadTexture("carL.png");

            GameObject leftPaddle  = new Paddle(30, 275, KeyboardKey.KEY_W, KeyboardKey.KEY_S, carTextureL);
            GameObject rightPaddle = new Paddle(850, 275, KeyboardKey.KEY_UP, KeyboardKey.KEY_DOWN, carTexture);

            Ball ball = new Ball();


            //start
            GameScreens screen = GameScreens.Start;

            while (!Raylib.WindowShouldClose())
            {
                if (screen == GameScreens.Start)
                {
                    if (Raylib.IsKeyPressed(KeyboardKey.KEY_ENTER))
                    {
                        screen = GameScreens.Game;
                    }
                }
                else if (screen == GameScreens.Game)
                {
                    GameObject.UpdateAll();
                }


                Raylib.BeginDrawing();


                if (screen == GameScreens.Start)
                {
                    Texture2D screenTexture;
                    screenTexture = Raylib.LoadTexture("Sscreen.png");
                    Raylib.DrawTexture(screenTexture, (int)165, (int)1, Color.WHITE);
                    Raylib.DrawText("Press ENTER to start", 173, 545, 58, Color.ORANGE);
                    Raylib.ClearBackground(Color.BLACK);
                }
                else if (screen == GameScreens.Game)
                {
                    Raylib.ClearBackground(Color.GREEN);
                    GameObject.DrawAll();
                }


                //ball.Update();
                //ball.Draw();
                Raylib.EndDrawing();
            }
        }
 public void ActivateSpecificScreen(GameScreens screenName)
 {
     foreach (var item in UIScreens)
     {
         UIScreensReferences[item.ScreenName].gameObject.SetActive(false);
     }
     UIScreensReferences[screenName].gameObject.SetActive(true);
 }
示例#8
0
 public void ActivateScreen(GameScreens key, bool disableAllElse = true)
 {
     if (disableAllElse)
     {
         foreach (var screen in screens)
         {
             screen.Value.Deactivate();
         }
     }
     this.screens[key].Activate();
 }
示例#9
0
 public void SaveDataButtonPressed()
 {
     if (!playerNameInputField.text.Equals(""))
     {
         Record record = new Record();
         record.name  = playerNameInputField.text;
         record.coins = Player.Instance.CoinsCollected;
         GameManager.Instance.leaderboard.AddToRecords(record);
     }
     GameScreen = GameScreens.OnStart;
 }
示例#10
0
 public void PauseButtonPressed(bool pause)
 {
     if (pause)
     {
         GameScreen = GameScreens.GamePause;
     }
     else
     {
         GameScreen = GameScreens.Gameplay;
     }
 }
示例#11
0
    private void InitiateGameOver()
    {
        string failurePoint = Snake.GetComponent <Snake>().GetFailurePoint();

        CurrentScreen = GameScreens.GameOver;

        int tailLength = Snake.GetComponent <Snake>().GetSize();

        GetComponent <FoodSpawner>().StopSpawningFood();

        UpdateHighScore(tailLength);
        DisplayGameOverUI(failurePoint, tailLength);
    }
        public void setScreen(GameScreens nextScreen)
        {
            StartGameGrid.Visibility  = Visibility.Hidden;
            PlayerNameGrid.Visibility = Visibility.Hidden;
            PlayGameGrid.Visibility   = Visibility.Hidden;
            switch (nextScreen)
            {
            case GameScreens.ScreenStartGame: StartGameGrid.Visibility = Visibility.Visible; break;

            case GameScreens.ScreenPlayerName: PlayerNameGrid.Visibility = Visibility.Visible; break;

            case GameScreens.ScreenPlayGame: PlayGameGrid.Visibility = Visibility.Visible; break;
            }
        }
示例#13
0
    // Use this for initialization
    void Start()
    {
        ScoreTailLength = new List <int>();
        ScoreTime       = new List <double>();

        CurrentGameTime = 0d;

        CurrentScreen = GameScreens.FirstStart;

        ShouldUpdateScore = false;

        GameCanvas.enabled     = false;
        GameOverCanvas.enabled = false;

        InvokeRepeating("UpdateScore", 1, 1);
    }
示例#14
0
    private void StartNewGame()
    {
        if (CurrentScreen == GameScreens.FirstStart)
        {
            FirstStartCanvas.enabled = false;
        }

        CurrentScreen = GameScreens.Game;

        CurrentGameTime   = 0d;
        ShouldUpdateScore = true;

        GetComponent <FoodSpawner>().ResetFoodSpawner();
        Snake.GetComponent <Snake>().ResetSnake();

        DisplayRegularUI();
        UpdateScore();
    }
示例#15
0
        /// <summary>
        /// Change the status of the game.
        /// </summary>
        /// <param name="newStatus">The new status of the game.</param>
        public void ChangeScreen(GameScreens newScreen)
        {
            // Make all screen invisibles and disabled.
            this.TitleScreen.Enabled = false;
            this.TitleScreen.Visible = false;

            this.ConfigScreen.Enabled = false;
            this.ConfigScreen.Visible = false;

            this.GameScreen.Enabled = false;
            this.GameScreen.Visible = false;

            this.EndScreen.Enabled = false;
            this.EndScreen.Visible = false;

            switch (newScreen)
            {
            case GameScreens.TitleScreen:
                this.TitleScreen.Enabled = true;
                this.TitleScreen.Visible = true;
                this.TitleScreen.Initialize();
                return;

            case GameScreens.ConfigScreen:
                this.ConfigScreen.Enabled = true;
                this.ConfigScreen.Visible = true;
                this.ConfigScreen.Initialize();
                return;

            case GameScreens.GameScreen:
                this.GameScreen.Enabled = true;
                this.GameScreen.Visible = true;
                this.GameScreen.Initialize();
                return;

            case GameScreens.EndScreen:
                this.EndScreen.Enabled = true;
                this.EndScreen.Visible = true;
                this.EndScreen.Initialize();
                return;
            }
        }
示例#16
0
 public void SetScreen(GameScreens screen)
 {
     StartScreen.SetActive(false);
     PlayScreen.SetActive(false);
     GameOverScreen.SetActive(false);
     switch (screen)
     {
         case GameScreens.StartScreen:
             StartScreen.SetActive(true);
             break;
         case GameScreens.PlayScreen:
             PlayScreen.SetActive(true);
             break;
         case GameScreens.GameOverScreen:
             var enemiesCount = _controller.KilledEnemies;
             ResultText.text = "Result: "+enemiesCount;
             GameOverScreen.SetActive(true);
             break;
     }
 }
示例#17
0
        public GraphicEngineWinforms(Form1 form, GameEngine gameEngine)
        {
            this.form         = form;
            this.gameEngine   = gameEngine;
            currentGameScreen = GameScreens.Game;

            float radius = 1;
            float median = radius * (float)Math.Sqrt(3) / 2;

            Hexagon = new PointF[6];

            /*
             * Hexagon[(int)HexPoints.UpLeft] = new PointF(-radius / 2, -median);
             * Hexagon[(int)HexPoints.UpRight] = new PointF(radius / 2, -median);
             * Hexagon[(int)HexPoints.Right] = new PointF(radius, 0);
             * Hexagon[(int)HexPoints.DownRight] = new PointF(radius / 2, median);
             * Hexagon[(int)HexPoints.DownLeft] = new PointF(-radius / 2, median);
             * Hexagon[(int)HexPoints.Left] = new PointF(-radius, 0);
             */

            Hexagon[(int)HexPoints.UpLeft]    = new PointF(-radius / 2, -1);
            Hexagon[(int)HexPoints.UpRight]   = new PointF(radius / 2, -1);
            Hexagon[(int)HexPoints.Right]     = new PointF(radius, 0);
            Hexagon[(int)HexPoints.DownRight] = new PointF(radius / 2, 1);
            Hexagon[(int)HexPoints.DownLeft]  = new PointF(-radius / 2, 1);
            Hexagon[(int)HexPoints.Left]      = new PointF(-radius, 0);

            playingArea   = new Rectangle(form.Location, form.Size);
            playingArea.X = playingArea.X + 10;
            playingArea.Y = playingArea.Y + 10;

            playingArea.Width  -= 30;
            playingArea.Height -= 50;

            FactionColors = new Color[] { Color.BurlyWood, Color.Red, Color.Fuchsia, Color.Yellow };

            stopwatch     = System.Diagnostics.Stopwatch.StartNew();
            lastFrameTime = stopwatch.ElapsedMilliseconds;
        }
示例#18
0
 private void OnGameStateChanged(GameStates gameState)
 {
     if (gameState == GameStates.GameStart)
     {
         GameScreen = GameScreens.OnStart;
     }
     else if (gameState == GameStates.InGame)
     {
         GameScreen = GameScreens.Gameplay;
     }
     // gameState == GameEnds
     else
     {
         if (GameManager.Instance.gameWin)
         {
             GameScreen = GameScreens.InShop;
         }
         else
         {
             GameScreen = GameScreens.GameOver;
         }
     }
 }
示例#19
0
    public void ChangeCurrentScreen(GameScreens target)
    {
        //Store a reference to our current screen
        _curScreen = target;

        //Store a reference to our current screen game object
        switch (target)
        {
        case GameScreens.GameScreen:
            _curScreenObject = gameScreen;
            break;

        case GameScreens.LogoScreen:
            _curScreenObject = logoScreen;
            break;

        case GameScreens.MenuScreen:
            _curScreenObject = menuScreen;
            break;
        }

        //Activate the relevant screen
        ActivateSingleScreen();
    }
示例#20
0
    public void ChangeGameState(GameScreens newScreen)
    {
        var unityObjects = Globals.Instance.UnityObjects;

        prevScreen = currentScreen;

        switch (prevScreen)
        {
        case GameScreens.InGame: unityObjects["PauseWindow"].SetActive(false); break;

        case GameScreens.Pause: unityObjects["ScreenPause"].SetActive(false); break;

        case GameScreens.Options: unityObjects["ScreenOptions"].SetActive(false); break;

        default: break;
        }

        currentScreen = newScreen;
        switch (currentScreen)
        {
        case GameScreens.InGame:
            ResumeGame();
            break;

        case GameScreens.Pause:
            PauseGame();
            break;

        case GameScreens.Options:
            unityObjects["ScreenOptions"].SetActive(true);
            GameView.SetText("TitlePause", "Settings");
            break;

        default: break;
        }
    }
示例#21
0
 public void AddScreen(GameScreens key, BaseScreen screen)
 {
     screen.ScreenManager = this;
     this.screens.Add(key, screen);
 }
示例#22
0
        //Main koden:
        static void Main(string[] args)
        {
            //Massa variabler skapas nedan

            bool endGame = false;

            int shaderCount = 0; //Denna används för att bestämma vilken färg spelet ska vara
            int hatCount    = 0; //Denna används för att hålla koll på vilken hatt spelaren har på sig

            //Alla float-"Time" variabler används för funktioner som kräver någon form av klocka eller tidräkning

            float startTime    = 0;
            float maxStartTime = 6;

            float currentTime = 0;
            float maxTime     = 6;

            float superTime    = 0;
            float superMaxTime = 10;

            //Color variablerna är de olika färgerna som används i spelet

            Color lightestGreen = new Color(155, 188, 15, 255);
            Color lightGreen    = new Color(139, 172, 15, 255);
            Color darkGreen     = new Color(48, 98, 48, 255);
            Color darkestGreen  = new Color(15, 56, 15, 255);

            //Colors nedan används endast som overlays när man använder olika "shaders"

            Color silentNight  = new Color(65, 46, 100, 150);
            Color pinkParty    = new Color(255, 0, 221, 150);
            Color redHills     = new Color(255, 85, 0, 150);
            Color waterBubbles = new Color(0, 255, 191, 150);
            Color greeeeen     = new Color(0, 255, 26, 150);

            //Initialize window. Spelfönstret "skapas".

            Raylib.InitWindow(1000, 800, "Slime Shooter");

            //Target FPS = 60fps
            Raylib.SetTargetFPS(60);

            //Skapar en instans av klassen Player (Alltså spelaren)
            Player myPlayer = new Player(500, 400, KeyboardKey.KEY_W, KeyboardKey.KEY_S, KeyboardKey.KEY_D, KeyboardKey.KEY_A);

            //Här definieras spelarens collider som spelarens rectangle-sprite.
            Rectangle playerCollider = myPlayer.playerRec;

            //Skapar en instans av klassen Walls (Banans boundries/borders)
            Wall gameWalls = new Wall();

            //Skapar en instans av klassen UI (Spelets HUD/GUI/UI eller vad det nu kallas)
            UI gameUI = new UI();

            //Skapar en instans av klassen Spawner (Sakerna som faktiskt "skapar" fiender i spelet)
            Spawner mobSpawners = new Spawner();

            //Skapar en instans av klassen Enemy (Spelets fiender)
            Enemy activeEnemies = new Enemy(gameUI);

            //Här defineiras "screen" = TitleScreen
            GameScreens screen = GameScreens.Title;

            //While nedan körs sålänge spelfönstret inte stängs
            while (!Raylib.WindowShouldClose())
            {
                //Börjar rita (sker varje frame)
                Raylib.BeginDrawing();


                //TITLE SCREEN:
                //if loopen körs alltså eftersom "screen" är satt till TitleScreen

                if (screen == GameScreens.Title)
                {
                    //Denna rektangel används för att animera "ENTER" texten
                    Rectangle flashingRec = new Rectangle(360, 420, 250, 10);

                    //Ifall man klickar på ENTER-Key...
                    if (Raylib.IsKeyPressed(KeyboardKey.KEY_ENTER))
                    {
                        //Sätter "screen" till Game, vilket innebär att själva spelet startar
                        screen = GameScreens.Game;
                    }

                    //Ifall man klickar på C-Key...
                    if (Raylib.IsKeyPressed(KeyboardKey.KEY_C))
                    {
                        //Sätter "screen" till CustomPlayer, vilket gör att customize scenen visas
                        screen = GameScreens.CustomPlayer;
                    }

                    //Ifall man klickar på H-Key...
                    if (Raylib.IsKeyPressed(KeyboardKey.KEY_H))
                    {
                        //Sätter "screen" till Help, vilket gör att Hjälp skärmen visas
                        screen = GameScreens.Help;
                    }

                    //Ifall man klickar på S-Key...
                    if (Raylib.IsKeyPressed(KeyboardKey.KEY_S))
                    {
                        //Sätter "screen" till Settings, vilket gör att inställningar visas
                        screen = GameScreens.Settings;
                    }

                    //Sätter bakgrundsfärgen till ljusgrön
                    Raylib.ClearBackground(lightGreen);
                    //Ritar upp texten "Press ENTER to start"
                    Raylib.DrawText("Press ENTER to start", 115, 350, 70, darkestGreen);

                    //Raderna nedan ritar upp text för olika knappar som används för olika funktioner
                    Raylib.DrawText("Press 'H' for Help", 315, 600, 40, darkestGreen);
                    Raylib.DrawText("Press 'S' for Settings", 280, 670, 40, darkestGreen);
                    Raylib.DrawText("Press 'C' for Customization", 220, 735, 40, darkestGreen);

                    //Denna rektangel tänkte användas för att skapa en logga för spelet, men fungerade inte som tänkt.
                    //Raylib.DrawRectangle(275, 50, 450, 250, darkestGreen);

                    //Koden nedan används för att animera en rektangel under ordet ENTER
                    startTime += Raylib.GetFrameTime();

                    //De olika if-satserna används för att bestämma när rektangeln ska visas och när den ska vara osynlig
                    if (startTime > maxStartTime)
                    {
                        startTime = 0;
                    }

                    if (startTime < 3 && startTime > 2)
                    {
                        Raylib.DrawRectangleRec(flashingRec, darkestGreen);
                    }

                    if (startTime < 6 && startTime > 5)
                    {
                        Raylib.DrawRectangleRec(flashingRec, darkestGreen);
                    }
                }



                //SETTINGS SCREEN:

                //Koden nedan visas ifall "screen" = Settings

                if (screen == GameScreens.Settings)
                {
                    //Ifall man klickar på B-Key...
                    if (Raylib.IsKeyPressed(KeyboardKey.KEY_B))
                    {
                        //Sätter "screen" tillbaka till Title-Screen (B används som "Back")
                        screen = GameScreens.Title;
                    }

                    //Ifall man klickar på ENTER-Key...
                    if (Raylib.IsKeyPressed(KeyboardKey.KEY_ENTER))
                    {
                        //Lägger till 1, till variabeln "shaderCount" som används för att 'bläddra' mellan olika shaders
                        shaderCount++;

                        //If-satsen nedan gör så att "shaderCount" blir 0 ifall den blir större än 5 (som är max antal shaders som finns)
                        if (shaderCount > 5)
                        {
                            shaderCount = 0;
                        }
                    }

                    //Sätter bakgrundsfärgen till ljusgrön
                    Raylib.ClearBackground(lightestGreen);

                    //Skriver ut texten "SETTINGS"
                    Raylib.DrawText("SETTINGS", 295, 150, 70, darkGreen);

                    //Ritar ut ett sträck under texten
                    Raylib.DrawRectangle(295, 230, 390, 15, darkGreen);

                    //Skriver ut texten "Toggle shaders with ENTER key"
                    Raylib.DrawText("Toggle shaders with ENTER key", 250, 300, 30, darkGreen);

                    //Skriver ut symboler som ska indikera att man kan bläddra mellan olika alternativ
                    Raylib.DrawText("<               >", 180, 400, 100, darkGreen);

                    //Alla 6 if-satser nedan används enbart för att skriva ut namnet på den aktiva 'shadern'
                    if (shaderCount == 0)
                    {
                        Raylib.DrawText("NORMAL", 330, 400, 90, darkGreen);
                    }

                    if (shaderCount == 1)
                    {
                        Raylib.DrawText("SILENT NIGHT", 250, 410, 70, darkGreen);
                    }

                    if (shaderCount == 2)
                    {
                        Raylib.DrawText("PINK PARTY", 280, 410, 70, darkGreen);
                    }

                    if (shaderCount == 3)
                    {
                        Raylib.DrawText("RED HILLS", 300, 410, 80, darkGreen);
                    }

                    if (shaderCount == 4)
                    {
                        Raylib.DrawText("WATER BUBBLES", 250, 420, 60, darkGreen);
                    }

                    if (shaderCount == 5)
                    {
                        Raylib.DrawText("GREEEEEN", 260, 400, 90, darkGreen);
                    }

                    //Skriver ut texten "Press 'B' to go Back"
                    Raylib.DrawText("Press 'B' to go Back", 200, 700, 60, darkestGreen);
                }



                //CUSTOM PLAYER SCREEN:

                //Koden nedan visas ifall "screen" = CustomPlayer

                if (screen == GameScreens.CustomPlayer)
                {
                    //Ifall man trycker på B-Key...
                    if (Raylib.IsKeyPressed(KeyboardKey.KEY_B))
                    {
                        //Sätter "screen" = TitleScreen
                        screen = GameScreens.Title;
                    }

                    //Ändrar/Sätter bakgrundsfärgen till ljusgrön
                    Raylib.ClearBackground(lightestGreen);

                    //Skriver ut texten "HATS" och ritar ett streck under texten
                    Raylib.DrawText("HATS", 380, 75, 80, darkGreen);
                    Raylib.DrawRectangle(345, 150, 300, 15, darkGreen);

                    //Skriver ut texten "Press ENTER to toggle between Hats"
                    Raylib.DrawText("Press ENTER to toggle between Hats", 210, 190, 30, darkestGreen);

                    //Raderna nedan används för att rita ut rektanglar som används som gränssnitt.
                    Raylib.DrawRectangle(630, 300, 15, 350, darkestGreen);
                    Raylib.DrawRectangle(900, 300, 15, 350, darkestGreen);
                    Raylib.DrawRectangle(630, 300, 270, 15, darkestGreen);
                    Raylib.DrawRectangle(630, 635, 270, 15, darkestGreen);

                    Raylib.DrawRectangle(750, 450, 50, 100, darkGreen);

                    //Skriver ut pilar som används för att indikera att man kan bläddra mellan olika alternativ
                    Raylib.DrawText("<          >", 80, 430, 100, darkestGreen);

                    //Ifall man trycker på ENTER-Key...
                    if (Raylib.IsKeyPressed(KeyboardKey.KEY_ENTER))
                    {
                        //Adderar 1 till variabeln "hatCount" som används för att hålla koll på vilken hatt som är aktiv
                        hatCount = hatCount + 1;

                        //if-satsen nedan används för att sätta tillbaka "hatCount" till 0, ifall den överstiger 'maxvärdet'
                        if (hatCount > 2)
                        {
                            hatCount = 0;
                        }
                    }

                    //if-satserna nedan används för att skriva och rita olika texter och saker beroende på vilken hatt som är aktiv
                    if (hatCount == 0)
                    {
                        Raylib.DrawText("No Hat", 180, 440, 80, darkestGreen);
                    }

                    if (hatCount == 1)
                    {
                        Raylib.DrawText("Top Hat", 150, 440, 80, darkestGreen);

                        Raylib.DrawRectangle(740, 435, 70, 15, darkGreen);
                        Raylib.DrawRectangle(750, 400, 50, 50, darkGreen);
                    }

                    if (hatCount == 2)
                    {
                        Raylib.DrawText("CAP", 220, 440, 90, darkestGreen);

                        Raylib.DrawRectangle(760, 430, 70, 20, darkGreen);
                        Raylib.DrawRectangle(750, 400, 60, 50, darkGreen);
                    }

                    //Skriver ut texten "Press 'B' to go Back"
                    Raylib.DrawText("Press 'B' to go Back", 200, 700, 60, darkestGreen);
                }



                //HELP SCREEN:

                //Koden nedan körs ifall "screen" = Help

                if (screen == GameScreens.Help)
                {
                    //Ifall man klickar på B-Key...
                    if (Raylib.IsKeyPressed(KeyboardKey.KEY_B))
                    {
                        //"screen" = TitleScreen (igen)
                        screen = GameScreens.Title;
                    }

                    //Sätter bakgrunden till ljusgrön färg
                    Raylib.ClearBackground(lightestGreen);

                    //Skriver ut texten "CONTROLS"
                    Raylib.DrawText("CONTROLS", 295, 150, 70, darkGreen);
                    //Ritar ut ett sträck under texten
                    Raylib.DrawRectangle(295, 230, 390, 15, darkGreen);

                    //Raderna nedan skriver ut spelets Controls
                    Raylib.DrawText("Move:  W/A/S/D", 300, 300, 50, darkGreen);
                    Raylib.DrawText("Shoot:  SPACE", 300, 400, 50, darkGreen);
                    Raylib.DrawText("Ability:  L-SHIFT", 300, 500, 50, darkGreen);

                    //Skriver ut texten "Press 'B' to go Back"
                    Raylib.DrawText("Press 'B' to go Back", 200, 700, 60, darkestGreen);
                }



                //GAME SCREEN:

                //Koden nedan körs ifall "screen" = Game (alltså är följande kod den biten man 'spelar')

                if (screen == GameScreens.Game)
                {
                    //Startar en timer (används för att skapa enemies)
                    currentTime += Raylib.GetFrameTime();

                    //if-satsen körs ifall timern överstiger ett förbestämt maxvärde
                    if (currentTime > maxTime)
                    {
                        //timern sätts då till 0 och startar om
                        currentTime = 0;

                        //En fiende spawnar/skapas
                        Enemy newEnemy = new Enemy(gameUI);

                        //det förbestämda maxvärdet minskar (så att fiender spawnar/skapas snabbare och snabbare)
                        maxTime -= 0.25f;

                        //följande if-sats används för att det förbestämda maxvärdet inte ska bli mindre än en halv sekund
                        if (maxTime < 0.5)
                        {
                            maxTime = 0.5f;
                        }
                    }

                    //denna int används för att berätta för spelet vart fienden ska spawna/skapas
                    int spawner = mobSpawners.SpawnerId();

                    //Metoden "SpawnEnemy()" körs. "spawner" matas in i metoden för att berätta vart fienden ska spawna/skapas
                    activeEnemies.SpawnEnemy(spawner);

                    //Följande tre update-funktioner används för att, varje frame, uppdatera positionen för spelaren, fiender och bullets
                    myPlayer.Update();
                    Bullet.UpdateAll();
                    Enemy.UpdateAll(myPlayer.playerRec.x, myPlayer.playerRec.y);

                    //"keyPressed" lagrar den senaste knappen spelaren tryckt på med hjälp av metoden "lastKeyPressed()"
                    KeyboardKey keyPressed = myPlayer.lastKeyPressed;

                    //Sätter bakgrundsfärgen till ljusgrön
                    Raylib.ClearBackground(lightestGreen);

                    //Alla Draw()-metoder ritar ut olika saker. Exempelvis spawners, UI, spelaren, fiender osv.
                    mobSpawners.Draw();
                    gameUI.DrawUI();
                    myPlayer.Draw();
                    myPlayer.DrawHP();
                    Bullet.DrawAll();
                    Enemy.DrawAll();
                    gameWalls.Draw();

                    //De två if-satserna nedan ritar ut hattar på spelaren
                    if (hatCount == 1)
                    {
                        myPlayer.DrawTopHat();
                    }

                    if (hatCount == 2)
                    {
                        myPlayer.DrawCAP();
                    }

                    //Denna if-sats användes i testsyfte för att spawna fiender:

                    /*if (Raylib.IsKeyPressed(KeyboardKey.KEY_G))
                     * //{
                     * //    Enemy newEnemy = new Enemy(gameUI);
                     * }*/

                    //Ifall man trycker på SPACE-Key...
                    if (Raylib.IsKeyPressed(KeyboardKey.KEY_SPACE))
                    {
                        //Skapar en instans av klassen Bullet (alltså skjuter spelaren ett skott)
                        //De värden som metoden tar in används för att bestämma vart kulan ska skapas och i vilken riktning den ska skjutas

                        Bullet newBullet = new Bullet(myPlayer.playerRec.x, myPlayer.playerRec.y, keyPressed);
                    }

                    //"superTime" används för att räkna när Super-Ability kan användas
                    superTime += Raylib.GetFrameTime();

                    //Ifall "superTime" är större än det förbestämda "superMaxTime" (max tiden) så körs koden:
                    if (superTime > superMaxTime)
                    {
                        //Texten "READY!" skrivs ut för att tala om för spelaren att ablity är redo
                        Raylib.DrawText("READY!", 680, 20, 50, darkGreen);

                        //Ifall man trycker på SHIFT-Key...
                        if (Raylib.IsKeyPressed(KeyboardKey.KEY_LEFT_SHIFT))
                        {
                            //Koden nedan KAOS och absolut inte effektiv, men den gör jobbet.
                            //Koden nedan skapar 8 bullets som skjuts ut i 8 olika riktningar.

                            keyPressed = KeyboardKey.KEY_W;
                            Bullet newBullet = new Bullet(myPlayer.playerRec.x, myPlayer.playerRec.y, keyPressed);
                            keyPressed = KeyboardKey.KEY_D;
                            Bullet newBullet1 = new Bullet(myPlayer.playerRec.x, myPlayer.playerRec.y, keyPressed);
                            keyPressed = KeyboardKey.KEY_S;
                            Bullet newBullet2 = new Bullet(myPlayer.playerRec.x, myPlayer.playerRec.y, keyPressed);
                            keyPressed = KeyboardKey.KEY_A;
                            Bullet newBullet3 = new Bullet(myPlayer.playerRec.x, myPlayer.playerRec.y, keyPressed);
                            keyPressed = KeyboardKey.KEY_O;
                            Bullet newBullet4 = new Bullet(myPlayer.playerRec.x, myPlayer.playerRec.y, keyPressed);
                            keyPressed = KeyboardKey.KEY_P;
                            Bullet newBullet5 = new Bullet(myPlayer.playerRec.x, myPlayer.playerRec.y, keyPressed);
                            keyPressed = KeyboardKey.KEY_K;
                            Bullet newBullet6 = new Bullet(myPlayer.playerRec.x, myPlayer.playerRec.y, keyPressed);
                            keyPressed = KeyboardKey.KEY_L;
                            Bullet newBullet7 = new Bullet(myPlayer.playerRec.x, myPlayer.playerRec.y, keyPressed);

                            //"superTime" sätts tillbaka till 0 och startas om (timern)
                            superTime = 0;
                        }
                    }

                    //om "superTime" är mindre än det förbestämda "superMaxTime" så körs koden:
                    if (superTime < superMaxTime)
                    {
                        //Skriver ut texten "LOADING..."
                        Raylib.DrawText("LOADING...", 680, 20, 50, darkGreen);
                    }

                    //"endGame är en bool som kollar ifall spelet ska avslutas
                    //metoden CheckPlayerHP() sätter endGame till true ifall spelarens HP är 0
                    endGame = myPlayer.CheckPlayerHp();

                    //if endGame = true körs koden:
                    if (endGame == true)
                    {
                        //Sätter "screen" = End (innebär att spelet avslutas och att man kommer till GAME OVER SCREEN)
                        screen = GameScreens.End;
                    }
                }


                //END GAME SCREEN:

                //Koden nedan körs ifall "screen" = END

                if (screen == GameScreens.End)
                {
                    //Sätter bakgrundsfärgen till mörkgrön
                    Raylib.ClearBackground(darkestGreen);
                    //Skriver ut texten "You Died!"
                    Raylib.DrawText("You Died!", 355, 350, 70, lightGreen);

                    //Skriver ut texten "Score: " och sedan det score man fick då man spelade
                    Raylib.DrawText("Score: " + gameUI.score, 405, 450, 50, lightestGreen);

                    //Skriver ut texten "Press 'R' to Restart"
                    Raylib.DrawText("Press 'R' to Restart", 250, 650, 50, lightestGreen);

                    //Ifall man trycker på R-Key...
                    if (Raylib.IsKeyPressed(KeyboardKey.KEY_R))
                    {
                        //Sätter "screen" till TitleScreen ("R" för Restart)
                        screen = GameScreens.Title;

                        //ScoreFix() - metoden körs för att uppdatera Highscore till Score ifall Score > Highscore.
                        gameUI.ScoreFix();

                        //ResetPlayerHp() - metoden körs för att sätta tillbaka Hp = 3 (ifall man spelar igen)
                        myPlayer.ResetPlayerHp();

                        //Sätter tillbaka maxTime = 6 så att fiender inte spawnar snabbt från början (ifall man spelar igen)
                        maxTime = 6;
                    }
                }


                //IF OVERLAY IS ON
                //Koden nedan körs endast ifall man aktiverat en 'shader'

                //Varje if-sats ritar ut en rektangel som täcker hela skrämen
                //Rektangelns färg är beroende på den aktiva shadern och rektangeln visas i en lägre opacity
                if (shaderCount == 1)
                {
                    Raylib.DrawRectangle(0, 0, 1500, 1500, silentNight);
                }

                else if (shaderCount == 2)
                {
                    Raylib.DrawRectangle(0, 0, 1500, 1500, pinkParty);
                }

                else if (shaderCount == 3)
                {
                    Raylib.DrawRectangle(0, 0, 1500, 1500, redHills);
                }

                else if (shaderCount == 4)
                {
                    Raylib.DrawRectangle(0, 0, 1500, 1500, waterBubbles);
                }

                else if (shaderCount == 5)
                {
                    Raylib.DrawRectangle(0, 0, 1500, 1500, greeeeen);
                }

                //EndDrawing() innebär att allt är färdigritat för den framen, sedan loopas allt och körs igen
                Raylib.EndDrawing();
            }
        }
示例#23
0
        static void Main(string[] args)
        {
            //Saker att fixa:
            //lägger till ett block efter ormen om man äter en matbit
            //fixa svansens position
            //Game over ifall man krockar med sig själv

            Raylib.InitWindow(625, 625, "Snake Window");                                                           //Skapar snake window som är 625 * 625
            Raylib.SetTargetFPS(60);                                                                               //gör så att applikationen försöker runna i 60 FPS

            Snake s = new Snake(3, 5, KeyboardKey.KEY_W, KeyboardKey.KEY_S, KeyboardKey.KEY_A, KeyboardKey.KEY_D); //Skapar en snake med definierade värden
            Food  f = new Food();                                                                                  //skapar en matbit. Detta kan ändras snart

            GameScreens screen = GameScreens.start;                                                                //sätter första gamestate till start screenen

            while (!Raylib.WindowShouldClose())
            {
                //Logik

                switch (screen)
                {
                case GameScreens.start:
                    if (Raylib.IsKeyPressed(KeyboardKey.KEY_ENTER))
                    {
                        screen = GameScreens.game;     //Ifall man klickar på enter ändras applikationens gamestate till game
                    }
                    break;

                case GameScreens.game:
                    s.Update();                               //Beräknar vilken tid ormen ska byta position och vart den ska förflytta sig
                    if (s.xPos == f.xPos && s.yPos == f.yPos) //checkar ifall snakeHead och foodPiece delar position
                    {
                        f.Update();                           //Ger foodPiece en ny position
                        s.score++;                            //Lägger till ett poäng. Ny klass? Till svans?
                    }
                    if (s.isAlive == false)
                    {
                        screen = GameScreens.gameOver;     //Om man dör ändras gamestate till game over
                    }
                    break;

                case GameScreens.gameOver:
                    if (Raylib.IsKeyPressed(KeyboardKey.KEY_ENTER))
                    {
                        s.isAlive = true;             //Ifall man klickar på enter kommer ormen räknas som levande igen
                        s.score   = 0;                //Nollställer score när man har dött
                        screen    = GameScreens.game; //Applikationen ändrar sitt gamestate till game
                    }
                    break;
                }

                //Grafik

                Raylib.BeginDrawing();

                switch (screen)
                {
                case GameScreens.start:
                    Raylib.ClearBackground(Color.BLACK);
                    Raylib.DrawText("Press Enter to start the game", 65, 50, 30, Color.WHITE); //Skriver ut hur man startar spelet
                    break;

                case GameScreens.game:
                    Raylib.ClearBackground(Color.BLACK);                    //Boarder
                    Raylib.DrawRectangle(25, 25, 575, 575, Color.DARKBLUE); //Spelplan
                    // Raylib.DrawText("x = " + f.xPos + ", y = " + f.yPos, 10, 40, 30, Color.WHITE);
                    // Raylib.DrawText("x = " + s.xPos + ", y = " + s.yPos, 10, 70, 30, Color.WHITE); //för debugging
                    Raylib.DrawText(Convert.ToString(s.score), 6, 6, 30, Color.WHITE); //Skriver ut spelarens score
                    f.Draw();                                                          //Ritar ut maten
                    s.Draw();                                                          //Ritar ut ormen
                    break;

                case GameScreens.gameOver:
                    Raylib.ClearBackground(Color.BLACK);
                    Raylib.DrawText("You lost!", 250, 110, 30, Color.WHITE);
                    Raylib.DrawText("Your score is " + s.score, 200, 160, 30, Color.WHITE);
                    Raylib.DrawText("Press ENTER to try again", 100, 210, 30, Color.WHITE); //Skriver att man har förlorat, hur mycket poäng man fick och hur man kan spela igen
                    break;
                }

                Raylib.EndDrawing();
            }
        }
示例#24
0
 public void PushScreen(GameScreens screen, int worldLoadIndex = -1)
 {
     if (screen == GameScreens.MAIN)
         titleScreen.AdvanceSplash();
     if(screen == GameScreens.OPTIONS)
         options = new OptionsScreen();
     if (screen == GameScreens.GAME)
     {
         mainGameScreen = new MainGameScreen(worldLoadIndex);
         Thread.Sleep(200);
     }
     CurrentScreen = screen;
 }
示例#25
0
 public void DeactivateScreen(GameScreens key)
 {
     this.screens[key].Deactivate();
 }
示例#26
0
 internal GameBackgrounds(ContentManager content)
 {
     Screens = new GameScreens(content);
     Levels  = new GameLevels(content);
 }
示例#27
0
 void Awake()
 {
     DontDestroyOnLoad(gameObject);
     State         = GameState.None;
     currentScreen = GameScreens.MainMenu;
 }
示例#28
0
 public void DeActivateScreen(GameScreens screenName)
 {
     UIScreensReferences[screenName].gameObject.SetActive(false);
 }
示例#29
0
        static void Main(string[] args)
        {
            Raylib.InitWindow(900, 600, "November Falling");
            //Here are colors I want to use which aren't pre-existing in raylib
            Color ice    = new Color(102, 204, 255, 255);
            Color ground = new Color(179, 230, 76, 255);

            Raylib.SetTargetFPS(60);

            // spawning all characters I will use
            Player start    = new Player();
            Enemy  beanie   = new Enemy();
            Coin   para     = new Coin();
            Ground platform = new Ground();

            // starting console
            GameScreens screen = GameScreens.Start;

            while (!Raylib.WindowShouldClose())
            {
                //Intro screen
                Raylib.BeginDrawing();

                if (screen == GameScreens.Start)
                {
                    //Drawing
                    Texture2D bg = Raylib.LoadTexture("Bakgrundintro.png");
                    Raylib.DrawTexture(bg, 0, 0, Color.WHITE);

                    // Text on start screen
                    Raylib.DrawText("November Falling", 235, 50, 50, Color.BLACK);
                    Raylib.DrawText("What is your name", 300, 250, 35, Color.BLACK);

                    // Game starts
                    if (Raylib.IsKeyPressed(KeyboardKey.KEY_ENTER))
                    {
                        screen = GameScreens.Game;
                    }
                }
                //Actual Game
                else if (screen == GameScreens.Game)
                {
                    //DRAWING
                    Raylib.ClearBackground(ice);
                    Raylib.DrawRectangle(0, 550, 900, 50, ground);
                    Raylib.DrawTexture(start.girl, (int)start.first.x, (int)start.first.y, Color.WHITE);
                    Raylib.DrawTexture(beanie.bean, (int)beanie.beanMan.x, (int)beanie.beanMan.y, Color.WHITE);
                    Raylib.DrawTexture(para.money, (int)para.gold.x, (int)para.gold.y, Color.WHITE);
                    Raylib.DrawText("money= " + para.value, 50, 50, 50, Color.BLACK);



                    //LOGIC
                    if (Raylib.CheckCollisionRecs(start.first, beanie.beanMan))
                    {
                        start.hp -= 1;
                    }
                    if (start.hp < 0)
                    {
                        screen = GameScreens.GameOver;
                    }

                    if (Raylib.CheckCollisionRecs(start.first, para.gold))
                    {
                        para.value += 1;
                    }


                    //Movement

                    if (Raylib.IsKeyDown(KeyboardKey.KEY_RIGHT))
                    {
                        if (!(start.first.x > 800))
                        {
                            start.first.x++;
                        }
                    }
                    if (Raylib.IsKeyDown(KeyboardKey.KEY_LEFT))
                    {
                        if (!(start.first.x < 0))
                        {
                            start.first.x--;
                        }
                    }
                    if (Raylib.CheckCollisionRecs(start.first, platform.second))
                    {
                        if (Raylib.IsKeyDown(KeyboardKey.KEY_UP))
                        {
                            start.first.y -= 3;
                        }

                        else
                        {
                            start.first.y += 1;
                        }
                    }
                }
                else if (screen == GameScreens.GameOver)
                {
                    Raylib.BeginDrawing();
                    Texture2D bg = Raylib.LoadTexture("Bakgrundintro.png");
                    Raylib.DrawTexture(bg, 0, 0, Color.WHITE);
                    Raylib.DrawText("Game Over", 235, 100, 90, Color.BLACK);
                }

                Raylib.EndDrawing();
            }
        }
示例#30
0
 public void RemoveScreen(GameScreens key)
 {
     this.screens.Remove(key);
 }
 public ScreenChangerController(GlobalContext context, ScreenChangerModel model, GameScreens screens)
 {
     _context = context;
     _model   = model;
     _screens = screens;
 }
示例#32
0
 public void ReloadScreen(GameScreens gamePlay)
 {
     this.screens[gamePlay].Load();
 }