Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
162 commits
Select commit Hold shift + click to select a range
ca6933a
Adds Field and Weapon to model
gorlaci Nov 7, 2025
d267ae0
Adds Player, Desert and image resources
gorlaci Nov 8, 2025
bda4ff4
Introduces initial game state model
gorlaci Nov 8, 2025
416b486
Fixes formatting
gorlaci Nov 8, 2025
31433c2
Introduces distinct models for desert and game state.
gorlaci Nov 9, 2025
de71e06
Remove some breaking dependencies
matetamasi Nov 9, 2025
9dd7300
chore: removed unnecessary step
notAnElephant Nov 13, 2025
8961f7f
Adds Navigation and Icons dependencies
gorlaci Nov 13, 2025
7ae22d8
Adds navigation and basic menu
gorlaci Nov 16, 2025
628366f
Track required plugins for project
gorlaci Nov 16, 2025
7be71bc
Added Compose Hot Reload
gorlaci Nov 23, 2025
74763ac
Bump to 1.0.0, remove unnecessary config from window
gorlaci Nov 25, 2025
fc87bfb
Trying and hoping
rpkrisz Nov 9, 2025
fd85180
Modifies model to use mutable objects
gorlaci Nov 11, 2025
38127bc
implement some functions
domahet Nov 16, 2025
26b543b
gamestate chekpurchases
user93482 Nov 16, 2025
f15e4d9
purchases does not requer price to be specified, it will calculate it…
user93482 Nov 16, 2025
8b99d87
fixed calculatePrices to account for multiple harvesters
user93482 Nov 16, 2025
6f2b727
implement harvester purchase
domahet Nov 16, 2025
f405b0e
In theory evrything
user93482 Nov 23, 2025
574ab16
Refractored GameState
user93482 Nov 30, 2025
81e9ed4
Modify calculatePower to include defender logic
user93482 Nov 24, 2025
2556260
modified expansions, to account for legion not useable in defense
user93482 Nov 24, 2025
dc187e6
Refactor calculatePower function parameters
user93482 Nov 25, 2025
9d5532a
Remove unused parameter from calculatePower calls
user93482 Nov 25, 2025
bb0d8b1
Fix typo
user93482 Nov 30, 2025
4c35484
Fixed typos
user93482 Nov 30, 2025
202175d
Fixed things requested by comments
user93482 Nov 30, 2025
ff78cc5
refactor expansion calculation
matetamasi Jan 13, 2026
0e500cb
Implement Supabase DB and auth, add team data
matetamasi Jan 17, 2026
1bbbdc2
Resolve PR review change requests
matetamasi Jan 17, 2026
11f5b2b
Add simple AuthStatus class
matetamasi Jan 17, 2026
81c9e37
Cleanup tracked files in the .idea folder
gorlaci Jan 25, 2026
8e9dfa5
Added `Desert` to database
gorlaci Jan 25, 2026
8686ebd
Add `desert_id` to `Game` and make database entities serializable
gorlaci Jan 25, 2026
646066e
Quick rename
gorlaci Jan 25, 2026
ef58830
WIP
gorlaci Dec 1, 2025
800698e
Implented layout, basic water and spice
gorlaci Dec 4, 2025
3c54472
Imported effective weapons and base locations from excel. Started nei…
user93482 Jan 18, 2026
ded71b2
Converting coordinates to the new system
gorlaci Jan 19, 2026
aee270a
Created neighbours logic, thus in theory it is done
user93482 Jan 25, 2026
4a053be
Created neighbours logic, thus in theory it is done
user93482 Jan 25, 2026
7e4cfaa
Added mountains, and resolved problems
user93482 Jan 25, 2026
716640c
Add bases to the edge of the map
gorlaci Jan 25, 2026
3589cb1
Fix formatting
gorlaci Jan 25, 2026
437025a
Removed empty fields from effective weapon map
gorlaci Jan 30, 2026
4f5239f
Stop tracking run configurations
gorlaci Jan 25, 2026
95cc7ae
Removed run configurations file
gorlaci Jan 30, 2026
c38c087
Add `name` property to `Desert`
gorlaci Jan 30, 2026
bf0afde
Only track external dependencies from .idea folder
gorlaci Jan 30, 2026
1ac4842
Use the same set of fields for calculating neighbours
gorlaci Feb 1, 2026
bd5808c
Only encode fieldIds on db side
gorlaci Feb 1, 2026
0cf76ba
Remove unused imports
gorlaci Feb 1, 2026
a8415de
Use correct table for GameStates in db
gorlaci Feb 1, 2026
cb1a3a1
Fix typo
gorlaci Feb 1, 2026
eb3276a
Add SerialName to fieldJsons field
gorlaci Feb 8, 2026
c6e66ac
Add not-null assertion to neighbour fields
gorlaci Feb 8, 2026
b7649d5
Screen for creating and viewing test data, minor fixes
matetamasi Feb 8, 2026
9fe0273
Fix desert
gorlaci Feb 8, 2026
d855ba8
Fixed shape
gorlaci Feb 8, 2026
a5e3264
Spice and water values imported
gorlaci Feb 8, 2026
b7c5eaa
Fix formatting
gorlaci Feb 8, 2026
4cc182d
Fixed shape
gorlaci Feb 8, 2026
da2d3ad
Add svg resources for map drawing
matetamasi Mar 1, 2026
93b5132
Added `getLatestGameStateByGameId()` and `getPlayerStepsByGameStateId()`
gorlaci Feb 15, 2026
47dd2ec
Refactor navigation
gorlaci Feb 15, 2026
ee2efae
nothing
user93482 Feb 15, 2026
31b3f42
random scheme
user93482 Feb 15, 2026
930af96
ability to make any shape
user93482 Feb 15, 2026
91af278
Added fonts, and custom button
user93482 Feb 22, 2026
9644918
Added fancyRectangle shape, and cleaned up
user93482 Mar 1, 2026
858996f
Untrack .idea files
gorlaci Mar 8, 2026
3c5b04d
Fix formatting
gorlaci Mar 8, 2026
5bd006e
Fix navigation
gorlaci Mar 8, 2026
268ad02
Delete unused screen
gorlaci Mar 8, 2026
457d305
Modify db scheme to avoid infinite recursion and track player_id for …
gorlaci May 10, 2026
76cc323
Change Player.id type to Int
gorlaci May 10, 2026
f6c6d00
Shows 12 player cards on initialization
Nov 9, 2025
7bae223
legördülő menü + stílus + mentés gomb
Nov 16, 2025
f97f68a
start viewmodel implementation
domahet Nov 23, 2025
ba35819
Eventek
Nov 30, 2025
0e80364
ViewModel: validation, enable/disable interactions dynamically - kész
Jan 25, 2026
1392862
commentben a validáció a sting hibára.
Feb 22, 2026
e711563
validációk és a picker WIP
Mar 8, 2026
1cf9e4e
merge conflict javítás
Mar 8, 2026
326d802
WIP desertek lekérése
Mar 8, 2026
df63140
Fix dropdown text field
matetamasi Mar 22, 2026
342fd70
Player id integer, auto-assigned
matetamasi May 10, 2026
96bb190
Starting field selectable from dropdown
matetamasi May 10, 2026
6426a72
Add validation for desert selection
matetamasi May 10, 2026
915eb8f
Single card to enter starting state for each player
matetamasi May 10, 2026
cfa6322
Team data entry, game creation in DB
matetamasi May 10, 2026
746cf33
Fix ktlint format
matetamasi May 14, 2026
5abff70
Enable game name assignment
domahet May 30, 2026
edbbf69
Tab navigation
gorlaci Feb 9, 2026
e882e16
WIP: player step input screen
matetamasi Feb 22, 2026
2f2dde1
WIP: player step input screen
matetamasi Mar 10, 2026
b68becd
WIP
gorlaci Mar 10, 2026
0020aac
Navigation
gorlaci Mar 14, 2026
61092cc
Can save turn to DB
gorlaci Mar 22, 2026
a23d773
WIP
matetamasi Apr 19, 2026
103a9bd
Only using flow for the steps
gorlaci Apr 19, 2026
4258d7b
Playerstep-ek külön flow-ban
gorlaci Apr 28, 2026
a5cd691
Filter playersteps on db side
gorlaci May 10, 2026
da5d4d6
Use RPC to save gamestates
gorlaci Jun 14, 2026
456d28f
Improve player step input UI
matetamasi Jun 14, 2026
11ddc2e
ez egy hatszöget arréb tud tolni, de nem oda, ahová szeretnénk
cstomi74 Nov 30, 2025
bd18e79
This code generates the coordinates of the vertices of the hexagons o…
cstomi74 Nov 30, 2025
3ff7dd6
Very basic svg generation
gorlaci Feb 1, 2026
20007e9
Set the size of the image
gorlaci Feb 8, 2026
36fc588
WIP
gorlaci Feb 8, 2026
3ac5dfc
Added spice and water values
gorlaci Feb 8, 2026
c6937a7
Refactor
gorlaci Feb 15, 2026
fca608d
Lines done
gorlaci Feb 15, 2026
b959874
Coordinate text done
gorlaci Feb 15, 2026
99294cb
Add correct SVGs and template for usage
matetamasi Mar 22, 2026
79293d8
Background working
gorlaci Mar 22, 2026
8b4b31e
Water and spice text
gorlaci Mar 29, 2026
82ec77a
WIP weapon icons
gorlaci May 10, 2026
e2ae2df
Move to util package
gorlaci May 10, 2026
eed75c8
weapon icons
gorlaci May 10, 2026
1c139f5
WIP spice icon
gorlaci May 10, 2026
8f95e9c
Ikonok helyesen forgatva, de még nem jó helyen
gorlaci Jun 14, 2026
d37040d
térkép generálás működik, csapat jelölőket kéne még felrakni
gorlaci Jun 19, 2026
0d72c1a
harvester pirosítás
gorlaci Jun 19, 2026
88d79a1
játékos jelölők
gorlaci Jun 20, 2026
d01d578
csak egyszer lehet erőforrást betölteni
gorlaci Jun 20, 2026
16baceb
Navigation
gorlaci Mar 14, 2026
49d6012
Basic UI and state dataclass for step creation
matetamasi Jan 23, 2026
251b307
A main menu alapvetően szerintem el van rendezve, magán a kinézetén k…
cstomi74 Feb 25, 2026
8a2a18b
A statisztikákon kívül minden el van rendezve a képernyőn, és ebben a…
cstomi74 Mar 1, 2026
4b86432
Mamási machináció után.
cstomi74 Mar 8, 2026
dc32734
Laci machinációi
gorlaci Jun 14, 2026
504f1ed
WIP
cstomi74 Jun 14, 2026
9de30f1
Minimális főmenü
gorlaci Jun 19, 2026
2249daa
login
gorlaci Jun 19, 2026
a5d2bde
rebase utáni quick fix
gorlaci Jun 20, 2026
06bbc23
fix formatting
gorlaci Jun 20, 2026
2b574f5
add publish workflow
gorlaci Jun 20, 2026
ca4d695
svg mókolás
gorlaci Jun 20, 2026
8c77206
lehet linket megnyitni
gorlaci Jun 20, 2026
1c9e49c
Implement SVG upload & download
matetamasi Jun 20, 2026
f657bf3
field validation fix
gorlaci Jun 20, 2026
03f132f
csak a db felé folyik player step inputból az adat
gorlaci Jun 20, 2026
d9b18b3
Game logic fixek
gorlaci Jun 20, 2026
a454376
game unselect és WIP
gorlaci Jun 20, 2026
11fc3fd
launch helyett async
gorlaci Jun 20, 2026
5aeaad5
külön coroutine scope
gorlaci Jun 20, 2026
f00774b
Add resource table view
matetamasi Jun 21, 2026
a4626ae
Fix stuck game selection state on navigation
matetamasi Jun 21, 2026
619eecd
Add top app bar navigation, improve main menu UI
matetamasi Jun 22, 2026
576d36d
Improve init validation & visibility
matetamasi Jun 22, 2026
ea18672
Display step input validation hover text
matetamasi Jun 22, 2026
32476b8
Remove unused Statisztika button
gorlaci Jun 24, 2026
17d63ec
Move files
gorlaci Jun 24, 2026
e72be25
Delete obsolete screen
gorlaci Jun 24, 2026
059b3f1
Move files part 2
gorlaci Jun 24, 2026
2db1503
Add map download to inventory screen
gorlaci Jun 24, 2026
e2adfbf
Fix formatting
gorlaci Jun 24, 2026
fb8d2d3
Fix formatting
gorlaci Jun 24, 2026
bd06fa0
Web icon
gorlaci Jun 25, 2026
e41f197
Change login redirect
gorlaci Jun 25, 2026
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
46 changes: 46 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Publish web page

