Commit 8ba1b816 authored by Lars Mitsem Selbekk's avatar Lars Mitsem Selbekk
Browse files

Merge branch 'i65/tutorial-content' into 'master'

Add tutorial content

See merge request !61
parents 33228904 83aa2d92
Pipeline #175842 canceled with stages
in 15 seconds
......@@ -10,36 +10,109 @@ import se.battlegoo.battlegoose.views.screens.TutorialView
class TutorialState : GameState() {
private val steps: List<TutorialStep> = listOf(
TutorialStep(
TutorialSprite.INTERNET_CONNECTION,
"Internet Connection",
"Note that BattleGoose is a multiplayer-only game, and requires an " +
"active internet connection at all times."
),
TutorialStep(
TutorialSprite.MAIN_MENU,
"Main Menu",
"From the main menu you can: " +
"\n\na) Create a lobby" +
"\nCreate a private game lobby to which you can invite a friend to play with you" +
"\n\nb) Join a lobby" +
"\nIf a friend sends you a lobby-id to a private lobby, you may enter it here to " +
"join them",
"\n\nc) Quick join" +
"\nAre all you friends busy? Want a new challenge? Then join an internet " +
"stranger to play with online" +
"\n\nd) Access the leaderboard" +
"\nWant to know how you're doing? Go to the leaderboard to see the " +
"top 10 players globally" +
"\n\n",
"1) Create a private lobby\n" +
"Create a private lobby with which you can invite a friend to play with you.\n" +
"\n" +
"2) Join a lobby\n" +
"If a friend sends you a code for a private lobby, you may enter it here to " +
"join them.\n" +
"\n" +
"3) Quick join\n" +
"Are all your friends busy? Want a new challenge? Then find an internet stranger " +
"to play with online.",
"4) Access the leaderboard\n" +
"Want to know how you're doing? Compare yourself to the top players.\n" +
"\n" +
"5) How to play\n" +
"To open the tutorial, press the \"How to play\"-button.\n" +
"\n" +
"6) Change username\n" +
"To change your username shown in the leaderboard, press the text field in the " +
"upper right corner.\n"
),
TutorialStep(
TutorialSprite.HERO_SELECT,
"Hero Selection",
"Before you can create or enter a lobby you have to select a hero to " +
"play with. Simply press on one of the heroes to select it. Which hero you " +
"select affects which units you will play with, and which spell you have " +
"available in battle. To read more about each hero, press the \"Info\"-button."
),
TutorialStep(
TutorialSprite.CREATE_LOBBY,
"Create Lobby",
"When the text (a) says \"Waiting for opponent\", your lobby is available. " +
"You may now send the lobby id (b) to a friend, and ask them to enter it on the" +
"\"Join lobby\"-screen, which is available from the main menu"
"Create a Lobby",
"When the text at the top says \"Waiting for opponent\", your lobby is " +
"available to join. You may now send the lobby ID to a friend, and ask them to " +
"enter it on the \"Join lobby\"-screen, which is available from the main menu. " +
"When they have done so, the \"Start battle\"-button will appear in the lower " +
"right corner. Press this button to start the game."
),
TutorialStep(
TutorialSprite.HERO_SELECT,
"Hero Selection",
"Here you select which hero to play with in this battle. " +
"Each hero has different spells and units which affects the gameplay. " +
"Try some out, and find your favorite!"
TutorialSprite.JOIN_LOBBY,
"Join a Lobby",
"To play with a friend, one of you have to create a private lobby through " +
"the \"Create lobby\"-screen. That user then becomes the host. The other user " +
"then enters the lobby ID in the text field and presses the \"Join\"-button. " +
"The game will begin once the host presses the \"Start battle\"-button on " +
"their screen."
),
TutorialStep(
TutorialSprite.QUICK_JOIN,
"Quick Join",
"To pair up with a random opponent online, simply press this and wait until " +
"one becomes available. When an opponent is found, you will automatically start " +
"to battle."
),
TutorialStep(
TutorialSprite.LEADERBOARD,
"Leaderboard",
"On the leaderboard you can see the score of the top 10 players globally, " +
"and your score and placing. " +
"Winning a battle earns you 1 point, losing a battle retracts 1 point, and " +
"neither user will receive or lose points if it’s a tie."
),
TutorialStep(
TutorialSprite.BATTLE_GENERAL,
"Battle: General",
"When in a battle you will see your units start on the left side and " +
"always facing right, while your opponent's units start on the right side and " +
"always face left. The dagger-icon on the hero-avatar shows whose turn it is.\n" +
"\n" +
"There may be several obstacles which units have to move around. Beware that " +
"units may attack over obstacles if they have sufficient range.\n" +
"\n" +
"You can only move units, cast a spell or surrender during your own turn. " +
"Every action (move unit or cast spell) costs 1 action point, which each hero " +
"has 1 of per turn. Some spells may modify the available action points."
),
TutorialStep(
TutorialSprite.BATTLE_MOVE_AND_ATTACK,
"Battle: Move and Attack",
"To move one of your units, tap it to select it. The unit's stats will then " +
"be shown on the scroll on the left side of the screen.\n" +
"\n" +
"The orange highlight shows the selected unit, the blue highlights show where " +
"that unit can move to, and red highlights show enemy units the unit can attack. " +
"\n" +
"\n" +
"A unit will not move to attack, so a unit can only attack units within their " +
"attack range from where they currently stand.\n"
),
TutorialStep(
TutorialSprite.BATTLE_SPELL,
"Battle: Spell Casting",
"During your turn you can cast a hero spell, which is different for each " +
"hero. Press the \"Cast spell\"-button to see the spell-info, and then press yes " +
"to cast it. Casting a spell costs one action point."
)
)
......
......@@ -10,10 +10,14 @@ data class TutorialStep(
)
enum class TutorialSprite {
INTERNET_CONNECTION,
MAIN_MENU,
CREATE_LOBBY,
JOIN_LOBBY,
QUICK_JOIN,
HERO_SELECT,
BATTLE
LEADERBOARD,
BATTLE_GENERAL,
BATTLE_MOVE_AND_ATTACK,
BATTLE_SPELL
}
......@@ -37,12 +37,16 @@ class TutorialPageView(
private val tutorialTexture: Texture = Texture(
when (viewModel.sprite) {
TutorialSprite.MAIN_MENU -> "tutorial/mainMenu.png"
TutorialSprite.CREATE_LOBBY,
TutorialSprite.JOIN_LOBBY,
TutorialSprite.QUICK_JOIN,
TutorialSprite.HERO_SELECT,
TutorialSprite.BATTLE -> "tutorial/createLobby.png"
TutorialSprite.INTERNET_CONNECTION -> "tutorial/internetConnection.png"
TutorialSprite.MAIN_MENU -> "tutorial/mainMenu.jpg"
TutorialSprite.CREATE_LOBBY -> "tutorial/createLobby.jpg"
TutorialSprite.JOIN_LOBBY -> "tutorial/joinLobby.jpg"
TutorialSprite.QUICK_JOIN -> "tutorial/quickJoin.jpg"
TutorialSprite.HERO_SELECT -> "tutorial/heroSelection.jpg"
TutorialSprite.LEADERBOARD -> "tutorial/leaderboard.jpg"
TutorialSprite.BATTLE_GENERAL -> "tutorial/battleGeneral.jpg"
TutorialSprite.BATTLE_MOVE_AND_ATTACK -> "tutorial/battleMoveAndAttack.jpg"
TutorialSprite.BATTLE_SPELL -> "tutorial/battleSpell.jpg"
}
)
private val tutorialSprite: Sprite = Sprite(tutorialTexture)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment