aboutsummaryrefslogtreecommitdiff
path: root/ui.lua
blob: ff8aaddb111799099e5de0763e7b864f6922a6d7 (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
130
131
132
133
134
135
136
137
138
139
140
--adds zeros to score to look cooler
function scorewithzeros(string,length)
    if #string == length then return string end
    return "0"..scorewithzeros(string, length-1)
end

function printdropshadow(text,x,y,colorMain,colorShadow)
    print(text,x,y+1,colorShadow)
    print(text,x,y,colorMain)
end

function invaderslogotext(x,y)
    --default values
    -- x = 12
    -- y = 20

    local invaderstext = "I N V A D E R S"
    for i = 1, 12, 1 do
        print(invaderstext, x+i%3-1, y+i%4-1, 3)
    end
    print(invaderstext,x,y,14)
    clip(x, y, 63, 3)
    print(invaderstext,x,y,11)
    clip()
end

function drawlogo(x,y)
    --default values
    -- x = 24
    -- y = 26

    sspr(88,88,16,8,x-3,y+2,32,16) --to shadow
    sspr(88,88,16,8,x-3,y,32,16) --to
    sspr(120,88,8,8,x+55,y+2,16,16) --ic shadow
    sspr(120,88,8,8,x+55,y,16,16) --ic
    --X
    sspr(104,88,8,8,x+26,y-9,16,16)
    sspr(104,88,8,8,x+42,y-9,16,16,true)
    sspr(112,88,8,8,x+26,y+7,16,16,true)
    sspr(112,88,8,8,x+42,y+7,16,16)
    --invaders
    invaderslogotext(x+11,y+20)
end

function mainmenutext(x,y)
    -- default values
    -- x = 24
    -- y = 62
    x -= 1

    spr(64,x+2,y+7+(sin(t()*0.7)*2),1,3) --ships
    printdropshadow("(\142) - lone wolf\n\n(\151) - companion",x+15,y+7,6,5)
end

function titlehighscores(x,y)
    -- default values
    -- 52
    -- 110
    
    printdropshadow(scorewithzeros(tostring(highscore0),4),x-10,y,12,15) --1P high score
    spr(112,x+8,y)
    printdropshadow(scorewithzeros(tostring(highscore1),4),x+18,y,9,2) --2P high score
end

function playerscore()
    if coopmode then
        printdropshadow(scorewithzerosstore,2,121,9,4) --2P current score
    else
        printdropshadow(scorewithzerosstore,2,2,12,15) --1P current score
    end
end

--shown on edge of screen (blue for solo - orange for coop)
function runningscore(currentscore,isflashing)
    if isflashing or gt < 2 then
        if flashtime then
            playerscore()
        end
    else
        playerscore()
    end
end

function credits(x,y)
    -- default vaues
    -- x = 10
    -- y = 100
    local sintimecredits = circletimex*1.5
    local timemodcredits = t()%2<1

    palt(2,true)
    palt(0,false)
    spr(186,x-4,y+6+sintimecredits,1,1,timemodcredits) --duck
    spr(184,x+104,y+6+-sintimecredits,1,1,timemodcredits) --bot
    palt()
    printdropshadow("1029chris\nLUA TUNES",x+10,y+5,9,2)
    printdropshadow("ribboncable\nART  SOUNDS",x+56,y+5,12,15)
end

--Ending screen
function finalscorescreen(x)
    local playercolour0 = 12
    local playercolour1 = 15
    if coopmode then
        playercolour0 = 9
        playercolour1 = 2
    end

    poke(0x5f58, 0x9 | 0x4) --makes score BIG
    printdropshadow("vICTORY!", x+32,18,6,5)
    printdropshadow(scorewithzerosstore,x+48+circletimex,50+circletimey,playercolour0,playercolour1) --2P high score
    poke(0x5f58)
    -- printdropshadow("fINAL sCORE", x+43,y+22,6,5)
    if (coopmode and currentscore > highscore1) or (not coopmode and currentscore > highscore0) then
        if flashtime then
            printdropshadow("! new high score !", x+27,34,11,3)
        end
    end

    printdropshadow("   THANKS FOR PLAYING\nPRESS (❎ ⁙ πŸ…ΎοΈ) TO RETRY", x+15,80,11,3)

    printdropshadow("MADE WITH β™₯ IN VANCOUVER\n       β—† 2022 β—†", x+14,113,9,2)
end

--intro/ending acid effect
function acidtransition()
    if acidcounter < 3 then
        for i = 1, 128, 1 do
            line(i-1,128,i-1,sin((i+0.22-acidcounter*20)/24.357)*2+acidcounter*80-5,11) --cool wavy transition effect!!!!
            line(i-1,128,i-1,sin((i+acidcounter*60)/44.357)*5+acidcounter*80,3)
        end
        addcircle(rnd(128), acidcounter*80+5, 0,rnd(1),rnd(12)+2,1.5,14)
    end
end

--sfx for the intro transition
sfx(0,3,3)

-- autofire accessibility setting
menuitem(2, "(…) autofire", function() alwaysfire = not alwaysfire end)