on:
push:
branches: [ "release" ]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

jobs:
build:

runs-on: ubuntu-latest

permissions:
contents: read
pages: write
id-token: write

steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v6

- name: Setup Java
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: 17

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6

- name: Make gradlew executable
run: chmod +x gradlew

- name: Build web artifacts
run: ./gradlew wasmJsBrowserDistribution

- name: Upload Artifact
uses: actions/upload-pages-artifact@v5
with:
path: composeApp/build/dist/wasmJs/productionExecutable/

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v5
9 changes: 8 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
xcuserdata
!src/**/build/
local.properties
.idea
.DS_Store
captures
.externalNativeBuild
Expand All @@ -17,3 +16,11 @@ captures
!*.xcworkspace/contents.xcworkspacedata
**/xcshareddata/WorkspaceSettings.xcsettings
node_modules/

# IntelliJ files
.idea/
!.idea/externalDependencies.xml

# Nix
.direnv
.envrc
8 changes: 8 additions & 0 deletions .idea/artifacts/composeApp_js.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/artifacts/composeApp_jvm.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/artifacts/composeApp_wasm_js.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions .idea/externalDependencies.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,5 @@ plugins {
alias(libs.plugins.kotlinMultiplatform) apply false
alias(libs.plugins.googleServices) apply false
alias(libs.plugins.ktlint) apply false
kotlin("plugin.serialization") version "2.3.0" apply false
}
2 changes: 1 addition & 1 deletion composeApp/.editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ ktlint_class_signature_rule_force_multiline_when_parameter_count_greater_or_equa
ktlint_code_style = android_studio
ktlint_enum_entry_name_casing = upper_or_camel_cases
ktlint_function_signature_body_expression_wrapping = default
ktlint_function_signature_rule_force_multiline_when_parameter_count_greater_or_equal_than = unset
ktlint_function_signature_rule_force_multiline_when_parameter_count_greater_or_equal_than = 2
ktlint_ignore_back_ticked_identifier = false
ktlint_property_naming_constant_naming = screaming_snake_case
max_line_length = 100
Expand Down
60 changes: 60 additions & 0 deletions composeApp/.idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

