aboutsummaryrefslogtreecommitdiff
path: root/assets/scripts/local2P.lua
blob: c8e0aa531c623c7369388d7f71bdea0a1f6d5342 (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
---@diagnostic disable: undefined-global


function SafeInitCharacter(character, default_x, default_y)
    character.x = character.x or default_x
    character.y = character.y or default_y
    character.y_velocity = character.y_velocity or 1
    character.current_sprite = character.asset_dir .. "/sprites/idle.png"
end

function Setup()
    SafeInitCharacter(player1Character, 250, 250)
    SafeInitCharacter(player2Character, WIDTH - 250 - (250 / 2), 250)
end

gravity = 1.2 -- POSITIVE gravity
floor_y = HEIGHT - 250

function HandleP1Input()
    if Input.isKeyPressedOnce("W") and player1Character.y == floor_y then
       player1Character.y_velocity = player1Character.jump_strength * -1.0;
    end
    if Input.isKeyDown("D") then
        player1Character.x = player1Character.x + player1Character.speed;
    end
    if Input.isKeyDown("A") then
        player1Character.x = player1Character.x - player1Character.speed;
    end
end

function HandleP2Input()
    if Input.isKeyPressedOnce("UP") and player2Character.y == floor_y then
        player2Character.y_velocity = player2Character.jump_strength * -1.0;
    end
    if Input.isKeyDown("RIGHT") then
        player2Character.x = player2Character.x + player2Character.speed;
    end
    if Input.isKeyDown("LEFT") then
        player2Character.x = player2Character.x - player2Character.speed;
    end
end

function Update()
    -- P1 physics
    player1Character.y_velocity = player1Character.y_velocity + gravity
    player1Character.y = player1Character.y + player1Character.y_velocity

    if player1Character.y > floor_y then
        player1Character.y = floor_y
        player1Character.y_velocity = 0
    end

    -- P2 physics
    player2Character.y_velocity = player2Character.y_velocity + gravity
    player2Character.y = player2Character.y + player2Character.y_velocity

    if player2Character.y > floor_y then
        player2Character.y = floor_y
        player2Character.y_velocity = 0
    end

    -- Render
    queueTextureForRender(
        player1Character.current_sprite,
        math.floor(player1Character.x),
        math.floor(player1Character.y)
    )

    queueTextureForRender(
        player2Character.current_sprite,
        math.floor(player2Character.x),
        math.floor(player2Character.y)
    )


    -- Input
    HandleP1Input()
    HandleP2Input()
end