Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
552ccff
add layouting logic and adapt it for UiElement
Endaris May 10, 2025
130bae5
make specialized scrollcontainer to replace Menu
Endaris May 10, 2025
28d3541
some layouting adjustments for options menu
Endaris May 11, 2025
91bf458
fully replace Menu with new ScrollContainer-based VerticalMenu
Endaris May 11, 2025
2187846
rework font handling to work with discrete key sizes
Endaris May 11, 2025
8f7ea94
add adaptive layout and fix some more font stuff
Endaris May 11, 2025
13efcce
fix a crash, fix graphics menu adjustment, fix slider alignment
Endaris May 11, 2025
e9c22b6
refix slider positioning
Endaris May 11, 2025
ed0dcce
vaguely resolve most crashes for a slightly broken layout (lobby/vsSelf)
Endaris May 11, 2025
b8f5b52
add a static layout that blocks flex propagation
Endaris May 17, 2025
8dcd4ff
adjust layouting to use a UIElement specific baseWidth/Height
Endaris May 17, 2025
1a53bdc
add shrinking to horizontalFlexLayout
Endaris May 17, 2025
1493e6f
abandon fixed canvas resolution, embrace dynamic window size
Endaris May 17, 2025
9e6c122
add a very basic standard cursor for whatever needs to kickstart a ne…
Endaris May 17, 2025
6bbb45b
initial cursor display for designhelper
Endaris May 18, 2025
c910910
create a container that unifies child size allows grid size navigatio…
Endaris May 18, 2025
3da0250
Merge branch 'beta' into resizableUi
Endaris May 24, 2025
0728309
fix most things about wrapping containers with children
Endaris May 26, 2025
a84081b
fix scene.uiRoot maximum dimensions
Endaris May 26, 2025
f02c6e5
change alignment options to be parent based
Endaris May 26, 2025
d4f47d5
fix alignment for unisizedcontainer children and default to minWidth …
Endaris May 26, 2025
1bfabb3
fix a navigation crash when unisizedcontainer used vAlign different f…
Endaris May 26, 2025
869658f
update Understanding the Codebase doc with info about the new layout …
Endaris May 27, 2025
26cdfec
extract CharacterButton from CharacterSelect into its own UIElement
Endaris May 27, 2025
a0b814a
update doc how localization is implemented in the Label UIElement
Endaris May 27, 2025
5f70845
add a new command line flag to simulate mobile OS instead of doing it…
Endaris May 28, 2025
344c09c
no layouting
Endaris May 28, 2025
ef9a7af
start working on an integrated cursor system and fix some luaLS intel…
Endaris May 28, 2025
8b27fc6
widely use import with the luaLS plugin so it properly resolves relat…
Endaris May 28, 2025
b9bbe0a
change receiveInputs to be cursor driven to achieve a UI system in wh…
Endaris May 28, 2025
8fadb86
fix getScreenPos() for children living in ScrollContainers not yieldi…
Endaris May 29, 2025
24015c5
fix touch detection in ScrollContainers and mostly unbrick DesignHelper
Endaris May 29, 2025
d8a47fa
some cleanup
Endaris May 31, 2025
4d4b0ff
more cleanup
Endaris May 31, 2025
a345524
port client parts of consts.lua to its own file
Endaris May 31, 2025
80c2730
wrap characterSelect buttons in scrollcontainer and fix a bug that ca…
Endaris May 31, 2025
e60743e
fix characterbutton offsets
Endaris May 31, 2025
cb56357
fix CharacterButton display
Endaris Jun 1, 2025
a0220d6
fix cursor navigation on UniSizedContainer
Endaris Jun 1, 2025
e5b1e11
only show super select stage while a character is hovered (cause it c…
Endaris Jun 1, 2025
af1fbce
add PanelSetButton
Endaris Jun 1, 2025
ee12a09
fix some things regarding resizing with overflowing height
Endaris Jun 1, 2025
e8bb9df
4-slice the cursor image and draw the cursor properly
Endaris Jun 10, 2025
2b800af
fix vertical resizing for preferred vs min height
Endaris Jun 10, 2025
ad10ad2
make onChildrenChanged local
Endaris Jun 10, 2025
b514bd1
change UIElement:drawSelf and all its override to assume 0, 0 offset …
Endaris Jun 10, 2025
dbff55d
readjust MenuItem
Endaris Jun 10, 2025
0eef8fb
update doc
Endaris Jun 10, 2025
389e916
divide Button clicks into action and onAction
Endaris Jun 11, 2025
9d58ae1
fix some stuff about images and stagebuttons
Endaris Jun 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion .luarc.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@

"hint.semicolon": "Disable",

"runtime.plugin": "common/lib/luaLsPlugin.lua",

// to support mixin union types where a table is both types rather than just one
"type.weakUnionCheck": true,

"workspace.checkThirdParty": false,
"workspace.ignoreDir": [
".vscode",
Expand All @@ -34,6 +39,9 @@
"${3rd}/love2d/library",
"common/lib/socket.lua",
"common/lib/dkjson.lua",
"common/lib/csprng.lua"
"common/lib/csprng.lua",
"common/lib/luaLsPlugin.lua",
"common/lib/import.lua",
"${addons}/lsqlite3/module/library"
]
}
3 changes: 3 additions & 0 deletions .vscode/launch.json.template
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@
// the profiler itself preallocates a lot of memory to reduce the odds of it causing spikes in frame time / memory alloc on its own
//,"profileFrameTimes"
//,"profileMemory"

