Änderungen: - Implementierung des neuen Routers für TaxiHighscore zur Verwaltung von Highscore-Daten. - Anpassung der Datenbankmodelle zur Unterstützung von TaxiHighscore-Associations. - Erweiterung der Vue-Komponenten zur Anzeige und Speicherung von Highscores im Taxi-Spiel. - Verbesserung der Statusanzeige im AppHeader zur besseren Benutzerinteraktion. Diese Anpassungen erweitern die Spielmechanik und Benutzererfahrung, indem sie die Verwaltung von Highscores integrieren und die Benutzeroberfläche optimieren.
101 lines
2.2 KiB
JavaScript
101 lines
2.2 KiB
JavaScript
import { DataTypes } from 'sequelize';
|
|
import { sequelize } from '../../utils/sequelize.js';
|
|
|
|
const TaxiHighscore = sequelize.define('TaxiHighscore', {
|
|
id: {
|
|
type: DataTypes.INTEGER,
|
|
primaryKey: true,
|
|
autoIncrement: true
|
|
},
|
|
userId: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: true, // Kann null sein, falls User gelöscht wird
|
|
references: {
|
|
model: {
|
|
tableName: 'user',
|
|
schema: 'community'
|
|
},
|
|
key: 'id'
|
|
}
|
|
},
|
|
nickname: {
|
|
type: DataTypes.STRING(100),
|
|
allowNull: true, // Kann null sein, falls User gelöscht wird
|
|
comment: 'Nickname zum Zeitpunkt des Spiels - bleibt erhalten wenn User gelöscht wird'
|
|
},
|
|
passengersDelivered: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: false,
|
|
defaultValue: 0,
|
|
comment: 'Anzahl der abgelieferten Passagiere'
|
|
},
|
|
playtime: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: false,
|
|
defaultValue: 0,
|
|
comment: 'Spielzeit in Sekunden'
|
|
},
|
|
points: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: false,
|
|
defaultValue: 0,
|
|
comment: 'Erreichte Punkte'
|
|
},
|
|
mapId: {
|
|
type: DataTypes.INTEGER,
|
|
allowNull: true,
|
|
references: {
|
|
model: {
|
|
tableName: 'taxi_map',
|
|
schema: 'taxi'
|
|
},
|
|
key: 'id'
|
|
},
|
|
comment: 'ID der gespielten Map'
|
|
},
|
|
mapName: {
|
|
type: DataTypes.STRING(100),
|
|
allowNull: true,
|
|
comment: 'Name der Map zum Zeitpunkt des Spiels'
|
|
},
|
|
createdAt: {
|
|
type: DataTypes.DATE,
|
|
allowNull: false,
|
|
defaultValue: DataTypes.NOW
|
|
},
|
|
updatedAt: {
|
|
type: DataTypes.DATE,
|
|
allowNull: false,
|
|
defaultValue: DataTypes.NOW
|
|
}
|
|
}, {
|
|
tableName: 'taxi_highscores',
|
|
schema: 'taxi',
|
|
timestamps: true,
|
|
underscored: true,
|
|
indexes: [
|
|
{
|
|
fields: ['user_id']
|
|
},
|
|
{
|
|
fields: ['points']
|
|
},
|
|
{
|
|
fields: ['passengers_delivered']
|
|
},
|
|
{
|
|
fields: ['map_id']
|
|
},
|
|
{
|
|
fields: ['created_at']
|
|
},
|
|
{
|
|
unique: true,
|
|
fields: ['user_id', 'map_id'],
|
|
name: 'unique_user_map_highscore'
|
|
}
|
|
]
|
|
});
|
|
|
|
export default TaxiHighscore;
|