Skip to content

Commit bef4336

Browse files
committed
added english tutorial
1 parent 949d1cd commit bef4336

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+166
-20
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ add_executable(
117117
Source/UI/InteractionPopup.cpp
118118
Source/UI/InteractionPopup.h
119119
Source/UI/ActiveSelectionHighlight.cpp
120-
Source/UI/ActiveSelectionHighlight.h)
120+
Source/UI/ActiveSelectionHighlight.h Source/Scenes/TutorialCore.cpp Source/Scenes/TutorialCore.h)
121121

122122
## library includes
123123
target_include_directories(

Source/Characters/Goon.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ void Goon::findNewPOI()
148148
our_room = &(*global_map->getRooms())[random_room];
149149
all_pois.clear();
150150
getAllPOIInRoom(&all_pois, our_room, true);
151-
151+
152152
auto random_index =
153153
static_cast<unsigned long long>((rand() % (static_cast<int>(all_pois.size()))));
154154
Point tile_point =

Source/Constants.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,8 @@ enum scenes
109109
GAME_CORE,
110110
QUIT_GAME,
111111
GAME_OVER,
112-
TUTORIAL
112+
TUTORIAL_MENU,
113+
TUTORIAL_CORE
113114
};
114115

115116
// Render index

Source/Managers/SceneManager.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "../Scenes/GameOver.h"
44
#include "../Scenes/MainMenu.h"
55
#include "../Scenes/Splashscreen.h"
6+
#include "../Scenes/TutorialCore.h"
67
#include "../Scenes/TutorialMenu.h"
78

89
/**
@@ -75,9 +76,12 @@ int SceneManager::updateCurrentScene(double delta_time)
7576
case scenes::GAME_OVER:
7677
swapScene(new GameOver);
7778
break;
78-
case scenes::TUTORIAL:
79+
case scenes::TUTORIAL_MENU:
7980
swapScene(new TutorialMenu);
8081
break;
82+
case scenes::TUTORIAL_CORE:
83+
swapScene(new TutorialCore);
84+
break;
8185
default:
8286
return -1; // Unhandled exception
8387
}

Source/Managers/UIManager.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ void UIManager::initPointOfInterestPopup(CharacterManager* character_manager)
100100
poi_interaction_popup->setSoundPlayer(sound_player);
101101
poi_interaction_popup->setActive(false, false);
102102

103-
active_highlight = new ActiveSelectionHighlight(renderer);
103+
active_highlight = new ActiveSelectionHighlight(renderer, camera);
104104
}
105105

106106
/* Creates all the UI */

Source/Map/GameMap.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ void GameMap::importJSON()
1919
}
2020