// to make the game take code branches intended specifically for mobile devices (e.g. increased font size)
//,"simulateMobileOS"
]
},
// using the testLauncher.lua file to only run tests
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions client/src/BattleRoom.lua
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ local ClientMatch = require("client.src.ClientMatch")
local GameBase = require("client.src.scenes.GameBase")
local BlackFadeTransition = require("client.src.scenes.Transitions.BlackFadeTransition")
local Easings = require("client.src.Easings")
local consts = require("common.engine.consts")
local consts = require("client.src.consts")
local system = require("client.src.system")
local GeneratorSource = require("common.engine.GeneratorSource")

Expand Down Expand Up @@ -374,7 +374,7 @@ end

function BattleRoom:createScene(match)
-- for touch android players load a different scene
if (system.isMobileOS() or DEBUG_ENABLED) and self.gameScene.name ~= "PuzzleGame" and
if system.isMobileOS() and self.gameScene.name ~= "PuzzleGame" and
--but only if they are the only local player cause for 2p vs local using portrait mode would be bad
tableUtils.count(self.players, function(p) return p.isLocal and p.human end) == 1 then
for _, player in ipairs(self.players) do
Expand Down
19 changes: 10 additions & 9 deletions client/src/ClientMatch.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ local class = require("common.lib.class")
local logger = require("common.lib.logger")
local StageLoader = require("client.src.mods.StageLoader")
local ModController = require("client.src.mods.ModController")
local consts = require("common.engine.consts")
local consts = require("client.src.consts")
local tableUtils = require("common.lib.tableUtils")
local GameModes = require("common.data.GameModes")
local ChallengeModePlayer = require("client.src.ChallengeModePlayer")
Expand Down Expand Up @@ -562,7 +562,7 @@ end
function ClientMatch:drawCommunityMessage()
-- Draw the community message
if not config.debug_mode then
GraphicsUtil.printf(join_community_msg or "", 0, 668, consts.CANVAS_WIDTH, "center")
GraphicsUtil.printf(join_community_msg or "", 0, 668, love.graphics.getWidth(), "center")
end
end

Expand Down Expand Up @@ -593,8 +593,8 @@ function ClientMatch:render()
-- let the spectator know the game is about to die
local iconSize = 60
local icon_width, icon_height = themes[config.theme].images.IMG_bug:getDimensions()
local x = (consts.CANVAS_WIDTH / 2) - (iconSize / 2)
local y = (consts.CANVAS_HEIGHT / 2) - (iconSize / 2)
local x = (love.graphics.getWidth() / 2) - (iconSize / 2)
local y = (love.graphics.getHeight() / 2) - (iconSize / 2)
GraphicsUtil.draw(themes[config.theme].images.IMG_bug, x, y, 0, iconSize / icon_width, iconSize / icon_height)
end
end
Expand Down Expand Up @@ -660,20 +660,21 @@ end

