1
0

feat: add leaderboard resetting

This commit is contained in:
2026-06-06 16:39:22 +08:00
parent 9f98b2cf4e
commit 26ddf5379e
3 changed files with 26 additions and 5 deletions
@@ -15,6 +15,7 @@ Rectangle {
required property SqlLeaderboardModel leaderboard
required property ListModel rounds
required property GameService gameService
property QtObject selectedRound: rounds.get(0)
property bool selected: false
@@ -152,10 +153,23 @@ Rectangle {
}
}
}
Button {
Layout.alignment: Qt.AlignHCenter
// buttonColor: UIStyle.highlightColor
// buttonBorderColor: UIStyle.highlightBorderColor
// textColor: UIStyle.textColor
text: "Reset"
onClicked: {
root.gameService.resetScore()
leaderboard.select()
}
}
}
Item { Layout.fillHeight: true }
}
}
@@ -61,6 +61,7 @@ ApplicationWindow {
leaderboard: leaderboard
rounds: rounds
gameService: gameService
onRoundSelected: {
idleView.visible = false
ongoingView.start()
+9 -3
View File
@@ -8,12 +8,12 @@ from PySide6.QtCore import QObject, Signal, Slot, Property, QEnum, Qt, QCoreAppl
from PySide6.QtGui import QGuiApplication
from PySide6.QtQml import QQmlApplicationEngine, QmlElement
from PySide6.QtSql import QSqlTableModel, QSqlDatabase
from sqlalchemy import create_engine
from sqlalchemy import create_engine, update
from sqlalchemy.orm import Session
from star_resonance_tracer.proto.enum_chit_chat_channel_type_pb2 import ChitChatChannelType
from inventory_wars.game import Game
from inventory_wars.models import Base, ItemShare
from inventory_wars.models import Base, ItemShare, User
from inventory_wars.scoring import FirstGuess, FirstThenHighest, HighestAmount
from inventory_wars.state import GameOngoing, GameIdle
@@ -129,7 +129,13 @@ class GameService(QObject):
return self.m_revealed
@Slot()
def end(self):
def resetScore(self) -> None:
stmt = update(User).values(score=0)
session.execute(stmt)
session.commit()
@Slot()
def end(self) -> None:
self.m_game.end()
self.stateChanged.emit()