2121
/* Load our map */
22-
void GameMap::load(ASGE::Renderer* renderer_instance, Camera& camera)
22+
void GameMap::load(ASGE::Renderer* renderer_instance, Camera* camera)
2323
{
2424
// Load map and its initial data
2525
map_data.load(map_config);
@@ -71,7 +71,7 @@ void GameMap::load(ASGE::Renderer* renderer_instance, Camera& camera)
7171
void GameMap::render(double delta_time)
7272
{
7373
// Render map
74-
game_camera.renderSprite(map_data.sprite.get(), delta_time, render_index::MAP_LAYER);
74+
game_camera->renderSprite(map_data.sprite.get(), delta_time, render_index::MAP_LAYER);
7575

7676
for (Room& room_to_render : map_data.rooms)
7777
{
@@ -83,13 +83,13 @@ void GameMap::render(double delta_time)
8383
if (tile_to_render.hasAnyPointOfInterest() && tile_to_render.getTileSprite()->isVisible())
8484
{
8585
// Render POI
86-
game_camera.renderSprite(
86+
game_camera->renderSprite(
8787
tile_to_render.getTileSprite().get(), delta_time, render_index::TILE_LAYER);
8888
}
8989
if (tile_to_render.hasAnyPointOfInterest() && tile_to_render.getRepairSprite()->isVisible())
9090
{
9191
// Render POI repair status
92-
game_camera.renderSprite(
92+
game_camera->renderSprite(
9393
tile_to_render.getRepairSprite().get(), delta_time, render_index::TILE_LAYER, false);
9494
}
9595
}

Source/Map/GameMap.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class GameMap
1515
GameMap();
1616
~GameMap() = default;
1717

18-
void load(ASGE::Renderer* renderer_instance, Camera& camera);
18+
void load(ASGE::Renderer* renderer_instance, Camera* camera);
1919
void render(double delta_time);
2020

2121
void setUIManager(UIManager* manager) { ui_manager = manager; };
@@ -46,7 +46,7 @@ class GameMap
4646

4747
FileHandler file_handler;
4848
DebugText debug_text;
49-
Camera game_camera;
49+
Camera* game_camera = nullptr;
5050

5151
ASGE::Renderer* renderer = nullptr;
5252
UIManager* ui_manager = nullptr;

Source/Scenes/GameCore.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ bool GameCore::load(ASGE::Renderer* renderer, ASGE::Input* input, SoLoud::Soloud
2525
file_handler.loadSound(exit_sound, "Interactive_Terminal_End", 0.5f);
2626

2727
// load map
28-
game_map.load(renderer, camera);
28+
game_map.load(renderer, &camera);
2929
camera.setMapDims(game_map.getMapSize());
3030

3131
// Pass references out and spawn characters

Source/Scenes/MainMenu.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ void MainMenu::keyHandler(const ASGE::SharedEventData data)
5656
}
5757
else if (main_menu.selectedItemWas("tutorial"))
5858
{
59-
next_scene = scenes::TUTORIAL;
59+
next_scene = scenes::TUTORIAL_MENU;
6060
debug_text.print("OPENING TUTORIAL");
6161
}
6262
else if (main_menu.selectedItemWas("exit_game"))

Source/Scenes/TutorialCore.cpp

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
#include "TutorialCore.h"
2+
#include "../Constants.h"
3+
#include "../Sprites/ScaledSpriteArray.h"
4+
#include <Engine/Input.h>
5+
#include <Engine/InputEvents.h>
6+
#include <Engine/Renderer.h>
7+
8+
/**
9+
* @brief Loads all variables and sprites for this scene
10+
* @details Initialises all variables and creates all the new
11+
sprites for the scene
12+
*/
13+
bool TutorialCore::load(ASGE::Renderer* renderer, ASGE::Input* input, SoLoud::Soloud& player)
14+
{
15+
renderer->setClearColour(ASGE::COLOURS::BLACK);
16+
17+
// Share the renderer
18+
rend = renderer;
19+
20+
// Load tutorial slides
21+
tutorial_slides = new ScaledSpriteArray(tutorial_slide_count);
22+
for (int i = 0; i < tutorial_slide_count; i++)
23+
{
24+
ASGE::Sprite* slide = renderer->createRawSprite();
25+
slide->loadTexture("data/UI/TUTORIAL/" + localiser.getLanguage() + "/" + std::to_string(i) +
26+
".jpg");
27+
tutorial_slides->addSprite(*slide);
28+
}
29+
tutorial_slides->scale(0.6666f);
30+
tutorial_slides->xPos(1);
31+
tutorial_slides->yPos(-17);
32+
tutorial_slides->setCurrentSprite(tutorial_index);
33+
34+
return true;
35+
}
36+
37+
/**
38+
* @brief Changes game state based on inputs
39+
* @details Is called for every input event and will change
40+
* @details the game state / variables etc depending
41+
* @param data is the event
42+
*/
43+
void TutorialCore::keyHandler(const ASGE::SharedEventData data)
44+
{
45+
user_input.registerEvent(static_cast<const ASGE::KeyEvent*>(data.get()));
46+
if (user_input.keyReleased("Activate"))
47+
{
48+
// Increment tutorial slides
49+
tutorial_index++;
50+
if (tutorial_index <= tutorial_slide_count)
51+
{
52+
tutorial_slides->setCurrentSprite(tutorial_index);
53+
}
54+
}
55+
}
56+
57+
/**
58+
* @brief Changes game state based on mouse inputs
59+
* @details Is called for every input event and will change
60+
* the game state / variables etc depending
61+
* @param data is the event, mouse_position the position of the cursor
62+
*/
63+
void TutorialCore::mouseHandler(const ASGE::SharedEventData data, Point mouse_position) {}
64+
65+
/**
66+
* @brief Updates all variables for this scene
67+
* @details Runs every frame and handles all the logic and updates
68+
* of the active scene
69+
* @param delta_time is time since last update
70+
* @return number of the scene to switch to, -1 no change, -2 exit game
71+
*/
72+
scenes TutorialCore::update(double delta_time)
73+
{
74+
// Return to main menu when tutorial is over
75+
if (tutorial_index >= tutorial_slide_count)
76+
{
77+
next_scene = scenes::TUTORIAL_MENU;
78+
}
79+
return next_scene;
80+
}
81+
82+
/**
83+
* @brief Renders all sprites for this scene
84+
* @details Runs every frame and draws all the sprites in
85+
* order
86+
*/
87+
void TutorialCore::render(double delta_time)
88+
{
89+
// Render current tutorial slide
90+
rend->renderSprite(tutorial_slides->returnCurrentSprite());
91+
}

0 commit comments

Comments
 (0)