-- Draw the pause menu
function ClientMatch:draw_pause()
local width, height = love.graphics.getDimensions()
if not self.renderDuringPause then
local image = themes[config.theme].images.pause
local scale = consts.CANVAS_WIDTH / math.max(image:getWidth(), image:getHeight()) -- keep image ratio
local scale = width / math.max(image:getWidth(), image:getHeight()) -- keep image ratio
-- adjust coordinates to be centered
local x = consts.CANVAS_WIDTH / 2
local y = consts.CANVAS_HEIGHT / 2
local x = width / 2
local y = height / 2
local xOffset = math.floor(image:getWidth() * 0.5)
local yOffset = math.floor(image:getHeight() * 0.5)

GraphicsUtil.draw(image, x, y, 0, scale, scale, xOffset, yOffset)
end
local y = 260
GraphicsUtil.printf(loc("pause"), 0, y, consts.CANVAS_WIDTH, "center", nil, 1, 10)
GraphicsUtil.printf(loc("pl_pause_help"), 0, y + 30, consts.CANVAS_WIDTH, "center", nil, 1)
GraphicsUtil.printf(loc("pause"), 0, y, width, "center", nil, 1, "big")
GraphicsUtil.printf(loc("pl_pause_help"), 0, y + 30, width, "center", nil, 1)
end

function ClientMatch:getWinners()
Expand Down
23 changes: 11 additions & 12 deletions client/src/ClientStack.lua
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
local class = require("common.lib.class")
local consts = require("common.engine.consts")
local consts = require("client.src.consts")
local Signal = require("common.lib.signal")
local GraphicsUtil = require("client.src.graphics.graphics_util")

Expand Down Expand Up @@ -201,14 +201,18 @@ function ClientStack:drawNumber(number, themePositionOffset, scale, cameFromLega
GraphicsUtil.drawPixelFont(number, self.assets.numberPixelFont, x, y, scale, scale, "center", 0)
end

function ClientStack:drawString(string, themePositionOffset, cameFromLegacyScoreOffset, fontSize)
---@param str string
---@param themePositionOffset number[]
---@param cameFromLegacyScoreOffset boolean
---@param fontSize FontSize
function ClientStack:drawString(str, themePositionOffset, cameFromLegacyScoreOffset, fontSize)
if cameFromLegacyScoreOffset == nil then
cameFromLegacyScoreOffset = false
end
local x = self:elementOriginXWithOffset(themePositionOffset, cameFromLegacyScoreOffset)
local y = self:elementOriginYWithOffset(themePositionOffset, cameFromLegacyScoreOffset)

local limit = consts.CANVAS_WIDTH - x
local limit = love.graphics.getWidth() - x
local alignment = "left"
if themes[config.theme]:offsetsAreFixed() then
if self.renderIndex == 1 then
Expand All @@ -218,12 +222,7 @@ function ClientStack:drawString(string, themePositionOffset, cameFromLegacyScore
end
end

if fontSize == nil then
fontSize = GraphicsUtil.fontSize
end
local fontDelta = fontSize - GraphicsUtil.fontSize

GraphicsUtil.printf(string, x, y, limit, alignment, nil, nil, fontDelta)
GraphicsUtil.printf(str, x, y, limit, alignment, nil, nil, fontSize)
end

-- Positions the stack draw position for the given player
Expand All @@ -237,7 +236,7 @@ function ClientStack:moveForRenderIndex(renderIndex)
self.mirror_x = -1
self.multiplication = 1
end
local centerX = (GAME.globalCanvas:getWidth() / 2)
local centerX = love.graphics.getWidth() / 2
local stackWidth = self:canvasWidth()
local innerStackXMovement = 100
local outerStackXMovement = stackWidth + innerStackXMovement
Expand Down Expand Up @@ -402,14 +401,14 @@ function ClientStack:drawAbsoluteMultibar(stop_time, shake_time, pre_stop_time)
end

if remainingSeconds > 0 then
self:drawString(string.format("%." .. themes[config.theme].multibar_LeftoverTime_Decimals .. "f", remainingSeconds), overtimePos, false, 20)
self:drawString(string.format("%." .. themes[config.theme].multibar_LeftoverTime_Decimals .. "f", remainingSeconds), overtimePos, false, "big")
end
end
end

function ClientStack:drawPlayerName()
local username = (self.player.name or "")
self:drawString(username, themes[config.theme].name_Pos, true, themes[config.theme].name_Font_Size)
self:drawString(username, themes[config.theme].name_Pos, true, "big")
end

function ClientStack:drawWinCount()
Expand Down
71 changes: 36 additions & 35 deletions client/src/Game.lua
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
require("common.lib.stringExtensions")
require("client.src.localization")
require("common.lib.Queue")
require("client.src.server_queue")
Expand All @@ -8,7 +9,7 @@ require("client.src.mods.Theme")

-- The main game object for tracking everything in Panel Attack.
-- Not to be confused with "Match" which is the current battle / instance of the game.
local consts = require("common.engine.consts")
local consts = require("client.src.consts")
local GraphicsUtil = require("client.src.graphics.graphics_util")
local class = require("common.lib.class")
local logger = require("common.lib.logger")
Expand Down Expand Up @@ -42,7 +43,6 @@ end
---@class PanelAttack
---@field netClient NetClient
---@field battleRoom BattleRoom?
---@field globalCanvas love.Canvas
---@field muteSound boolean
---@field rich_presence table
---@field input table
Expand All @@ -66,7 +66,7 @@ local Game = class(
self.backgroundImage = nil -- the background image for the game, should always be set to something with the proper dimensions
self.netClient = NetClient()
self.server_queue = ServerQueue()
self.main_menu_screen_pos = {consts.CANVAS_WIDTH / 2 - 108 + 50, consts.CANVAS_HEIGHT / 2 - 111}
self.main_menu_screen_pos = {love.graphics.getWidth() / 2 - 108 + 50, love.graphics.getHeight() / 2 - 111}
self.config = config
self.localization = Localization
self.replay = {}
Expand All @@ -81,9 +81,6 @@ local Game = class(
self.canvasYScale = 1
self.backgroundColor = { 0.0, 0.0, 0.0 }

-- depends on canvasXScale
self.globalCanvas = love.graphics.newCanvas(consts.CANVAS_WIDTH, consts.CANVAS_HEIGHT, {dpiscale=newCanvasSnappedScale(self)})

self.automaticScales = {1, 1.5, 2, 2.5, 3}
-- specifies a time that is compared against self.timer to determine if GameScale should be shown
self.showGameScaleUntil = 0
Expand Down Expand Up @@ -126,7 +123,6 @@ function Game:load()

self.navigationStack = require("client.src.NavigationStack")
self.navigationStack:push(StartUp({setupRoutine = self.setupRoutine}))
self.globalCanvas = love.graphics.newCanvas(consts.CANVAS_WIDTH, consts.CANVAS_HEIGHT, {dpiscale=GAME:newCanvasSnappedScale()})
end

local function detectHardwareProblems()
Expand Down Expand Up @@ -354,13 +350,26 @@ function Game:updateMouseVisibility(dt)
end

function Game:handleResize(newWidth, newHeight)
local activeScene = GAME.navigationStack:getActiveScene()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There should probably be a root element that all scenes are parented from, that way we can draw overlays on it etc and it is always the root spot to update scale / height / width on.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep!
This is still WIP and I did this quick and dirty to get a layout resize for window resizes so I could test the layout at all. I intend to come back to this.

if activeScene then
local _, _, flags = love.window.getMode()
local screenWidth, screenHeight = love.window.getDesktopDimensions(flags.display)
newWidth = math.min(newWidth, screenWidth)
newHeight = math.min(newHeight, screenHeight)
activeScene.uiRoot.minWidth = newWidth
activeScene.uiRoot.minHeight = newHeight
activeScene.uiRoot.layout.resize(activeScene.uiRoot, newWidth, newHeight)
if activeScene.uiRoot.width ~= newWidth or activeScene.uiRoot.height ~= newHeight then
GraphicsUtil.updateMode(activeScene.uiRoot.width, activeScene.uiRoot.height)
end
end
self:updateCanvasPositionAndScale(newWidth, newHeight)
if self.battleRoom and self.battleRoom.match then
self.needsAssetReload = true
else
self:refreshCanvasAndImagesForNewScale()
--self:refreshCanvasAndImagesForNewScale()
end
self.showGameScaleUntil = self.timer + 5
--self.showGameScaleUntil = self.timer + 5
end

-- Called every few fractions of a second to update the game
Expand Down Expand Up @@ -391,25 +400,13 @@ function Game:update(dt)
end

function Game:draw()
-- Setting the canvas means everything we draw is drawn to the canvas instead of the screen
love.graphics.setCanvas({self.globalCanvas, stencil = true})
love.graphics.setBackgroundColor(unpack(self.backgroundColor))
love.graphics.clear()

-- With this, self.globalCanvas is clear and set as our active canvas everything is being drawn to
self.navigationStack:draw()

self:drawFPS()
self:drawScaleInfo()

-- resetting the canvas means everything we draw is drawn to the screen
love.graphics.setCanvas()

love.graphics.setBlendMode("alpha", "premultiplied")
-- now we draw the finished canvas at scale
-- this way we don't have to worry about scaling singular elements, just draw everything at 1280x720 to the canvas
love.graphics.draw(self.globalCanvas, self.canvasX, self.canvasY, 0, self.canvasXScale, self.canvasYScale, self.globalCanvas:getWidth() / 2, self.globalCanvas:getHeight() / 2)
love.graphics.setBlendMode("alpha", "alphamultiply")
end

function Game:drawFPS()
Expand All @@ -421,13 +418,13 @@ end

function Game:drawScaleInfo()
if self.showGameScaleUntil > self.timer then
local scaleString = "Scale: " .. self.canvasXScale .. " (" .. consts.CANVAS_WIDTH * self.canvasXScale .. " x " .. consts.CANVAS_HEIGHT * self.canvasYScale .. ")"
local scaleString = "Scale: " .. self.canvasXScale .. " (" .. love.graphics.getWidth() * self.canvasXScale .. " x " .. love.graphics.getHeight() * self.canvasYScale .. ")"
local newPixelWidth = love.graphics.getWidth()

if consts.CANVAS_WIDTH * self.canvasXScale > newPixelWidth then
if love.graphics.getWidth() * self.canvasXScale > newPixelWidth then
scaleString = scaleString .. " Clipped "
end
love.graphics.printf(scaleString, GraphicsUtil.getGlobalFontWithSize(30), 5, 5, 2000, "left")
love.graphics.printf(scaleString, GraphicsUtil.getGlobalFontWithSize("huge"), 5, 5, 2000, "left")
end
end

Expand Down Expand Up @@ -570,7 +567,7 @@ function Game:updateCanvasPositionAndScale(newWindowWidth, newWindowHeight)

if config.gameScaleType == "fit" then
local w, h
local canvasWidth, canvasHeight = self.globalCanvas:getDimensions()
local canvasWidth, canvasHeight = love.graphics.getDimensions()
if newWindowHeight / canvasHeight > newWindowWidth / canvasWidth then
w = newWindowWidth
h = canvasHeight * newWindowWidth / canvasWidth
Expand All @@ -589,7 +586,7 @@ function Game:updateCanvasPositionAndScale(newWindowWidth, newWindowHeight)
local newScale = 0.5
for i= #availableScales, 1, -1 do
local scale = availableScales[i]
if (newWindowWidth >= self.globalCanvas:getWidth() * scale and newWindowHeight >= self.globalCanvas:getHeight() * scale) then
if (newWindowWidth >= love.graphics.getWidth() * scale and newWindowHeight >= love.graphics.getHeight() * scale) then
newScale = scale
break
end
Expand All @@ -610,7 +607,6 @@ function Game:refreshCanvasAndImagesForNewScale()
self:drawLoadingString(loc("ld_characters"))
coroutine.yield()

self.globalCanvas = love.graphics.newCanvas(GAME.globalCanvas:getWidth(), GAME.globalCanvas:getHeight(), {dpiscale=self:newCanvasSnappedScale()})
-- We need to reload all assets and fonts to get the new scaling info and filters

-- Reload theme to get the new resolution assets
Expand All @@ -629,7 +625,7 @@ end

-- Transform from window coordinates to game coordinates
function Game:transform_coordinates(x, y)
local newX, newY = (x - self.canvasX) / self.canvasXScale + self.globalCanvas:getWidth() / 2, (y - self.canvasY) / self.canvasYScale + self.globalCanvas:getHeight() / 2
local newX, newY = (x - self.canvasX) / self.canvasXScale + love.graphics.getWidth() / 2, (y - self.canvasY) / self.canvasYScale + love.graphics.getHeight() / 2
return newX, newY
end

Expand All @@ -638,10 +634,10 @@ function Game:drawLoadingString(loadingString)
local textMaxWidth = 300
local textHeight = 40
local x = 0
local y = consts.CANVAS_HEIGHT/2 - textHeight/2
local y = love.graphics.getHeight()/2 - textHeight/2
local backgroundPadding = 10
GraphicsUtil.drawRectangle("fill", consts.CANVAS_WIDTH / 2 - (textMaxWidth / 2) , y - backgroundPadding, textMaxWidth, textHeight, 0, 0, 0, 0.5)
GraphicsUtil.printf(loadingString, x, y, consts.CANVAS_WIDTH, "center", nil, nil, 10)
GraphicsUtil.drawRectangle("fill", love.graphics.getWidth() / 2 - (textMaxWidth / 2) , y - backgroundPadding, textMaxWidth, textHeight, 0, 0, 0, 0.5)
GraphicsUtil.printf(loadingString, x, y, love.graphics.getWidth(), "center", nil, nil, "big")
end

function Game:setLanguage(lang_code)
Expand All @@ -653,14 +649,19 @@ function Game:setLanguage(lang_code)
end
config.language_code = Localization.codes[Localization.lang_index]

local baseOffset = 0
if system.isMobileOS() then
baseOffset = 4
end

if themes[config.theme] and themes[config.theme].font and themes[config.theme].font.path then
GraphicsUtil.setGlobalFont(themes[config.theme].font.path, themes[config.theme].font.size, self:newCanvasSnappedScale())
GraphicsUtil.setGlobalFont(themes[config.theme].font.path, (themes[config.theme].font.size or 12) - 12 + baseOffset, self:newCanvasSnappedScale())
elseif config.language_code == "JP" then
GraphicsUtil.setGlobalFont("client/assets/fonts/jp.ttf", 14, self:newCanvasSnappedScale())
GraphicsUtil.setGlobalFont("client/assets/fonts/jp.ttf", 2 + baseOffset, self:newCanvasSnappedScale())
elseif config.language_code == "TH" then
GraphicsUtil.setGlobalFont("client/assets/fonts/th.otf", 14, self:newCanvasSnappedScale())
GraphicsUtil.setGlobalFont("client/assets/fonts/th.otf", 2 + baseOffset, self:newCanvasSnappedScale())
else
GraphicsUtil.setGlobalFont(nil, 12, self:newCanvasSnappedScale())
GraphicsUtil.setGlobalFont(nil, baseOffset, self:newCanvasSnappedScale())
end

Localization:refresh_global_strings()
Expand Down
2 changes: 1 addition & 1 deletion client/src/MatchParticipant.lua
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
local class = require("common.lib.class")
local consts = require("common.engine.consts")
local consts = require("client.src.consts")
local Signal = require("common.lib.signal")
local logger = require("common.lib.logger")
local CharacterLoader = require("client.src.mods.CharacterLoader")
Expand Down
2 changes: 1 addition & 1 deletion client/src/Player.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ local GameModes = require("common.data.GameModes")
local LevelPresets = require("common.data.LevelPresets")
local input = require("client.src.inputManager")
local MatchParticipant = require("client.src.MatchParticipant")
local consts = require("common.engine.consts")
local consts = require("client.src.consts")
local CharacterLoader = require("client.src.mods.CharacterLoader")
local PlayerStack = require("client.src.PlayerStack")
require("client.src.network.PlayerStack")
Expand Down
Loading