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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
|
--[[
GUI/InGame.lua
Game interface
by Roildan & piernov
]]--
local InGame = {}
InGame.Polygons = {} -- Tableau utilisé pour la fonction InGame.drawPolygon(polygon)
InGame.Colors = { {255, 0, 0, 255}, {255, 128, 0, 255}, {255, 255, 0, 255}, {0, 255, 0, 255}, {128, 128, 128, 255}, {255, 255, 255, 255} } -- Tableau de 6 couleurs.
function InGame.drawPolygon(polygon) -- Fonction pour dessiner.
if polygon.Colors then
love.graphics.setColor(unpack(polygon.Colors))
end
if polygon.LineWidth then
love.graphics.setLineWidth(polygon.LineWidth*(Screen.width+Screen.height)/2)
end
if polygon.Type == "rectangle" then
love.graphics.rectangle(polygon.DrawMode, polygon.Position.x*Screen.width, polygon.Position.y*Screen.height,
polygon.Dimension.width*Screen.width, polygon.Dimension.height*Screen.height)
elseif polygon.Type == "polygon" then
love.graphics.polygon(polygon.DrawMode, polygon.Position.x1*Screen.width, polygon.Position.y1*Screen.height,
polygon.Position.x2*Screen.width, polygon.Position.y2*Screen.height,
polygon.Position.x3*Screen.width, polygon.Position.y3*Screen.height,
polygon.Position.x4*Screen.width, polygon.Position.y4*Screen.height)
elseif polygon.Type == "line" then
love.graphics.line(polygon.Position.x1*Screen.width, polygon.Position.y1*Screen.height,
polygon.Position.x2*Screen.width, polygon.Position.y2*Screen.height)
elseif polygon.Type == "print" then
love.graphics.print(polygon.Text, polygon.Position.x*Screen.width, polygon.Position.y*Screen.height)
end
end
function InGame.displayPopup(text) -- Display a popup on the center of the screen
love.graphics.setFont(Fonts[4])
InGame.drawPolygon({ Type = "rectangle", LineWidth = 0.01, DrawMode = "line", Position = { x = 0.30, y = 0.40}, Dimension = {width = 0.40, height = 0.20}, Colors = {0, 0, 255, 255}})
InGame.drawPolygon({ Type = "rectangle", DrawMode = "fill", Position = { x = 0.30, y = 0.40}, Dimension = {width = 0.40, height = 0.20}, Colors = {0, 0, 0, 255}})
InGame.drawPolygon({ Type = "print", Text = text, Position = {x = 0.45, y = 0.48}, Colors = {255, 255, 255, 255}})
love.graphics.setFont(Fonts[3])
end
function InGame.loadInterface() -- Interface used in both Solo and Multiplayer mode
love.graphics.setBackgroundColor(0, 0, 0)
-- Inner window border
table.insert(InGame.Polygons, { Type = "rectangle", DrawMode = "line", LineWidth = 0.005, Position = { x = 0.005, y = 0.005}, Dimension = {width = 0.99, height = 0.99}, Colors = {0, 0, 171, 255} })
-- Background
for i = 0, 5 do
table.insert(InGame.Polygons, { Type = "polygon", DrawMode = "fill", Position = { x1 = 0.01, y1 = 0.02+0.02*i, x2 = 0.02+0.02*i, y2 = 0.01, x3 = 0.03+0.02*i, y3 = 0.01, x4 = 0.01, y4 = 0.03+0.02*i}, Colors = {0, 0, 171, 255} }) -- 6 barres en diagonales en haut.
table.insert(InGame.Polygons, { Type = "polygon", DrawMode = "fill", Position = { x1 = 0.99, y1 = 0.98-0.02*i, x2 = 0.98-0.02*i, y2 = 0.99, x3 = 0.97-0.02*i, y3 = 0.99, x4 = 0.99, y4 = 0.97-0.02*i}, Colors = {0, 0, 171, 255} }) -- 6 barres en diagonales en bas.
end
-- Left box
table.insert(InGame.Polygons, { Type = "rectangle", DrawMode = "fill", Position = { x = 0.05, y = 0.05}, Dimension = {width = 0.35, height = 0.90}, Colors = {0, 0, 0, 255} }) -- Rectangle plein (noir) permettant de cacher les barres diagonales.
table.insert(InGame.Polygons, { Type = "rectangle", DrawMode = "line", Position = { x = 0.05, y = 0.05}, Dimension = {width = 0.35, height = 0.90}, Colors = {0, 0, 171, 255} }) -- Rectangle de la partie gauche.
table.insert(InGame.Polygons, { Type = "line", Position = { x1 = 0.05, y1 = 0.1, x2 = 0.4, y2 = 0.1}, Colors = {0, 0, 171, 255} }) -- Ligne séparant le rectangle précédent en 2 partie.
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.005, Position = { x1 = 0.05, y1 = 0.85, x2 = 0.4, y2 = 0.85}, Colors = {0, 0, 171, 255} })-- Ligne séparant le rectangle précédent en 2 partie.
-- Left box buttons
table.insert(InGame.Polygons, { Type = "rectangle", DrawMode = "line", Position = { x = 0.075, y = 0.875}, Dimension = {width = 0.125, height = 0.05}, Colors = {0, 0, 171, 255} }) -- Rectangle du boutton "Reset".
table.insert(InGame.Polygons, { Type = "print", Text = "Reset", Position = { x = 0.075+0.025, y = 0.875+0.01 }, Colors = { 255, 255, 255, 255}})
table.insert(InGame.Polygons, { Type = "rectangle", DrawMode = "line", Position = { x = 0.25, y = 0.875}, Dimension = {width = 0.125, height = 0.05}, Colors = {0, 0, 171, 255} }) -- Rectangle du boutton "Valider"
table.insert(InGame.Polygons, { Type = "print", Text = "Ok", Position = { x = 0.25+0.04, y = 0.875+0.01 }, Colors = { 255, 255, 255, 255}})
-- Right top box
table.insert(InGame.Polygons, { Type = "rectangle", LineWidth = 0.005, DrawMode = "line", Position = { x = 0.45, y = 0.05}, Dimension = {width = 0.50, height = 0.75}, Colors = {0, 0, 171, 255} }) -- Rectangle supérieur de la partie droite.
table.insert(InGame.Polygons, { Type = "line", Position = { x1 = 0.45, y1 = 0.1, x2 = 0.95, y2 = 0.1}, Colors = {0, 0, 171, 255} }) -- Ligne séparant le rectangle précédent en 2 partie.
-- Right top box content
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.01, Position = { x1 = 0.475-0.0025, y1 = 0.75, x2 = 0.52+5*0.075+0.0025, y2 = 0.75}, Colors = {0, 0, 171, 255} }) -- Barre horizontale en bas.
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.01, Position = { x1 = 0.475, y1 = 0.75, x2 = 0.475, y2 = 0.15-0.0025}, Colors = {0, 0, 171, 255} }) -- Grande barre verticale à gauche.
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.01, Position = { x1 = 0.9, y1 = 0.15-0.0025, x2 = 0.9, y2 = 0.7}, Colors = {0, 0, 171, 255} }) -- Grande barre verticale à droite.
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.03, Position = { x1 = 0.795, y1 = 0.7-0.01, x2 = 0.9+0.005, y2 = 0.7-0.01}, Colors = {0, 0, 171, 255} }) -- Barre reliant la barre précédente et le rectangle "sécurité".
table.insert(InGame.Polygons, { Type = "rectangle", LineWidth = 0.01, DrawMode = "line", Position = { x = 0.52, y = 0.66}, Dimension = {width = 0.275, height = 0.05}, Colors = {0, 0, 171, 255} }) -- Rectangle de la "vie" du joueur.
for o = 0, 8 do
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.005, Position = { x1 = 0.5475+0.0275*o, y1 = 0.66, x2 = 0.5475+0.0275*o, y2 = 0.71}, Colors = {0, 0, 171, 255} }) -- Petites séparant le rectangle de la "vie" du joueur.
end
for j = 0, 6 do
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.005, Position = { x1 = 0.77, y1 = 0.15+j*0.075, x2 = 0.785, y2 = 0.15+j*0.075}, Colors = {0, 0, 171, 255} }) -- 7 petites barres reliant les derniers grands carrés et les petits groupes de 4 petits carrés.
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.005, Position = { x1 = 0.86, y1 = 0.15+j*0.075, x2 = 0.9, y2 = 0.15+j*0.075}, Colors = {0, 0, 171, 255} }) -- 7 barres reiant les groupes de 4 petits carrés avec la grande barrre verticale.
for i = 0, 3 do
table.insert(InGame.Polygons, { Type = "rectangle", LineWidth = 0.01, DrawMode = "line", Position = { x = 0.497+i*0.075, y = 0.12+j*0.075}, Dimension = {width = 0.045, height = 0.05}, Colors = {0, 0, 171, 255} }) -- 4 grands rectangles.
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.01, Position = { x1 = 0.471+i*0.075, y1 = 0.15+j*0.075, x2 = 0.497+i*0.075, y2 = 0.15+j*0.075}, Colors = {0, 0, 171, 255} }) -- 4 petites barres reliant entre eux les 4 rectangles précédents.
end
for k = 0, 1 do
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.005, Position = { x1 = 0.785+k*0.075, y1 = 0.1275+j*0.075-0.0005, x2 = 0.785+k*0.075, y2 = 0.1725+j*0.075+0.0005}, Colors = {0, 0, 171, 255} }) -- 14 barres verticales encadrant les 7 groupes de 4 petits carrés.
for l = 0, 1 do
table.insert(InGame.Polygons, { Type = "rectangle", LineWidth = 0.0025, DrawMode = "line", Position = { x = 0.795+k*0.0325, y = 0.12+l*0.0325+j*0.075}, Dimension = {width = 0.0225, height = 0.025}, Colors = {0, 0, 171, 255} }) -- 7 groupes de 4 petits rectangles.
end
for m = 0, 2 do
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.0025, Position = { x1 = 0.785+m*0.0325, y1 = 0.1275+k*0.045+j*0.075, x2 = 0.795+m*0.0325, y2 = 0.1275+k*0.045+j*0.075}, Colors = {0, 0, 171, 255} }) -- 42 petites barres horizontales reliant entre eux les groupes de 4 petits carrés.
end
end
end
-- Right bottom box
table.insert(InGame.Polygons, { Type = "rectangle", LineWidth = 0.005, DrawMode = "fill", Position = { x = 0.45, y = 0.85}, Dimension = {width = 0.50, height = 0.10}, Colors = {0, 0, 0, 255} }) -- Rectangle plein (noir) permettant de cacher les barres diagonales.
table.insert(InGame.Polygons, { Type = "rectangle", DrawMode = "line", Position = { x = 0.45, y = 0.85}, Dimension = {width = 0.50, height = 0.10}, Colors = {0, 0, 171, 255} }) -- Rectangle de la parie droite en bas.
-- Right bottom box buttons
for i = 0, 5 do
table.insert(InGame.Polygons, { Type = "rectangle", DrawMode = "fill", Position = { x = 0.50+i*0.075, y = 0.875}, Dimension = {width = 0.04, height = 0.04}, Colors = InGame.Colors[i+1] }) -- Remplissage des 6 carrés par les couleurs du tableau "InGame.Colors".
table.insert(InGame.Polygons, { Type = "rectangle", DrawMode = "line", LineWidth = 0.01, Position = { x = 0.50+i*0.075, y = 0.875}, Dimension = {width = 0.04, height = 0.04}, Colors = {0, 0, 171, 255} }) -- 6 carrés.
table.insert(InGame.Polygons, { Type = "line", Position = { x1 = 0.52+i*0.075, y1 = 0.75, x2 = 0.52+i*0.075, y2 = 0.875}, Colors = {0, 0, 171, 255} }) -- 6 barres verticales reliant les 6 carrés avec la barre horizontale plus haut.
if i < 5 then
table.insert(InGame.Polygons, { Type = "line", Position = { x1 = 0.5+i*0.075+0.04, y1 = 0.895, x2 = 0.52+(i+1)*0.075, y2 = 0.895}, Colors = {0, 0, 171, 255} }) -- 5 barres horizontales reliant les 6 carrées précédents entre eux.
end
end
end
function InGame.loadMultiplayerInterface() -- Addition elements for Multiplayer
-- Left box content
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.01, Position = { x1 = 0.375, y1 = 0.15-0.005, x2 = 0.375, y2 = 0.75+0.005}, Colors = {0, 0, 171, 255} }) -- Grande barre verticale à droite.
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.01, Position = { x1 = 0.06+0.0025, y1 = 0.15, x2 = 0.08, y2 = 0.15}, Colors = {0, 0, 171, 255} }) -- Petite barre horizontale à gauche du dernier grand carré du haut (plus petite que les autres sinon elle dépassait de la case).
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.005, Position = { x1 = 0.15+0.0025, y1 = 0.55, x2 = 0.19, y2 = 0.55}, Colors = {0, 0, 171, 255} }) -- Petite barre horizontale
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.02, Position = { x1 = 0.16, y1 = 0.55, x2 = 0.16, y2 = 0.6}, Colors = {0, 0, 171, 255} }) -- Barre verticale reliant au rectangle suivant.
table.insert(InGame.Polygons, { Type = "rectangle",LineWidth = 0.01, DrawMode = "line", Position = { x = 0.135, y = 0.6}, Dimension = {width = 0.05, height = 0.2}, Colors = {0, 0, 171, 255} }) -- Rectangle de la "vie" du joueur.
for o = 0, 8 do
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.005, Position = { x1 = 0.135, y1 = 0.62+0.02*o, x2 = 0.185, y2 = 0.62+0.02*o}, Colors = {0, 0, 171, 255} }) -- Petites séparant le rectangle de la "vie" du joueur.
end
for i = 0, 3 do
table.insert(InGame.Polygons, { Type = "rectangle", LineWidth = 0.01, DrawMode = "line", Position = { x = 0.08+i*0.075, y = 0.12}, Dimension = {width = 0.045, height = 0.05}, Colors = {0, 0, 171, 255} }) -- 4 grands carrés du haut.
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.01, Position = { x1 = 0.35-i*0.075, y1 = 0.15, x2 = 0.38-i*0.075-0.0025, y2 = 0.15}, Colors = {0, 0, 171, 255} }) -- 4 barres reliant les 4 grands carrés du haut.
end
for m = 0, 1 do
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.005, Position = { x1 = 0.065, y1 = 0.15+m*0.2-0.0025, x2 = 0.065, y2 = 0.25+0.0025+m*0.2}, Colors = {0, 0, 171, 255} }) -- 2 barres verticales reliant, le grand carré du haut avec le premier groupe, et le troisième groupe avec le cinquième.
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.005, Position = { x1 = 0.305, y1 = 0.25+m*0.2-0.0025, x2 = 0.305, y2 = 0.35+0.0025+m*0.2}, Colors = {0, 0, 171, 255} }) -- 2 barres verticales reliant, le deuxième groupe avec le troisième groupe, et le sixième groupe avec le dernier groupe.
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.005, Position = { x1 = 0.21+m*0.075, y1 = 0.525-0.001, x2 = 0.21+m*0.075, y2 = 0.575-0.001}, Colors = {0, 0, 171, 255} }) -- 2 barres verticales encadrant le dernier groupe.
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.005, Position = { x1 = 0.19+m*0.095, y1 = 0.55, x2 = 0.21+m*0.095, y2 = 0.55}, Colors = {0, 0, 171, 255} }) -- 2 barres horizontales encadrant le dernier groupe.
for j = 0, 2 do
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.01, Position = { x1 = 0.18, y1 = 0.25+j*0.1, x2 = 0.19, y2 = 0.25+j*0.1}, Colors = {0, 0, 171, 255} }) -- 3 petites barres épaisses entre les 6 premiers groupes.
for k = 0, 1 do
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.005, Position = { x1 = 0.085+k*0.075+m*0.125, y1 = 0.225+j*0.1-0.001, x2 = 0.085+k*0.075+m*0.125, y2 = 0.275+j*0.1-0.001}, Colors = {0, 0, 171, 255} }) -- 12 barres verticales encadrant les 6 premiers groupes.
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.005, Position = { x1 = 0.065+k*0.095+m*0.125, y1 = 0.25+j*0.1, x2 = 0.085+k*0.095+m*0.125, y2 = 0.25+j*0.1}, Colors = {0, 0, 171, 255} }) -- 12 barres horizontales encadrant les 6 premiers groupes.
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.0025, Position = { x1 = 0.21+j*0.0325, y1 = 0.525+k*0.0475, x2 = 0.22+j*0.0325, y2 = 0.525+k*0.0475}, Colors = {0, 0, 171, 255} }) -- 6 barres reliant les 4 petits carrés du dernier groupe entre eux.
for l = 0, 1 do
table.insert(InGame.Polygons, { Type = "rectangle", LineWidth = 0.0025, DrawMode = "line", Position = { x = 0.095+k*0.0325+m*0.125, y = 0.22+l*0.0325+j*0.1}, Dimension = {width = 0.0225, height = 0.025}, Colors = {0, 0, 171, 255} }) -- 6 premiers groupes de 4 petits carrés.
table.insert(InGame.Polygons, { Type = "rectangle", LineWidth = 0.0025, DrawMode = "line", Position = { x = 0.22+k*0.0325, y = 0.52+l*0.0325}, Dimension = {width = 0.0225, height = 0.025}, Colors = {0, 0, 171, 255} }) -- dernier groupe de 4 petits carré.
end
for n = 0, 2 do
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.0025, Position = { x1 = 0.085+m*0.125+n*0.0325, y1 = 0.225+j*0.1+k*0.0475, x2 = 0.095+m*0.125+n*0.0325, y2 = 0.225+j*0.1+k*0.0475}, Colors = {0, 0, 171, 255} }) -- 6 barres reliant les 4 petits carrés des 6 premiers groupes entre eux.
end
end
end
end
-- Right top box content
table.insert(InGame.Polygons, { Type = "line", LineWidth = 0.01, Position = { x1 = 0.375-0.0025, y1 = 0.75, x2 = 0.52+5*0.075+0.0025, y2 = 0.75}, Colors = {0, 0, 171, 255} }) -- Barre horizontale en bas.
end
return InGame
|