Änderung: Bereinigung und Optimierung der Taxi-Map-Logik

Änderungen:
- Entfernen der Methode `getMapByPosition` aus dem `TaxiMapController` und der zugehörigen Logik im `TaxiMapService`, um die Komplexität zu reduzieren.
- Anpassung der Datenbankmodelle für `TaxiMap`, `TaxiLevelStats` und `TaxiMapType`, um die Tabellennamen zu vereinheitlichen.
- Aktualisierung der Routen im `taxiMapRouter`, um die entfernte Funktionalität zu reflektieren.
- Hinzufügung von neuen Importen in `index.js`, um die neuen Modelle zu integrieren.
- Verbesserung der Benutzeroberfläche durch neue Erfolgsmeldungen in den Übersetzungsdateien für die Admin-Oberfläche.

Diese Anpassungen tragen zur Vereinfachung der Codebasis und zur Verbesserung der Benutzererfahrung im Taxi-Minispiel bei.
This commit is contained in:
Torsten Schulz (local)
2025-09-15 19:28:57 +02:00
parent f343509d85
commit 935928af75
12 changed files with 35 additions and 172 deletions

View File

@@ -8,7 +8,6 @@ class TaxiMapController {
this.getMapTypes = this.getMapTypes.bind(this);
this.getMaps = this.getMaps.bind(this);
this.getMapById = this.getMapById.bind(this);
this.getMapByPosition = this.getMapByPosition.bind(this);
this.getDefaultMap = this.getDefaultMap.bind(this);
this.createMap = this.createMap.bind(this);
this.updateMap = this.updateMap.bind(this);
@@ -52,24 +51,6 @@ class TaxiMapController {
}
}
async getMapByPosition(req, res) {
try {
const { positionX, positionY } = req.params;
const map = await this.taxiMapService.getMapByPosition(
parseInt(positionX),
parseInt(positionY)
);
if (!map) {
return res.status(404).json({ success: false, message: 'Map an Position nicht gefunden' });
}
res.json({ success: true, data: map });
} catch (error) {
console.error('Error getting map by position:', error);
res.status(500).json({ success: false, message: 'Fehler beim Laden der Map' });
}
}
async getDefaultMap(req, res) {
try {

View File

@@ -97,6 +97,8 @@ import Match3UserLevelProgress from './match3/userLevelProgress.js';
// — Taxi Minigame —
import { TaxiGameState, TaxiLevelStats } from './taxi/index.js';
import TaxiMap from './taxi/taxiMap.js';
import TaxiMapType from './taxi/taxiMapType.js';
// — Politische Ämter (Politics) —
import PoliticalOfficeType from './falukant/type/political_office_type.js';
@@ -237,6 +239,8 @@ const models = {
// Taxi Minigame
TaxiGameState,
TaxiLevelStats,
TaxiMap,
TaxiMapType,
};
export default models;

View File

@@ -52,7 +52,7 @@ const TaxiGameState = sequelize.define('TaxiGameState', {
defaultValue: DataTypes.NOW
}
}, {
tableName: 'taxi_game_states',
tableName: 'taxi_game_state',
schema: 'taxi',
timestamps: true,
indexes: [

View File

@@ -56,7 +56,7 @@ const TaxiLevelStats = sequelize.define('TaxiLevelStats', {
defaultValue: DataTypes.NOW
}
}, {
tableName: 'taxi_level_stats',
tableName: 'taxi_level_stat',
schema: 'taxi',
timestamps: true,
indexes: [

View File

@@ -43,16 +43,6 @@ const TaxiMap = sequelize.define('TaxiMap', {
allowNull: false,
comment: '2D array of map type IDs for each tile position'
},
positionX: {
type: DataTypes.INTEGER,
allowNull: false,
comment: 'X position as continuous integer (1, 2, 3, ...)'
},
positionY: {
type: DataTypes.INTEGER,
allowNull: false,
comment: 'Y position as continuous integer (1, 2, 3, ...)'
},
isActive: {
type: DataTypes.BOOLEAN,
allowNull: false,
@@ -75,7 +65,7 @@ const TaxiMap = sequelize.define('TaxiMap', {
defaultValue: DataTypes.NOW
}
}, {
tableName: 'taxi_maps',
tableName: 'taxi_map',
schema: 'taxi',
timestamps: true,
indexes: [
@@ -88,13 +78,6 @@ const TaxiMap = sequelize.define('TaxiMap', {
{
fields: ['is_default']
},
{
fields: ['position_x', 'position_y']
},
{
unique: true,
fields: ['position_x', 'position_y']
}
]
});

View File

@@ -37,7 +37,7 @@ const TaxiMapType = sequelize.define('TaxiMapType', {
defaultValue: DataTypes.NOW
}
}, {
tableName: 'taxi_map_types',
tableName: 'taxi_map_type',
schema: 'taxi',
timestamps: true,
indexes: [

View File

@@ -14,7 +14,6 @@ router.get('/map-types', (req, res) => taxiMapController.getMapTypes(req, res));
// Maps routes
router.get('/maps', (req, res) => taxiMapController.getMaps(req, res));
router.get('/maps/default', (req, res) => taxiMapController.getDefaultMap(req, res));
router.get('/maps/position/:positionX/:positionY', (req, res) => taxiMapController.getMapByPosition(req, res));
router.get('/maps/:mapId', (req, res) => taxiMapController.getMapById(req, res));
// Map management routes (admin only - you might want to add admin middleware)

View File

@@ -34,7 +34,7 @@ class TaxiMapService extends BaseService {
model: TaxiMapType,
as: 'mapType'
}],
order: [['positionY', 'ASC'], ['positionX', 'ASC']]
order: [['name', 'ASC']]
});
return maps;
} catch (error) {
@@ -65,28 +65,6 @@ class TaxiMapService extends BaseService {
}
}
/**
* Holt eine Map nach Position
*/
async getMapByPosition(positionX, positionY) {
try {
const map = await TaxiMap.findOne({
where: {
positionX: positionX,
positionY: positionY,
isActive: true
},
include: [{
model: TaxiMapType,
as: 'mapType'
}]
});
return map;
} catch (error) {
console.error('Error getting map by position:', error);
throw error;
}
}
/**
* Holt die Standard-Map
@@ -231,38 +209,6 @@ class TaxiMapService extends BaseService {
* Erstellt eine Standard-Map
*/
async createDefaultMap() {
try {
// 8x8 Standard-Map mit verschiedenen Tile-Typen
const mapData = [
['cornerTopLeft', 'horizontal', 'horizontal', 'horizontal', 'horizontal', 'horizontal', 'horizontal', 'cornerTopRight'],
['vertical', 'cross', 'cross', 'cross', 'cross', 'cross', 'cross', 'vertical'],
['vertical', 'cross', 'cross', 'cross', 'cross', 'cross', 'cross', 'vertical'],
['vertical', 'cross', 'cross', 'cross', 'cross', 'cross', 'cross', 'vertical'],
['vertical', 'cross', 'cross', 'cross', 'cross', 'cross', 'cross', 'vertical'],
['vertical', 'cross', 'cross', 'cross', 'cross', 'cross', 'cross', 'vertical'],
['vertical', 'cross', 'cross', 'cross', 'cross', 'cross', 'cross', 'vertical'],
['cornerBottomLeft', 'horizontal', 'horizontal', 'horizontal', 'horizontal', 'horizontal', 'horizontal', 'cornerBottomRight']
];
const map = await TaxiMap.create({
name: 'Standard City Map',
description: 'A standard 8x8 city map with roads and intersections',
width: 8,
height: 8,
tileSize: 50,
mapTypeId: 1, // Assuming first map type
mapData: mapData,
positionX: 1,
positionY: 1,
isDefault: true,
isActive: true
});
return map;
} catch (error) {
console.error('Error creating default map:', error);
throw error;
}
}
}