55 changes: 32 additions & 23 deletions composeApp/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jlleitschuh.gradle.ktlint.reporter.ReporterType

plugins {
alias(libs.plugins.kotlinMultiplatform)
Expand All @@ -11,6 +10,7 @@ plugins {
alias(libs.plugins.composeHotReload)
alias(libs.plugins.googleServices)
alias(libs.plugins.ktlint)
alias(libs.plugins.serialization)
}

kotlin {
Expand Down Expand Up @@ -47,6 +47,7 @@ kotlin {
androidMain.dependencies {
implementation(compose.preview)
implementation(libs.androidx.activity.compose)
implementation(libs.ktor.client.cio)
}
commonMain.dependencies {
implementation(compose.runtime)
Expand All @@ -55,42 +56,50 @@ kotlin {
implementation(compose.ui)
implementation(compose.components.resources)
implementation(compose.components.uiToolingPreview)
implementation(libs.kotlinx.coroutines.core)
implementation(libs.androidx.lifecycle.viewmodelCompose)
implementation(libs.androidx.lifecycle.runtimeCompose)
implementation(libs.androidx.navigation.compose)
implementation(libs.androidx.material.icons.extended)
implementation(project.dependencies.platform(libs.firebase.bom))
implementation(libs.firebase.auth)
implementation(libs.firebase.firestore)
implementation(libs.navigation.compose)
implementation(libs.material.icons.extended)
implementation(
project.dependencies.platform(libs.supabase.bom),
)
implementation(libs.supabase.auth)
implementation(libs.supabase.auth.compose)
implementation(libs.supabase.storage)
implementation(libs.supabase.realtime)
implementation(libs.supabase.postgrest)
implementation(libs.kotlinx.serialization)
}
commonTest.dependencies {
implementation(libs.kotlin.test)
}
jvmMain.dependencies {
implementation(compose.desktop.currentOs)
implementation(libs.kotlinx.coroutinesSwing)
implementation(libs.kotlinx.coroutines.swing)
implementation(libs.ktor.client.cio)
}
jsMain {
dependencies {
implementation(libs.ktor.client.js)
}
}
iosMain {
dependencies {
implementation(libs.ktor.client.darwin)
}
}
}
}

tasks.getByPath("preBuild").dependsOn("ktlintFormat")
jvmToolchain(21)
}

subprojects {
apply(plugin = "org.jlleitschuh.gradle.ktlint")
configure<org.jlleitschuh.gradle.ktlint.KtlintExtension> {
version.set("1.7.1")
debug.set(true)
verbose.set(true)
outputToConsole.set(true)
outputColorName.set("RED")
ignoreFailures.set(false)
reporters {
reporter(ReporterType.PLAIN)
reporter(ReporterType.CHECKSTYLE)
}
}
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>().configureEach {
compilerOptions.jvmTarget.set(JvmTarget.JVM_21)
}

tasks.getByPath("preBuild").dependsOn("ktlintFormat")

android {
namespace = "hu.mokegyesulet.it.dunestrat"
compileSdk = libs.versions.android.compileSdk.get().toInt()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
package hu.mokegyesulet.it.dunestrat

import android.os.Build
import io.github.jan.supabase.annotations.SupabaseExperimental
import io.github.jan.supabase.auth.UrlLauncher

class AndroidPlatform : Platform {
override val name: String = "Android ${Build.VERSION.SDK_INT}"
override fun openUrl(url: String) {
// Supabase Auth handles this natively or via dedicated launcher on Android
}
}

actual fun getPlatform(): Platform = AndroidPlatform()

@OptIn(SupabaseExperimental::class)
actual fun getUrlLauncher(): UrlLauncher? = null
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package hu.mokegyesulet.it.dunestrat.util.drawmap

import android.content.Intent
import androidx.core.net.toUri

actual fun openURL(url: String) {
val intent = Intent(Intent.ACTION_VIEW, url.toUri()).apply {
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
}
TODO("Kéne egy Context-et szerezni és megnyitni vele az intentet")
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading