aboutsummaryrefslogtreecommitdiff
path: root/assets/scripts/character-select.lua
blob: 06ee574116f2eccb7d8031ab79becfef3690bf9e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
---@diagnostic disable: undefined-global

characters = require("assets.characters.characters-data")

player1CharacterIndex = 1
player2CharacterIndex = 2
player1Character = characters[player1CharacterIndex]
player2Character = characters[player2CharacterIndex]


function StartGame()
    if characterSelectType == "Local 2P" then
        dofile("assets/scripts/local2P.lua")
    end
    if characterSelectType == "Multiplayer" then
        dofile("assets/scripts/multiplayer.lua")
    end
    Setup()
end

function BackToMainMenu()
    dofile("assets/scripts/mainMenu.lua")
    Setup()
end

function Setup()
    print("Using Character Select type: " .. characterSelectType) -- Debug print
end

function Update()
    -- Title and subtitle/paragraph texts
    local fontFile = "assets/fonts/OpenSans-Bold.ttf"
    local fontSize = 50
    local text = "Character Select | " .. characterSelectType

    local textWidth = getTextWidth(fontFile, fontSize, text)
    local x = (WIDTH - textWidth) // 2
    local y = 20

    queueTextForRender(text, fontFile, x, y, fontSize, 255, 255, 255, 255)

    local fontFile = "assets/fonts/OpenSans-Regular.ttf"
    local fontSize = 17
    local text = "Player 1: Use A & D to cycle through characters"

    local textWidth = getTextWidth(fontFile, fontSize, text)
    local x = (WIDTH - textWidth) // 2
    local y = 120

    queueTextForRender(text, fontFile, x, y, fontSize, 255, 255, 255, 255)

    local text = "Player 2: Use LEFT & RIGHT to cycle through characters"

    local textWidth = getTextWidth(fontFile, fontSize, text)
    local x = (WIDTH - textWidth) // 2
    local y = 145

    queueTextForRender(text, fontFile, x, y, fontSize, 255, 255, 255, 255)

    -- Character Portraits & Names
    local imageFile_player1 = player1Character.asset_dir .. "/portrait.png"
    local imageFile_player2 = player2Character.asset_dir .. "/portrait.png"

    local portraitWidth = 128

    local nameFontFile = "assets/fonts/OpenSans-Bold.ttf"
    local nameFontSize = 20

    local p1_x = (WIDTH // 4) - (portraitWidth // 2)
    queueTextureForRender(imageFile_player1, p1_x, 300)

    local p1Name = player1Character.name
    local p1NameWidth = getTextWidth(nameFontFile, nameFontSize, p1Name)
    local p1TextX = (WIDTH // 4) - (p1NameWidth // 2)
    queueTextForRender(p1Name, nameFontFile, p1TextX, 570, nameFontSize, 255, 255, 255, 255)

    local p2_x = (WIDTH * 3 // 4) - (portraitWidth // 2)
    queueTextureForRender(imageFile_player2, p2_x, 300)

    local p2Name = player2Character.name
    local p2NameWidth = getTextWidth(nameFontFile, nameFontSize, p2Name)
    local p2TextX = (WIDTH * 3 // 4) - (p2NameWidth // 2)
    queueTextForRender(p2Name, nameFontFile, p2TextX, 570, nameFontSize, 255, 255, 255, 255)


    local function wrapIndex(index)
        if index < 1 then
            return #characters
        elseif index > #characters then
            return 1
        else
            return index
        end
    end

    local function getNextValidIndex(currentIndex, direction, otherIndex)
        local nextIndex = wrapIndex(currentIndex + direction)
        while nextIndex == otherIndex do
            nextIndex = wrapIndex(nextIndex + direction)
        end
        return nextIndex
    end

    -- Player 1 controls
    if Input.isKeyPressedOnce("A") then
        player1CharacterIndex = getNextValidIndex(player1CharacterIndex, -1, player2CharacterIndex)
        player1Character = characters[player1CharacterIndex]
    end

    if Input.isKeyPressedOnce("D") then
        player1CharacterIndex = getNextValidIndex(player1CharacterIndex, 1, player2CharacterIndex)
        player1Character = characters[player1CharacterIndex]
    end

    -- Player 2 controls
    if Input.isKeyPressedOnce("LEFT") then
        player2CharacterIndex = getNextValidIndex(player2CharacterIndex, -1, player1CharacterIndex)
        player2Character = characters[player2CharacterIndex]
    end

    if Input.isKeyPressedOnce("RIGHT") then
        player2CharacterIndex = getNextValidIndex(player2CharacterIndex, 1, player1CharacterIndex)
        player2Character = characters[player2CharacterIndex]
    end

    -- Start and back buttons
    queueButtonForRender("START!", WIDTH // 2 - buttonWidth // 2, HEIGHT - (buttonHeight * 2), buttonWidth, buttonHeight, "StartGame");
    queueButtonForRender("Back to Main Menu", WIDTH - 220 - 20, 20, 220, 50, "BackToMainMenu")
end