Änderung: Hinzufügung des Taxi-Minispiels und zugehöriger Funktionen
Änderungen: - Integration des Taxi-Minispiels mit neuen Routen und Komponenten im Backend und Frontend. - Erstellung von Modellen und Datenbank-Schemas für das Taxi-Spiel, einschließlich TaxiGameState, TaxiLevelStats und TaxiMap. - Erweiterung der Navigationsstruktur und der Benutzeroberfläche, um das Taxi-Spiel und die zugehörigen Tools zu unterstützen. - Aktualisierung der Übersetzungen für das Taxi-Minispiel in Deutsch und Englisch. Diese Anpassungen erweitern die Funktionalität der Anwendung um ein neues Minispiel und verbessern die Benutzererfahrung durch neue Features und Inhalte.
@@ -13,6 +13,8 @@ import falukantRouter from './routers/falukantRouter.js';
|
|||||||
import friendshipRouter from './routers/friendshipRouter.js';
|
import friendshipRouter from './routers/friendshipRouter.js';
|
||||||
import blogRouter from './routers/blogRouter.js';
|
import blogRouter from './routers/blogRouter.js';
|
||||||
import match3Router from './routers/match3Router.js';
|
import match3Router from './routers/match3Router.js';
|
||||||
|
import taxiRouter from './routers/taxiRouter.js';
|
||||||
|
import taxiMapRouter from './routers/taxiMapRouter.js';
|
||||||
import cors from 'cors';
|
import cors from 'cors';
|
||||||
import './jobs/sessionCleanup.js';
|
import './jobs/sessionCleanup.js';
|
||||||
|
|
||||||
@@ -39,6 +41,8 @@ app.use('/api/navigation', navigationRouter);
|
|||||||
app.use('/api/settings', settingsRouter);
|
app.use('/api/settings', settingsRouter);
|
||||||
app.use('/api/admin', adminRouter);
|
app.use('/api/admin', adminRouter);
|
||||||
app.use('/api/match3', match3Router);
|
app.use('/api/match3', match3Router);
|
||||||
|
app.use('/api/taxi', taxiRouter);
|
||||||
|
app.use('/api/taxi-maps', taxiMapRouter);
|
||||||
app.use('/images', express.static(path.join(__dirname, '../frontend/public/images')));
|
app.use('/images', express.static(path.join(__dirname, '../frontend/public/images')));
|
||||||
app.use('/api/contact', contactRouter);
|
app.use('/api/contact', contactRouter);
|
||||||
app.use('/api/socialnetwork', socialnetworkRouter);
|
app.use('/api/socialnetwork', socialnetworkRouter);
|
||||||
|
|||||||
@@ -174,6 +174,10 @@ const menuStructure = {
|
|||||||
match3: {
|
match3: {
|
||||||
visible: ["all"],
|
visible: ["all"],
|
||||||
path: "/minigames/match3"
|
path: "/minigames/match3"
|
||||||
|
},
|
||||||
|
taxi: {
|
||||||
|
visible: ["all"],
|
||||||
|
path: "/minigames/taxi"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -274,6 +278,10 @@ const menuStructure = {
|
|||||||
match3: {
|
match3: {
|
||||||
visible: ["mainadmin", "match3"],
|
visible: ["mainadmin", "match3"],
|
||||||
path: "/admin/minigames/match3"
|
path: "/admin/minigames/match3"
|
||||||
|
},
|
||||||
|
taxiTools: {
|
||||||
|
visible: ["mainadmin", "taxi"],
|
||||||
|
path: "/admin/minigames/taxi-tools"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
144
backend/controllers/taxiController.js
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
import TaxiService from '../services/taxiService.js';
|
||||||
|
|
||||||
|
function extractHashedUserId(req) {
|
||||||
|
return req.headers?.userid;
|
||||||
|
}
|
||||||
|
|
||||||
|
class TaxiController {
|
||||||
|
constructor() {
|
||||||
|
this.taxiService = new TaxiService();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Spielstand laden
|
||||||
|
async getGameState(req, res) {
|
||||||
|
try {
|
||||||
|
const hashedUserId = extractHashedUserId(req);
|
||||||
|
const gameState = await this.taxiService.getGameState(hashedUserId);
|
||||||
|
res.json({ success: true, data: gameState });
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error getting taxi game state:', error);
|
||||||
|
res.status(500).json({ success: false, message: 'Fehler beim Laden des Spielstands' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Spielstand speichern
|
||||||
|
async saveGameState(req, res) {
|
||||||
|
try {
|
||||||
|
const userId = extractHashedUserId(req);
|
||||||
|
const { level, score, money, passengersDelivered, fuel } = req.body;
|
||||||
|
|
||||||
|
const gameState = await this.taxiService.saveGameState(userId, {
|
||||||
|
level,
|
||||||
|
score,
|
||||||
|
money,
|
||||||
|
passengersDelivered,
|
||||||
|
fuel
|
||||||
|
});
|
||||||
|
|
||||||
|
res.json({ success: true, data: gameState });
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error saving taxi game state:', error);
|
||||||
|
res.status(500).json({ success: false, message: 'Fehler beim Speichern des Spielstands' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Level-Statistiken abrufen
|
||||||
|
async getLevelStats(req, res) {
|
||||||
|
try {
|
||||||
|
const userId = extractHashedUserId(req);
|
||||||
|
const { level } = req.params;
|
||||||
|
|
||||||
|
const stats = await this.taxiService.getLevelStats(userId, parseInt(level));
|
||||||
|
res.json({ success: true, data: stats });
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error getting level stats:', error);
|
||||||
|
res.status(500).json({ success: false, message: 'Fehler beim Laden der Level-Statistiken' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bestenliste abrufen
|
||||||
|
async getLeaderboard(req, res) {
|
||||||
|
try {
|
||||||
|
const { type = 'score', limit = 10 } = req.query;
|
||||||
|
const leaderboard = await this.taxiService.getLeaderboard(type, parseInt(limit));
|
||||||
|
res.json({ success: true, data: leaderboard });
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error getting leaderboard:', error);
|
||||||
|
res.status(500).json({ success: false, message: 'Fehler beim Laden der Bestenliste' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Spiel beenden und Punkte verarbeiten
|
||||||
|
async finishGame(req, res) {
|
||||||
|
try {
|
||||||
|
const userId = extractHashedUserId(req);
|
||||||
|
const { finalScore, finalMoney, passengersDelivered, level } = req.body;
|
||||||
|
|
||||||
|
const result = await this.taxiService.finishGame(userId, {
|
||||||
|
finalScore,
|
||||||
|
finalMoney,
|
||||||
|
passengersDelivered,
|
||||||
|
level
|
||||||
|
});
|
||||||
|
|
||||||
|
res.json({ success: true, data: result });
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error finishing game:', error);
|
||||||
|
res.status(500).json({ success: false, message: 'Fehler beim Beenden des Spiels' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Level freischalten
|
||||||
|
async unlockLevel(req, res) {
|
||||||
|
try {
|
||||||
|
const userId = extractHashedUserId(req);
|
||||||
|
const { level } = req.body;
|
||||||
|
|
||||||
|
const result = await this.taxiService.unlockLevel(userId, level);
|
||||||
|
res.json({ success: true, data: result });
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error unlocking level:', error);
|
||||||
|
res.status(500).json({ success: false, message: 'Fehler beim Freischalten des Levels' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Spieler-Statistiken abrufen
|
||||||
|
async getPlayerStats(req, res) {
|
||||||
|
try {
|
||||||
|
const userId = extractHashedUserId(req);
|
||||||
|
const stats = await this.taxiService.getPlayerStats(userId);
|
||||||
|
res.json({ success: true, data: stats });
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error getting player stats:', error);
|
||||||
|
res.status(500).json({ success: false, message: 'Fehler beim Laden der Spieler-Statistiken' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Level zurücksetzen
|
||||||
|
async resetLevel(req, res) {
|
||||||
|
try {
|
||||||
|
const userId = extractHashedUserId(req);
|
||||||
|
const { level } = req.body;
|
||||||
|
|
||||||
|
const result = await this.taxiService.resetLevel(userId, level);
|
||||||
|
res.json({ success: true, data: result });
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error resetting level:', error);
|
||||||
|
res.status(500).json({ success: false, message: 'Fehler beim Zurücksetzen des Levels' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Alle Spielstände zurücksetzen
|
||||||
|
async resetAllProgress(req, res) {
|
||||||
|
try {
|
||||||
|
const userId = extractHashedUserId(req);
|
||||||
|
const result = await this.taxiService.resetAllProgress(userId);
|
||||||
|
res.json({ success: true, data: result });
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error resetting all progress:', error);
|
||||||
|
res.status(500).json({ success: false, message: 'Fehler beim Zurücksetzen aller Fortschritte' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default TaxiController;
|
||||||
144
backend/controllers/taxiMapController.js
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
import TaxiMapService from '../services/taxiMapService.js';
|
||||||
|
|
||||||
|
class TaxiMapController {
|
||||||
|
constructor() {
|
||||||
|
this.taxiMapService = new TaxiMapService();
|
||||||
|
|
||||||
|
// Bind all methods to the class instance
|
||||||
|
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);
|
||||||
|
this.deleteMap = this.deleteMap.bind(this);
|
||||||
|
this.setDefaultMap = this.setDefaultMap.bind(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
async getMapTypes(req, res) {
|
||||||
|
try {
|
||||||
|
const mapTypes = await this.taxiMapService.getMapTypes();
|
||||||
|
res.json({ success: true, data: mapTypes });
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error getting map types:', error);
|
||||||
|
res.status(500).json({ success: false, message: 'Fehler beim Laden der Map-Typen' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getMaps(req, res) {
|
||||||
|
try {
|
||||||
|
const maps = await this.taxiMapService.getMaps();
|
||||||
|
res.json({ success: true, data: maps });
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error getting maps:', error);
|
||||||
|
res.status(500).json({ success: false, message: 'Fehler beim Laden der Maps' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getMapById(req, res) {
|
||||||
|
try {
|
||||||
|
const { mapId } = req.params;
|
||||||
|
const map = await this.taxiMapService.getMapById(mapId);
|
||||||
|
|
||||||
|
if (!map) {
|
||||||
|
return res.status(404).json({ success: false, message: 'Map nicht gefunden' });
|
||||||
|
}
|
||||||
|
|
||||||
|
res.json({ success: true, data: map });
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error getting map by ID:', error);
|
||||||
|
res.status(500).json({ success: false, message: 'Fehler beim Laden der Map' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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 {
|
||||||
|
const map = await this.taxiMapService.getDefaultMap();
|
||||||
|
|
||||||
|
if (!map) {
|
||||||
|
return res.status(404).json({ success: false, message: 'Keine Standard-Map gefunden' });
|
||||||
|
}
|
||||||
|
|
||||||
|
res.json({ success: true, data: map });
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error getting default map:', error);
|
||||||
|
res.status(500).json({ success: false, message: 'Fehler beim Laden der Standard-Map' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async createMap(req, res) {
|
||||||
|
try {
|
||||||
|
const mapData = req.body;
|
||||||
|
const map = await this.taxiMapService.createMap(mapData);
|
||||||
|
res.status(201).json({ success: true, data: map });
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error creating map:', error);
|
||||||
|
res.status(500).json({ success: false, message: 'Fehler beim Erstellen der Map' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async updateMap(req, res) {
|
||||||
|
try {
|
||||||
|
const { mapId } = req.params;
|
||||||
|
const updateData = req.body;
|
||||||
|
const map = await this.taxiMapService.updateMap(mapId, updateData);
|
||||||
|
res.json({ success: true, data: map });
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error updating map:', error);
|
||||||
|
if (error.message === 'Map not found') {
|
||||||
|
return res.status(404).json({ success: false, message: 'Map nicht gefunden' });
|
||||||
|
}
|
||||||
|
res.status(500).json({ success: false, message: 'Fehler beim Aktualisieren der Map' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async deleteMap(req, res) {
|
||||||
|
try {
|
||||||
|
const { mapId } = req.params;
|
||||||
|
await this.taxiMapService.deleteMap(mapId);
|
||||||
|
res.json({ success: true, message: 'Map erfolgreich gelöscht' });
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error deleting map:', error);
|
||||||
|
if (error.message === 'Map not found') {
|
||||||
|
return res.status(404).json({ success: false, message: 'Map nicht gefunden' });
|
||||||
|
}
|
||||||
|
res.status(500).json({ success: false, message: 'Fehler beim Löschen der Map' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async setDefaultMap(req, res) {
|
||||||
|
try {
|
||||||
|
const { mapId } = req.params;
|
||||||
|
await this.taxiMapService.setDefaultMap(mapId);
|
||||||
|
res.json({ success: true, message: 'Standard-Map erfolgreich gesetzt' });
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error setting default map:', error);
|
||||||
|
if (error.message === 'Map not found') {
|
||||||
|
return res.status(404).json({ success: false, message: 'Map nicht gefunden' });
|
||||||
|
}
|
||||||
|
res.status(500).json({ success: false, message: 'Fehler beim Setzen der Standard-Map' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default TaxiMapController;
|
||||||
@@ -102,6 +102,10 @@ import Match3Level from './match3/level.js';
|
|||||||
import Objective from './match3/objective.js';
|
import Objective from './match3/objective.js';
|
||||||
import UserProgress from './match3/userProgress.js';
|
import UserProgress from './match3/userProgress.js';
|
||||||
import UserLevelProgress from './match3/userLevelProgress.js';
|
import UserLevelProgress from './match3/userLevelProgress.js';
|
||||||
|
import TaxiGameState from './taxi/taxiGameState.js';
|
||||||
|
import TaxiLevelStats from './taxi/taxiLevelStats.js';
|
||||||
|
import TaxiMapType from './taxi/taxiMapType.js';
|
||||||
|
import TaxiMap from './taxi/taxiMap.js';
|
||||||
|
|
||||||
export default function setupAssociations() {
|
export default function setupAssociations() {
|
||||||
// RoomType 1:n Room
|
// RoomType 1:n Room
|
||||||
@@ -786,4 +790,15 @@ export default function setupAssociations() {
|
|||||||
UserLevelProgress.belongsTo(UserProgress, { foreignKey: 'userProgressId', as: 'userProgress' });
|
UserLevelProgress.belongsTo(UserProgress, { foreignKey: 'userProgressId', as: 'userProgress' });
|
||||||
Match3Level.hasMany(UserLevelProgress, { foreignKey: 'levelId', as: 'userLevelProgress' });
|
Match3Level.hasMany(UserLevelProgress, { foreignKey: 'levelId', as: 'userLevelProgress' });
|
||||||
UserLevelProgress.belongsTo(Match3Level, { foreignKey: 'levelId', as: 'level' });
|
UserLevelProgress.belongsTo(Match3Level, { foreignKey: 'levelId', as: 'level' });
|
||||||
|
|
||||||
|
// Taxi Game associations
|
||||||
|
TaxiGameState.belongsTo(User, { foreignKey: 'userId', as: 'user' });
|
||||||
|
User.hasOne(TaxiGameState, { foreignKey: 'userId', as: 'taxiGameState' });
|
||||||
|
|
||||||
|
TaxiLevelStats.belongsTo(User, { foreignKey: 'userId', as: 'user' });
|
||||||
|
User.hasMany(TaxiLevelStats, { foreignKey: 'userId', as: 'taxiLevelStats' });
|
||||||
|
|
||||||
|
// Taxi Map associations
|
||||||
|
TaxiMap.belongsTo(TaxiMapType, { foreignKey: 'mapTypeId', as: 'mapType' });
|
||||||
|
TaxiMapType.hasMany(TaxiMap, { foreignKey: 'mapTypeId', as: 'maps' });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -95,6 +95,9 @@ import Match3Objective from './match3/objective.js';
|
|||||||
import Match3UserProgress from './match3/userProgress.js';
|
import Match3UserProgress from './match3/userProgress.js';
|
||||||
import Match3UserLevelProgress from './match3/userLevelProgress.js';
|
import Match3UserLevelProgress from './match3/userLevelProgress.js';
|
||||||
|
|
||||||
|
// — Taxi Minigame —
|
||||||
|
import { TaxiGameState, TaxiLevelStats } from './taxi/index.js';
|
||||||
|
|
||||||
// — Politische Ämter (Politics) —
|
// — Politische Ämter (Politics) —
|
||||||
import PoliticalOfficeType from './falukant/type/political_office_type.js';
|
import PoliticalOfficeType from './falukant/type/political_office_type.js';
|
||||||
import PoliticalOfficeRequirement from './falukant/predefine/political_office_prerequisite.js';
|
import PoliticalOfficeRequirement from './falukant/predefine/political_office_prerequisite.js';
|
||||||
@@ -230,6 +233,10 @@ const models = {
|
|||||||
Match3Objective,
|
Match3Objective,
|
||||||
Match3UserProgress,
|
Match3UserProgress,
|
||||||
Match3UserLevelProgress,
|
Match3UserLevelProgress,
|
||||||
|
|
||||||
|
// Taxi Minigame
|
||||||
|
TaxiGameState,
|
||||||
|
TaxiLevelStats,
|
||||||
};
|
};
|
||||||
|
|
||||||
export default models;
|
export default models;
|
||||||
|
|||||||
6
backend/models/taxi/index.js
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
import TaxiGameState from './taxiGameState.js';
|
||||||
|
import TaxiLevelStats from './taxiLevelStats.js';
|
||||||
|
import TaxiMapType from './taxiMapType.js';
|
||||||
|
import TaxiMap from './taxiMap.js';
|
||||||
|
|
||||||
|
export { TaxiGameState, TaxiLevelStats, TaxiMapType, TaxiMap };
|
||||||
75
backend/models/taxi/taxiGameState.js
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
import { DataTypes } from 'sequelize';
|
||||||
|
import { sequelize } from '../../utils/sequelize.js';
|
||||||
|
|
||||||
|
const TaxiGameState = sequelize.define('TaxiGameState', {
|
||||||
|
id: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
primaryKey: true,
|
||||||
|
autoIncrement: true
|
||||||
|
},
|
||||||
|
userId: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
currentLevel: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: 1
|
||||||
|
},
|
||||||
|
totalScore: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: 0
|
||||||
|
},
|
||||||
|
totalMoney: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: 0
|
||||||
|
},
|
||||||
|
totalPassengersDelivered: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: 0
|
||||||
|
},
|
||||||
|
unlockedLevels: {
|
||||||
|
type: DataTypes.JSON,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: [1]
|
||||||
|
},
|
||||||
|
achievements: {
|
||||||
|
type: DataTypes.JSON,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: []
|
||||||
|
},
|
||||||
|
createdAt: {
|
||||||
|
type: DataTypes.DATE,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: DataTypes.NOW
|
||||||
|
},
|
||||||
|
updatedAt: {
|
||||||
|
type: DataTypes.DATE,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: DataTypes.NOW
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
tableName: 'taxi_game_states',
|
||||||
|
schema: 'taxi',
|
||||||
|
timestamps: true,
|
||||||
|
indexes: [
|
||||||
|
{
|
||||||
|
unique: true,
|
||||||
|
fields: ['user_id']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fields: ['total_score']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fields: ['total_money']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fields: ['total_passengers_delivered']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
export default TaxiGameState;
|
||||||
79
backend/models/taxi/taxiLevelStats.js
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
import { DataTypes } from 'sequelize';
|
||||||
|
import { sequelize } from '../../utils/sequelize.js';
|
||||||
|
|
||||||
|
const TaxiLevelStats = sequelize.define('TaxiLevelStats', {
|
||||||
|
id: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
primaryKey: true,
|
||||||
|
autoIncrement: true
|
||||||
|
},
|
||||||
|
userId: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
level: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
bestScore: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: 0
|
||||||
|
},
|
||||||
|
bestMoney: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: 0
|
||||||
|
},
|
||||||
|
bestPassengersDelivered: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: 0
|
||||||
|
},
|
||||||
|
timesPlayed: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: 0
|
||||||
|
},
|
||||||
|
completed: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: false
|
||||||
|
},
|
||||||
|
playTime: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
allowNull: true,
|
||||||
|
comment: 'Play time in seconds'
|
||||||
|
},
|
||||||
|
createdAt: {
|
||||||
|
type: DataTypes.DATE,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: DataTypes.NOW
|
||||||
|
},
|
||||||
|
updatedAt: {
|
||||||
|
type: DataTypes.DATE,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: DataTypes.NOW
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
tableName: 'taxi_level_stats',
|
||||||
|
schema: 'taxi',
|
||||||
|
timestamps: true,
|
||||||
|
indexes: [
|
||||||
|
{
|
||||||
|
unique: true,
|
||||||
|
fields: ['user_id', 'level']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fields: ['level']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fields: ['best_score']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fields: ['completed']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
export default TaxiLevelStats;
|
||||||
101
backend/models/taxi/taxiMap.js
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
import { DataTypes } from 'sequelize';
|
||||||
|
import { sequelize } from '../../utils/sequelize.js';
|
||||||
|
|
||||||
|
const TaxiMap = sequelize.define('TaxiMap', {
|
||||||
|
id: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
primaryKey: true,
|
||||||
|
autoIncrement: true
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
type: DataTypes.STRING(100),
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
description: {
|
||||||
|
type: DataTypes.TEXT,
|
||||||
|
allowNull: true
|
||||||
|
},
|
||||||
|
width: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: 8,
|
||||||
|
comment: 'Map width in tiles'
|
||||||
|
},
|
||||||
|
height: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: 8,
|
||||||
|
comment: 'Map height in tiles'
|
||||||
|
},
|
||||||
|
tileSize: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: 50,
|
||||||
|
comment: 'Size of each tile in pixels'
|
||||||
|
},
|
||||||
|
mapTypeId: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
allowNull: false,
|
||||||
|
comment: 'Reference to TaxiMapType'
|
||||||
|
},
|
||||||
|
mapData: {
|
||||||
|
type: DataTypes.JSON,
|
||||||
|
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,
|
||||||
|
defaultValue: true
|
||||||
|
},
|
||||||
|
isDefault: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: false,
|
||||||
|
comment: 'Whether this is the default map for new games'
|
||||||
|
},
|
||||||
|
createdAt: {
|
||||||
|
type: DataTypes.DATE,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: DataTypes.NOW
|
||||||
|
},
|
||||||
|
updatedAt: {
|
||||||
|
type: DataTypes.DATE,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: DataTypes.NOW
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
tableName: 'taxi_maps',
|
||||||
|
schema: 'taxi',
|
||||||
|
timestamps: true,
|
||||||
|
indexes: [
|
||||||
|
{
|
||||||
|
fields: ['name']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fields: ['is_active']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fields: ['is_default']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fields: ['position_x', 'position_y']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
unique: true,
|
||||||
|
fields: ['position_x', 'position_y']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
export default TaxiMap;
|
||||||
57
backend/models/taxi/taxiMapType.js
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
import { DataTypes } from 'sequelize';
|
||||||
|
import { sequelize } from '../../utils/sequelize.js';
|
||||||
|
|
||||||
|
const TaxiMapType = sequelize.define('TaxiMapType', {
|
||||||
|
id: {
|
||||||
|
type: DataTypes.INTEGER,
|
||||||
|
primaryKey: true,
|
||||||
|
autoIncrement: true
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
type: DataTypes.STRING(50),
|
||||||
|
allowNull: false,
|
||||||
|
unique: true
|
||||||
|
},
|
||||||
|
description: {
|
||||||
|
type: DataTypes.TEXT,
|
||||||
|
allowNull: true
|
||||||
|
},
|
||||||
|
tileType: {
|
||||||
|
type: DataTypes.STRING(50),
|
||||||
|
allowNull: false,
|
||||||
|
comment: 'Type of tile: cornerBottomLeft, cornerBottomRight, cornerTopLeft, cornerTopRight, horizontal, vertical, cross, fuelHorizontal, fuelVertical, tLeft, tRight, tUp, tDown'
|
||||||
|
},
|
||||||
|
isActive: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: true
|
||||||
|
},
|
||||||
|
createdAt: {
|
||||||
|
type: DataTypes.DATE,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: DataTypes.NOW
|
||||||
|
},
|
||||||
|
updatedAt: {
|
||||||
|
type: DataTypes.DATE,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: DataTypes.NOW
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
tableName: 'taxi_map_types',
|
||||||
|
schema: 'taxi',
|
||||||
|
timestamps: true,
|
||||||
|
indexes: [
|
||||||
|
{
|
||||||
|
unique: true,
|
||||||
|
fields: ['name']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fields: ['tile_type']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fields: ['is_active']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
export default TaxiMapType;
|
||||||
26
backend/routers/taxiMapRouter.js
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
import express from 'express';
|
||||||
|
import TaxiMapController from '../controllers/taxiMapController.js';
|
||||||
|
import { authenticate } from '../middleware/authMiddleware.js';
|
||||||
|
|
||||||
|
const router = express.Router();
|
||||||
|
const taxiMapController = new TaxiMapController();
|
||||||
|
|
||||||
|
// All routes require authentication
|
||||||
|
router.use(authenticate);
|
||||||
|
|
||||||
|
// Map types routes
|
||||||
|
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)
|
||||||
|
router.post('/maps', (req, res) => taxiMapController.createMap(req, res));
|
||||||
|
router.put('/maps/:mapId', (req, res) => taxiMapController.updateMap(req, res));
|
||||||
|
router.delete('/maps/:mapId', (req, res) => taxiMapController.deleteMap(req, res));
|
||||||
|
router.post('/maps/:mapId/set-default', (req, res) => taxiMapController.setDefaultMap(req, res));
|
||||||
|
|
||||||
|
export default router;
|
||||||
30
backend/routers/taxiRouter.js
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
import express from 'express';
|
||||||
|
import TaxiController from '../controllers/taxiController.js';
|
||||||
|
import { authenticate } from '../middleware/authMiddleware.js';
|
||||||
|
|
||||||
|
const router = express.Router();
|
||||||
|
const taxiController = new TaxiController();
|
||||||
|
|
||||||
|
// Alle Routen erfordern Authentifizierung
|
||||||
|
router.use(authenticate);
|
||||||
|
|
||||||
|
// Spielstand-Routen
|
||||||
|
router.get('/game-state', (req, res) => taxiController.getGameState(req, res));
|
||||||
|
router.post('/game-state', (req, res) => taxiController.saveGameState(req, res));
|
||||||
|
|
||||||
|
// Level-Routen
|
||||||
|
router.get('/level/:level/stats', (req, res) => taxiController.getLevelStats(req, res));
|
||||||
|
router.post('/level/unlock', (req, res) => taxiController.unlockLevel(req, res));
|
||||||
|
router.post('/level/reset', (req, res) => taxiController.resetLevel(req, res));
|
||||||
|
|
||||||
|
// Spiel-Routen
|
||||||
|
router.post('/finish', (req, res) => taxiController.finishGame(req, res));
|
||||||
|
|
||||||
|
// Statistik-Routen
|
||||||
|
router.get('/leaderboard', (req, res) => taxiController.getLeaderboard(req, res));
|
||||||
|
router.get('/player-stats', (req, res) => taxiController.getPlayerStats(req, res));
|
||||||
|
|
||||||
|
// Reset-Routen
|
||||||
|
router.post('/reset-all', (req, res) => taxiController.resetAllProgress(req, res));
|
||||||
|
|
||||||
|
export default router;
|
||||||
269
backend/services/taxiMapService.js
Normal file
@@ -0,0 +1,269 @@
|
|||||||
|
import BaseService from './BaseService.js';
|
||||||
|
import TaxiMap from '../models/taxi/taxiMap.js';
|
||||||
|
import TaxiMapType from '../models/taxi/taxiMapType.js';
|
||||||
|
|
||||||
|
class TaxiMapService extends BaseService {
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holt alle verfügbaren Map-Typen
|
||||||
|
*/
|
||||||
|
async getMapTypes() {
|
||||||
|
try {
|
||||||
|
const mapTypes = await TaxiMapType.findAll({
|
||||||
|
where: { isActive: true },
|
||||||
|
order: [['name', 'ASC']]
|
||||||
|
});
|
||||||
|
return mapTypes;
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error getting map types:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holt alle verfügbaren Maps
|
||||||
|
*/
|
||||||
|
async getMaps() {
|
||||||
|
try {
|
||||||
|
const maps = await TaxiMap.findAll({
|
||||||
|
where: { isActive: true },
|
||||||
|
include: [{
|
||||||
|
model: TaxiMapType,
|
||||||
|
as: 'mapType'
|
||||||
|
}],
|
||||||
|
order: [['positionY', 'ASC'], ['positionX', 'ASC']]
|
||||||
|
});
|
||||||
|
return maps;
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error getting maps:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holt eine spezifische Map
|
||||||
|
*/
|
||||||
|
async getMapById(mapId) {
|
||||||
|
try {
|
||||||
|
const map = await TaxiMap.findOne({
|
||||||
|
where: {
|
||||||
|
id: mapId,
|
||||||
|
isActive: true
|
||||||
|
},
|
||||||
|
include: [{
|
||||||
|
model: TaxiMapType,
|
||||||
|
as: 'mapType'
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
return map;
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error getting map by ID:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
async getDefaultMap() {
|
||||||
|
try {
|
||||||
|
const map = await TaxiMap.findOne({
|
||||||
|
where: {
|
||||||
|
isDefault: true,
|
||||||
|
isActive: true
|
||||||
|
},
|
||||||
|
include: [{
|
||||||
|
model: TaxiMapType,
|
||||||
|
as: 'mapType'
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
return map;
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error getting default map:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Erstellt eine neue Map
|
||||||
|
*/
|
||||||
|
async createMap(mapData) {
|
||||||
|
try {
|
||||||
|
const map = await TaxiMap.create(mapData);
|
||||||
|
return map;
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error creating map:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Aktualisiert eine Map
|
||||||
|
*/
|
||||||
|
async updateMap(mapId, updateData) {
|
||||||
|
try {
|
||||||
|
const [updatedRowsCount] = await TaxiMap.update(updateData, {
|
||||||
|
where: { id: mapId }
|
||||||
|
});
|
||||||
|
|
||||||
|
if (updatedRowsCount === 0) {
|
||||||
|
throw new Error('Map not found');
|
||||||
|
}
|
||||||
|
|
||||||
|
return await this.getMapById(mapId);
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error updating map:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Löscht eine Map (soft delete)
|
||||||
|
*/
|
||||||
|
async deleteMap(mapId) {
|
||||||
|
try {
|
||||||
|
const [updatedRowsCount] = await TaxiMap.update(
|
||||||
|
{ isActive: false },
|
||||||
|
{ where: { id: mapId } }
|
||||||
|
);
|
||||||
|
|
||||||
|
if (updatedRowsCount === 0) {
|
||||||
|
throw new Error('Map not found');
|
||||||
|
}
|
||||||
|
|
||||||
|
return { success: true };
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error deleting map:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setzt eine Map als Standard
|
||||||
|
*/
|
||||||
|
async setDefaultMap(mapId) {
|
||||||
|
try {
|
||||||
|
// Entferne Standard-Status von allen anderen Maps
|
||||||
|
await TaxiMap.update(
|
||||||
|
{ isDefault: false },
|
||||||
|
{ where: { isDefault: true } }
|
||||||
|
);
|
||||||
|
|
||||||
|
// Setze neue Standard-Map
|
||||||
|
const [updatedRowsCount] = await TaxiMap.update(
|
||||||
|
{ isDefault: true },
|
||||||
|
{ where: { id: mapId } }
|
||||||
|
);
|
||||||
|
|
||||||
|
if (updatedRowsCount === 0) {
|
||||||
|
throw new Error('Map not found');
|
||||||
|
}
|
||||||
|
|
||||||
|
return { success: true };
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error setting default map:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialisiert Standard-Map-Typen
|
||||||
|
*/
|
||||||
|
async initializeMapTypes() {
|
||||||
|
try {
|
||||||
|
const mapTypes = [
|
||||||
|
{ name: 'Corner Bottom Left', tileType: 'cornerBottomLeft', description: 'Bottom left corner tile' },
|
||||||
|
{ name: 'Corner Bottom Right', tileType: 'cornerBottomRight', description: 'Bottom right corner tile' },
|
||||||
|
{ name: 'Corner Top Left', tileType: 'cornerTopLeft', description: 'Top left corner tile' },
|
||||||
|
{ name: 'Corner Top Right', tileType: 'cornerTopRight', description: 'Top right corner tile' },
|
||||||
|
{ name: 'Horizontal', tileType: 'horizontal', description: 'Horizontal road tile' },
|
||||||
|
{ name: 'Vertical', tileType: 'vertical', description: 'Vertical road tile' },
|
||||||
|
{ name: 'Cross', tileType: 'cross', description: 'Cross intersection tile' },
|
||||||
|
{ name: 'Fuel Horizontal', tileType: 'fuelHorizontal', description: 'Horizontal road with fuel station' },
|
||||||
|
{ name: 'Fuel Vertical', tileType: 'fuelVertical', description: 'Vertical road with fuel station' },
|
||||||
|
{ name: 'T-Left', tileType: 'tLeft', description: 'T-junction facing left' },
|
||||||
|
{ name: 'T-Right', tileType: 'tRight', description: 'T-junction facing right' },
|
||||||
|
{ name: 'T-Up', tileType: 'tUp', description: 'T-junction facing up' },
|
||||||
|
{ name: 'T-Down', tileType: 'tDown', description: 'T-junction facing down' }
|
||||||
|
];
|
||||||
|
|
||||||
|
for (const mapType of mapTypes) {
|
||||||
|
await TaxiMapType.findOrCreate({
|
||||||
|
where: { name: mapType.name },
|
||||||
|
defaults: mapType
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('Taxi map types initialized');
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error initializing map types:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default TaxiMapService;
|
||||||
407
backend/services/taxiService.js
Normal file
@@ -0,0 +1,407 @@
|
|||||||
|
import BaseService from './BaseService.js';
|
||||||
|
import TaxiGameState from '../models/taxi/taxiGameState.js';
|
||||||
|
import TaxiLevelStats from '../models/taxi/taxiLevelStats.js';
|
||||||
|
import User from '../models/community/user.js';
|
||||||
|
|
||||||
|
class TaxiService extends BaseService {
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hilfsmethode: Konvertiere hashedId zu userId
|
||||||
|
async getUserIdFromHashedId(hashedUserId) {
|
||||||
|
const user = await User.findOne({ where: { hashedId: hashedUserId } });
|
||||||
|
if (!user) {
|
||||||
|
throw new Error('User not found');
|
||||||
|
}
|
||||||
|
return user.id;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Spielstand abrufen
|
||||||
|
async getGameState(hashedUserId) {
|
||||||
|
try {
|
||||||
|
const userId = await this.getUserIdFromHashedId(hashedUserId);
|
||||||
|
|
||||||
|
let gameState = await TaxiGameState.findOne({
|
||||||
|
where: { userId }
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!gameState) {
|
||||||
|
// Erstelle neuen Spielstand
|
||||||
|
gameState = await TaxiGameState.create({
|
||||||
|
userId,
|
||||||
|
currentLevel: 1,
|
||||||
|
totalScore: 0,
|
||||||
|
totalMoney: 0,
|
||||||
|
totalPassengersDelivered: 0,
|
||||||
|
unlockedLevels: [1],
|
||||||
|
achievements: []
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
currentLevel: gameState.currentLevel,
|
||||||
|
totalScore: gameState.totalScore,
|
||||||
|
totalMoney: gameState.totalMoney,
|
||||||
|
totalPassengersDelivered: gameState.totalPassengersDelivered,
|
||||||
|
unlockedLevels: gameState.unlockedLevels,
|
||||||
|
achievements: gameState.achievements
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error getting taxi game state:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Spielstand speichern
|
||||||
|
async saveGameState(hashedUserId, gameData) {
|
||||||
|
try {
|
||||||
|
const userId = await this.getUserIdFromHashedId(hashedUserId);
|
||||||
|
const { level, score, money, passengersDelivered, fuel } = gameData;
|
||||||
|
|
||||||
|
const [gameState, created] = await TaxiGameState.findOrCreate({
|
||||||
|
where: { userId },
|
||||||
|
defaults: {
|
||||||
|
userId,
|
||||||
|
currentLevel: level || 1,
|
||||||
|
totalScore: score || 0,
|
||||||
|
totalMoney: money || 0,
|
||||||
|
totalPassengersDelivered: passengersDelivered || 0,
|
||||||
|
unlockedLevels: [1],
|
||||||
|
achievements: []
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!created) {
|
||||||
|
// Aktualisiere bestehenden Spielstand
|
||||||
|
await gameState.update({
|
||||||
|
currentLevel: Math.max(gameState.currentLevel, level || 1),
|
||||||
|
totalScore: Math.max(gameState.totalScore, score || 0),
|
||||||
|
totalMoney: Math.max(gameState.totalMoney, money || 0),
|
||||||
|
totalPassengersDelivered: Math.max(gameState.totalPassengersDelivered, passengersDelivered || 0)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
currentLevel: gameState.currentLevel,
|
||||||
|
totalScore: gameState.totalScore,
|
||||||
|
totalMoney: gameState.totalMoney,
|
||||||
|
totalPassengersDelivered: gameState.totalPassengersDelivered,
|
||||||
|
unlockedLevels: gameState.unlockedLevels,
|
||||||
|
achievements: gameState.achievements
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error saving taxi game state:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Level-Statistiken abrufen
|
||||||
|
async getLevelStats(hashedUserId, level) {
|
||||||
|
try {
|
||||||
|
const userId = await this.getUserIdFromHashedId(hashedUserId);
|
||||||
|
const stats = await TaxiLevelStats.findOne({
|
||||||
|
where: { userId, level }
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!stats) {
|
||||||
|
return {
|
||||||
|
level,
|
||||||
|
bestScore: 0,
|
||||||
|
bestMoney: 0,
|
||||||
|
bestPassengersDelivered: 0,
|
||||||
|
timesPlayed: 0,
|
||||||
|
completed: false
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
level: stats.level,
|
||||||
|
bestScore: stats.bestScore,
|
||||||
|
bestMoney: stats.bestMoney,
|
||||||
|
bestPassengersDelivered: stats.bestPassengersDelivered,
|
||||||
|
timesPlayed: stats.timesPlayed,
|
||||||
|
completed: stats.completed
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error getting level stats:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bestenliste abrufen
|
||||||
|
async getLeaderboard(type = 'score', limit = 10) {
|
||||||
|
try {
|
||||||
|
let orderBy;
|
||||||
|
switch (type) {
|
||||||
|
case 'money':
|
||||||
|
orderBy = [['totalMoney', 'DESC']];
|
||||||
|
break;
|
||||||
|
case 'passengers':
|
||||||
|
orderBy = [['totalPassengersDelivered', 'DESC']];
|
||||||
|
break;
|
||||||
|
case 'level':
|
||||||
|
orderBy = [['currentLevel', 'DESC']];
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
orderBy = [['totalScore', 'DESC']];
|
||||||
|
}
|
||||||
|
|
||||||
|
const leaderboard = await TaxiGameState.findAll({
|
||||||
|
order: orderBy,
|
||||||
|
limit: parseInt(limit),
|
||||||
|
include: [{
|
||||||
|
model: User,
|
||||||
|
attributes: ['username', 'id']
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
|
||||||
|
return leaderboard.map((entry, index) => ({
|
||||||
|
rank: index + 1,
|
||||||
|
username: entry.User.username,
|
||||||
|
userId: entry.User.id,
|
||||||
|
score: entry.totalScore,
|
||||||
|
money: entry.totalMoney,
|
||||||
|
passengers: entry.totalPassengersDelivered,
|
||||||
|
level: entry.currentLevel
|
||||||
|
}));
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error getting leaderboard:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Spiel beenden und Punkte verarbeiten
|
||||||
|
async finishGame(hashedUserId, gameData) {
|
||||||
|
try {
|
||||||
|
const userId = await this.getUserIdFromHashedId(hashedUserId);
|
||||||
|
const { finalScore, finalMoney, passengersDelivered, level } = gameData;
|
||||||
|
|
||||||
|
// Aktualisiere Spielstand
|
||||||
|
const gameState = await this.saveGameState(userId, {
|
||||||
|
level,
|
||||||
|
score: finalScore,
|
||||||
|
money: finalMoney,
|
||||||
|
passengersDelivered
|
||||||
|
});
|
||||||
|
|
||||||
|
// Aktualisiere Level-Statistiken
|
||||||
|
await this.updateLevelStats(hashedUserId, level, {
|
||||||
|
score: finalScore,
|
||||||
|
money: finalMoney,
|
||||||
|
passengersDelivered
|
||||||
|
});
|
||||||
|
|
||||||
|
// Prüfe auf neue freigeschaltete Level
|
||||||
|
const newUnlockedLevels = await this.checkUnlockedLevels(hashedUserId, level);
|
||||||
|
|
||||||
|
// Prüfe auf neue Erfolge
|
||||||
|
const newAchievements = await this.checkAchievements(hashedUserId, gameState);
|
||||||
|
|
||||||
|
return {
|
||||||
|
gameState,
|
||||||
|
newUnlockedLevels,
|
||||||
|
newAchievements
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error finishing game:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Level freischalten
|
||||||
|
async unlockLevel(hashedUserId, level) {
|
||||||
|
try {
|
||||||
|
const userId = await this.getUserIdFromHashedId(hashedUserId);
|
||||||
|
const gameState = await TaxiGameState.findOne({
|
||||||
|
where: { userId }
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!gameState) {
|
||||||
|
throw new Error('Spielstand nicht gefunden');
|
||||||
|
}
|
||||||
|
|
||||||
|
const unlockedLevels = [...gameState.unlockedLevels];
|
||||||
|
if (!unlockedLevels.includes(level)) {
|
||||||
|
unlockedLevels.push(level);
|
||||||
|
unlockedLevels.sort((a, b) => a - b);
|
||||||
|
|
||||||
|
await gameState.update({
|
||||||
|
unlockedLevels
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return { unlockedLevels };
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error unlocking level:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Spieler-Statistiken abrufen
|
||||||
|
async getPlayerStats(hashedUserId) {
|
||||||
|
try {
|
||||||
|
const userId = await this.getUserIdFromHashedId(hashedUserId);
|
||||||
|
const gameState = await this.getGameState(hashedUserId);
|
||||||
|
const levelStats = await TaxiLevelStats.findAll({
|
||||||
|
where: { userId },
|
||||||
|
order: [['level', 'ASC']]
|
||||||
|
});
|
||||||
|
|
||||||
|
const totalLevelsPlayed = levelStats.length;
|
||||||
|
const completedLevels = levelStats.filter(stat => stat.completed).length;
|
||||||
|
const totalPlayTime = levelStats.reduce((sum, stat) => sum + (stat.playTime || 0), 0);
|
||||||
|
|
||||||
|
return {
|
||||||
|
...gameState,
|
||||||
|
totalLevelsPlayed,
|
||||||
|
completedLevels,
|
||||||
|
totalPlayTime,
|
||||||
|
levelStats: levelStats.map(stat => ({
|
||||||
|
level: stat.level,
|
||||||
|
bestScore: stat.bestScore,
|
||||||
|
bestMoney: stat.bestMoney,
|
||||||
|
bestPassengersDelivered: stat.bestPassengersDelivered,
|
||||||
|
timesPlayed: stat.timesPlayed,
|
||||||
|
completed: stat.completed
|
||||||
|
}))
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error getting player stats:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Level zurücksetzen
|
||||||
|
async resetLevel(hashedUserId, level) {
|
||||||
|
try {
|
||||||
|
const userId = await this.getUserIdFromHashedId(hashedUserId);
|
||||||
|
await TaxiLevelStats.destroy({
|
||||||
|
where: { userId, level }
|
||||||
|
});
|
||||||
|
|
||||||
|
return { success: true };
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error resetting level:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Alle Spielstände zurücksetzen
|
||||||
|
async resetAllProgress(hashedUserId) {
|
||||||
|
try {
|
||||||
|
const userId = await this.getUserIdFromHashedId(hashedUserId);
|
||||||
|
await TaxiGameState.destroy({
|
||||||
|
where: { userId }
|
||||||
|
});
|
||||||
|
|
||||||
|
await TaxiLevelStats.destroy({
|
||||||
|
where: { userId }
|
||||||
|
});
|
||||||
|
|
||||||
|
return { success: true };
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error resetting all progress:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hilfsmethoden
|
||||||
|
async updateLevelStats(hashedUserId, level, stats) {
|
||||||
|
try {
|
||||||
|
const userId = await this.getUserIdFromHashedId(hashedUserId);
|
||||||
|
const { score, money, passengersDelivered } = stats;
|
||||||
|
|
||||||
|
const [levelStat, created] = await TaxiLevelStats.findOrCreate({
|
||||||
|
where: { userId, level },
|
||||||
|
defaults: {
|
||||||
|
userId,
|
||||||
|
level,
|
||||||
|
bestScore: score,
|
||||||
|
bestMoney: money,
|
||||||
|
bestPassengersDelivered: passengersDelivered,
|
||||||
|
timesPlayed: 1,
|
||||||
|
completed: true
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!created) {
|
||||||
|
const updates = {
|
||||||
|
timesPlayed: levelStat.timesPlayed + 1,
|
||||||
|
completed: true
|
||||||
|
};
|
||||||
|
|
||||||
|
if (score > levelStat.bestScore) updates.bestScore = score;
|
||||||
|
if (money > levelStat.bestMoney) updates.bestMoney = money;
|
||||||
|
if (passengersDelivered > levelStat.bestPassengersDelivered) {
|
||||||
|
updates.bestPassengersDelivered = passengersDelivered;
|
||||||
|
}
|
||||||
|
|
||||||
|
await levelStat.update(updates);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error updating level stats:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async checkUnlockedLevels(hashedUserId, currentLevel) {
|
||||||
|
try {
|
||||||
|
const userId = await this.getUserIdFromHashedId(hashedUserId);
|
||||||
|
const gameState = await TaxiGameState.findOne({
|
||||||
|
where: { userId }
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!gameState) return [];
|
||||||
|
|
||||||
|
const newUnlockedLevels = [];
|
||||||
|
const nextLevel = currentLevel + 1;
|
||||||
|
|
||||||
|
if (!gameState.unlockedLevels.includes(nextLevel)) {
|
||||||
|
newUnlockedLevels.push(nextLevel);
|
||||||
|
await this.unlockLevel(hashedUserId, nextLevel);
|
||||||
|
}
|
||||||
|
|
||||||
|
return newUnlockedLevels;
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error checking unlocked levels:', error);
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async checkAchievements(hashedUserId, gameState) {
|
||||||
|
try {
|
||||||
|
const userId = await this.getUserIdFromHashedId(hashedUserId);
|
||||||
|
const achievements = [];
|
||||||
|
const currentAchievements = gameState.achievements || [];
|
||||||
|
|
||||||
|
// Beispiel-Erfolge
|
||||||
|
if (gameState.totalScore >= 1000 && !currentAchievements.includes('score_1000')) {
|
||||||
|
achievements.push('score_1000');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gameState.totalPassengersDelivered >= 50 && !currentAchievements.includes('passengers_50')) {
|
||||||
|
achievements.push('passengers_50');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gameState.currentLevel >= 10 && !currentAchievements.includes('level_10')) {
|
||||||
|
achievements.push('level_10');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (achievements.length > 0) {
|
||||||
|
const newAchievements = [...currentAchievements, ...achievements];
|
||||||
|
await TaxiGameState.update(
|
||||||
|
{ achievements: newAchievements },
|
||||||
|
{ where: { userId } }
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return achievements;
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error checking achievements:', error);
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default TaxiService;
|
||||||
29
backend/utils/initializeTaxi.js
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
// initializeTaxi.js
|
||||||
|
|
||||||
|
import TaxiMapService from '../services/taxiMapService.js';
|
||||||
|
|
||||||
|
const initializeTaxi = async () => {
|
||||||
|
try {
|
||||||
|
console.log('Initializing Taxi game data...');
|
||||||
|
|
||||||
|
const taxiMapService = new TaxiMapService();
|
||||||
|
|
||||||
|
// Initialisiere Map-Typen
|
||||||
|
console.log('Initializing taxi map types...');
|
||||||
|
await taxiMapService.initializeMapTypes();
|
||||||
|
|
||||||
|
// Prüfe ob bereits eine Standard-Map existiert
|
||||||
|
const existingDefaultMap = await taxiMapService.getDefaultMap();
|
||||||
|
if (!existingDefaultMap) {
|
||||||
|
console.log('Creating default taxi map...');
|
||||||
|
await taxiMapService.createDefaultMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('Taxi game initialization complete.');
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error initializing Taxi game:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export default initializeTaxi;
|
||||||
@@ -40,6 +40,7 @@ const createSchemas = async () => {
|
|||||||
await sequelize.query('CREATE SCHEMA IF NOT EXISTS falukant_log');
|
await sequelize.query('CREATE SCHEMA IF NOT EXISTS falukant_log');
|
||||||
await sequelize.query('CREATE SCHEMA IF NOT EXISTS chat');
|
await sequelize.query('CREATE SCHEMA IF NOT EXISTS chat');
|
||||||
await sequelize.query('CREATE SCHEMA IF NOT EXISTS match3');
|
await sequelize.query('CREATE SCHEMA IF NOT EXISTS match3');
|
||||||
|
await sequelize.query('CREATE SCHEMA IF NOT EXISTS taxi');
|
||||||
};
|
};
|
||||||
|
|
||||||
const initializeDatabase = async () => {
|
const initializeDatabase = async () => {
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import initializeForum from './initializeForum.js';
|
|||||||
import initializeChat from './initializeChat.js';
|
import initializeChat from './initializeChat.js';
|
||||||
import initializeMatch3Data from './initializeMatch3.js';
|
import initializeMatch3Data from './initializeMatch3.js';
|
||||||
import updateExistingMatch3Levels from './updateExistingMatch3Levels.js';
|
import updateExistingMatch3Levels from './updateExistingMatch3Levels.js';
|
||||||
|
import initializeTaxi from './initializeTaxi.js';
|
||||||
|
|
||||||
// Normale Synchronisation (nur bei STAGE=dev Schema-Updates)
|
// Normale Synchronisation (nur bei STAGE=dev Schema-Updates)
|
||||||
const syncDatabase = async () => {
|
const syncDatabase = async () => {
|
||||||
@@ -70,6 +71,9 @@ const syncDatabase = async () => {
|
|||||||
console.log("Updating existing Match3 levels...");
|
console.log("Updating existing Match3 levels...");
|
||||||
await updateExistingMatch3Levels();
|
await updateExistingMatch3Levels();
|
||||||
|
|
||||||
|
console.log("Initializing Taxi...");
|
||||||
|
await initializeTaxi();
|
||||||
|
|
||||||
console.log('Database synchronization complete.');
|
console.log('Database synchronization complete.');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Unable to synchronize the database:', error);
|
console.error('Unable to synchronize the database:', error);
|
||||||
@@ -85,19 +89,7 @@ const syncDatabaseForDeployment = async () => {
|
|||||||
console.log('✅ Deployment-Modus: Schema-Updates sind immer aktiviert');
|
console.log('✅ Deployment-Modus: Schema-Updates sind immer aktiviert');
|
||||||
|
|
||||||
console.log("Initializing database schemas...");
|
console.log("Initializing database schemas...");
|
||||||
// Nur Schemas erstellen, keine Model-Synchronisation
|
await initializeDatabase();
|
||||||
const { sequelize } = await import('./sequelize.js');
|
|
||||||
await sequelize.query('CREATE SCHEMA IF NOT EXISTS community');
|
|
||||||
await sequelize.query('CREATE SCHEMA IF NOT EXISTS logs');
|
|
||||||
await sequelize.query('CREATE SCHEMA IF NOT EXISTS type');
|
|
||||||
await sequelize.query('CREATE SCHEMA IF NOT EXISTS service');
|
|
||||||
await sequelize.query('CREATE SCHEMA IF NOT EXISTS forum');
|
|
||||||
await sequelize.query('CREATE SCHEMA IF NOT EXISTS falukant_data');
|
|
||||||
await sequelize.query('CREATE SCHEMA IF NOT EXISTS falukant_type');
|
|
||||||
await sequelize.query('CREATE SCHEMA IF NOT EXISTS falukant_predefine');
|
|
||||||
await sequelize.query('CREATE SCHEMA IF NOT EXISTS falukant_log');
|
|
||||||
await sequelize.query('CREATE SCHEMA IF NOT EXISTS chat');
|
|
||||||
await sequelize.query('CREATE SCHEMA IF NOT EXISTS match3');
|
|
||||||
|
|
||||||
console.log("Synchronizing models with schema updates...");
|
console.log("Synchronizing models with schema updates...");
|
||||||
await syncModelsAlways(models);
|
await syncModelsAlways(models);
|
||||||
@@ -137,6 +129,9 @@ const syncDatabaseForDeployment = async () => {
|
|||||||
console.log("Updating existing Match3 levels...");
|
console.log("Updating existing Match3 levels...");
|
||||||
await updateExistingMatch3Levels();
|
await updateExistingMatch3Levels();
|
||||||
|
|
||||||
|
console.log("Initializing Taxi...");
|
||||||
|
await initializeTaxi();
|
||||||
|
|
||||||
console.log('Database synchronization for deployment complete.');
|
console.log('Database synchronization for deployment complete.');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Unable to synchronize the database for deployment:', error);
|
console.error('Unable to synchronize the database for deployment:', error);
|
||||||
|
|||||||
66
frontend/public/images/taxi/car_blue.svg
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="66.542mm"
|
||||||
|
height="131.97301mm"
|
||||||
|
viewBox="0 0 66.542 131.97301"
|
||||||
|
version="1.1"
|
||||||
|
id="svg957"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="car_blue.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview959"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.56123737"
|
||||||
|
inkscape:cx="-285.97525"
|
||||||
|
inkscape:cy="560.36896"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1007"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs954" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#2666ff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.465391;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="131.50793"
|
||||||
|
height="66.076797"
|
||||||
|
x="-131.74063"
|
||||||
|
y="0.2326965"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.479108;stroke-miterlimit:3.3"
|
||||||
|
id="rect1016"
|
||||||
|
width="15.774606"
|
||||||
|
height="66.096329"
|
||||||
|
x="-110.37288"
|
||||||
|
y="0.44752184"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3"
|
||||||
|
id="rect1018"
|
||||||
|
width="22.247723"
|
||||||
|
height="65.980431"
|
||||||
|
x="-44.058758"
|
||||||
|
y="0.61777174"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.0 KiB |
66
frontend/public/images/taxi/car_green.svg
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="66.542mm"
|
||||||
|
height="131.97301mm"
|
||||||
|
viewBox="0 0 66.542 131.97301"
|
||||||
|
version="1.1"
|
||||||
|
id="svg957"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="car_green.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview959"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.56123737"
|
||||||
|
inkscape:cx="-285.97525"
|
||||||
|
inkscape:cy="560.36896"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs954" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#008545;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.465391;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="131.50793"
|
||||||
|
height="66.076797"
|
||||||
|
x="-131.74063"
|
||||||
|
y="0.2326965"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.479108;stroke-miterlimit:3.3"
|
||||||
|
id="rect1016"
|
||||||
|
width="15.774606"
|
||||||
|
height="66.096329"
|
||||||
|
x="-110.37288"
|
||||||
|
y="0.44752184"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3"
|
||||||
|
id="rect1018"
|
||||||
|
width="22.247723"
|
||||||
|
height="65.980431"
|
||||||
|
x="-44.058758"
|
||||||
|
y="0.61777174"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.0 KiB |
66
frontend/public/images/taxi/car_pink.svg
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="66.542mm"
|
||||||
|
height="131.97301mm"
|
||||||
|
viewBox="0 0 66.542 131.97301"
|
||||||
|
version="1.1"
|
||||||
|
id="svg957"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="car_pink.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview959"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.56123737"
|
||||||
|
inkscape:cx="-179.06862"
|
||||||
|
inkscape:cy="560.36896"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs954" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#ff469d;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.465391;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="131.50793"
|
||||||
|
height="66.076797"
|
||||||
|
x="-131.74063"
|
||||||
|
y="0.2326965"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.479108;stroke-miterlimit:3.3"
|
||||||
|
id="rect1016"
|
||||||
|
width="15.774606"
|
||||||
|
height="66.096329"
|
||||||
|
x="-110.37288"
|
||||||
|
y="0.44752184"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3"
|
||||||
|
id="rect1018"
|
||||||
|
width="22.247723"
|
||||||
|
height="65.980431"
|
||||||
|
x="-44.058758"
|
||||||
|
y="0.61777174"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.0 KiB |
66
frontend/public/images/taxi/car_red.svg
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="66.542mm"
|
||||||
|
height="131.97301mm"
|
||||||
|
viewBox="0 0 66.542 131.97301"
|
||||||
|
version="1.1"
|
||||||
|
id="svg957"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="car_red.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview959"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.56123737"
|
||||||
|
inkscape:cx="-179.06862"
|
||||||
|
inkscape:cy="560.36896"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs954" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#cd0000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.465391;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="131.50793"
|
||||||
|
height="66.076797"
|
||||||
|
x="-131.74063"
|
||||||
|
y="0.2326965"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.479108;stroke-miterlimit:3.3"
|
||||||
|
id="rect1016"
|
||||||
|
width="15.774606"
|
||||||
|
height="66.096329"
|
||||||
|
x="-110.37288"
|
||||||
|
y="0.44752184"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3"
|
||||||
|
id="rect1018"
|
||||||
|
width="22.247723"
|
||||||
|
height="65.980431"
|
||||||
|
x="-44.058758"
|
||||||
|
y="0.61777174"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.0 KiB |
66
frontend/public/images/taxi/car_turquise.svg
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="66.542mm"
|
||||||
|
height="131.97301mm"
|
||||||
|
viewBox="0 0 66.542 131.97301"
|
||||||
|
version="1.1"
|
||||||
|
id="svg957"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="car_turquise.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview959"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.56123737"
|
||||||
|
inkscape:cx="-179.06862"
|
||||||
|
inkscape:cy="560.36896"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs954" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#1b8a80;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.465391;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="131.50793"
|
||||||
|
height="66.076797"
|
||||||
|
x="-131.74063"
|
||||||
|
y="0.2326965"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.479108;stroke-miterlimit:3.3"
|
||||||
|
id="rect1016"
|
||||||
|
width="15.774606"
|
||||||
|
height="66.096329"
|
||||||
|
x="-110.37288"
|
||||||
|
y="0.44752184"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3"
|
||||||
|
id="rect1018"
|
||||||
|
width="22.247723"
|
||||||
|
height="65.980431"
|
||||||
|
x="-44.058758"
|
||||||
|
y="0.61777174"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.0 KiB |
130
frontend/public/images/taxi/cornerbottomleft.svg
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="200mm"
|
||||||
|
height="200mm"
|
||||||
|
viewBox="0 0 200 200"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="cornerbottomleft.svg"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/bottomright.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="1.1224747"
|
||||||
|
inkscape:cx="338.09225"
|
||||||
|
inkscape:cy="284.63893"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.698168;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="200"
|
||||||
|
height="200"
|
||||||
|
x="-200"
|
||||||
|
y="0"
|
||||||
|
transform="scale(-1,1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.522164;stroke-miterlimit:3.3"
|
||||||
|
id="rect986"
|
||||||
|
width="125"
|
||||||
|
height="125"
|
||||||
|
x="-125"
|
||||||
|
y="74.999992"
|
||||||
|
ry="11.094693"
|
||||||
|
transform="scale(-1,1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:1.22379;stroke-miterlimit:3.3"
|
||||||
|
id="rect1221"
|
||||||
|
width="42.689159"
|
||||||
|
height="30.09281"
|
||||||
|
x="-125"
|
||||||
|
y="169.9072"
|
||||||
|
ry="15.046405"
|
||||||
|
rx="0.23571429"
|
||||||
|
transform="scale(-1,1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:1.35144;stroke-miterlimit:3.3"
|
||||||
|
id="rect1221-6"
|
||||||
|
width="42.689159"
|
||||||
|
height="36.697521"
|
||||||
|
x="-42.689163"
|
||||||
|
y="74.999992"
|
||||||
|
ry="18.348761"
|
||||||
|
rx="0.23571429"
|
||||||
|
transform="scale(-1,1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.316859;stroke-miterlimit:3.3"
|
||||||
|
id="rect846-3-3"
|
||||||
|
width="46.820621"
|
||||||
|
height="43.675076"
|
||||||
|
x="-46.820633"
|
||||||
|
y="124.99999"
|
||||||
|
ry="0"
|
||||||
|
transform="scale(-1,1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.315493;stroke-miterlimit:3.3"
|
||||||
|
id="rect846-3-3-5"
|
||||||
|
width="46.820621"
|
||||||
|
height="43.299355"
|
||||||
|
x="-75"
|
||||||
|
y="156.70062"
|
||||||
|
ry="0"
|
||||||
|
transform="scale(-1,1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.261811;stroke-miterlimit:3.3"
|
||||||
|
id="rect846-3"
|
||||||
|
width="75"
|
||||||
|
height="75"
|
||||||
|
x="-75"
|
||||||
|
y="124.99999"
|
||||||
|
ry="8.2145042"
|
||||||
|
transform="scale(-1,1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 4.3 KiB |
99
frontend/public/images/taxi/cornerbottomright.svg
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="200mm"
|
||||||
|
height="200mm"
|
||||||
|
viewBox="0 0 200 200"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="cornerbottomright.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="1.1224747"
|
||||||
|
inkscape:cx="391.54557"
|
||||||
|
inkscape:cy="498.45221"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.698168;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="200"
|
||||||
|
height="200"
|
||||||
|
x="2.7755576e-17"
|
||||||
|
y="0" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.522164;stroke-miterlimit:3.3"
|
||||||
|
id="rect986"
|
||||||
|
width="125"
|
||||||
|
height="125"
|
||||||
|
x="75"
|
||||||
|
y="75"
|
||||||
|
ry="11.094693" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:1.22379;stroke-miterlimit:3.3"
|
||||||
|
id="rect1221"
|
||||||
|
width="42.689159"
|
||||||
|
height="30.09281"
|
||||||
|
x="75"
|
||||||
|
y="169.9072"
|
||||||
|
ry="15.046405"
|
||||||
|
rx="0.23571429" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:1.35144;stroke-miterlimit:3.3"
|
||||||
|
id="rect1221-6"
|
||||||
|
width="42.689159"
|
||||||
|
height="36.697521"
|
||||||
|
x="157.31084"
|
||||||
|
y="75"
|
||||||
|
ry="18.348761"
|
||||||
|
rx="0.23571429" />
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.316859;stroke-miterlimit:3.3"
|
||||||
|
id="rect846-3-3"
|
||||||
|
width="46.820621"
|
||||||
|
height="43.675076"
|
||||||
|
x="153.17937"
|
||||||
|
y="125"
|
||||||
|
ry="0" />
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.315493;stroke-miterlimit:3.3"
|
||||||
|
id="rect846-3-3-5"
|
||||||
|
width="46.820621"
|
||||||
|
height="43.299355"
|
||||||
|
x="125"
|
||||||
|
y="156.70064"
|
||||||
|
ry="0" />
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.261811;stroke-miterlimit:3.3"
|
||||||
|
id="rect846-3"
|
||||||
|
width="75"
|
||||||
|
height="75"
|
||||||
|
x="125"
|
||||||
|
y="125"
|
||||||
|
ry="8.2145042" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.8 KiB |
130
frontend/public/images/taxi/cornertopleft.svg
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="200mm"
|
||||||
|
height="200mm"
|
||||||
|
viewBox="0 0 200 200"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="cornertopleft.svg"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/bottomright.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="1.1224747"
|
||||||
|
inkscape:cx="391.54557"
|
||||||
|
inkscape:cy="498.45221"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.698168;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="200"
|
||||||
|
height="200"
|
||||||
|
x="-200"
|
||||||
|
y="-200"
|
||||||
|
transform="scale(-1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topright.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.522164;stroke-miterlimit:3.3"
|
||||||
|
id="rect986"
|
||||||
|
width="125"
|
||||||
|
height="125"
|
||||||
|
x="-125"
|
||||||
|
y="-125.00001"
|
||||||
|
ry="11.094693"
|
||||||
|
transform="scale(-1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topright.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:1.22379;stroke-miterlimit:3.3"
|
||||||
|
id="rect1221"
|
||||||
|
width="42.689159"
|
||||||
|
height="30.09281"
|
||||||
|
x="-125"
|
||||||
|
y="-30.09281"
|
||||||
|
ry="15.046405"
|
||||||
|
rx="0.23571429"
|
||||||
|
transform="scale(-1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topright.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:1.35144;stroke-miterlimit:3.3"
|
||||||
|
id="rect1221-6"
|
||||||
|
width="42.689159"
|
||||||
|
height="36.697521"
|
||||||
|
x="-42.689163"
|
||||||
|
y="-125.00001"
|
||||||
|
ry="18.348761"
|
||||||
|
rx="0.23571429"
|
||||||
|
transform="scale(-1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topright.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.316859;stroke-miterlimit:3.3"
|
||||||
|
id="rect846-3-3"
|
||||||
|
width="46.820621"
|
||||||
|
height="43.675076"
|
||||||
|
x="-46.820633"
|
||||||
|
y="-75.000008"
|
||||||
|
ry="0"
|
||||||
|
transform="scale(-1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topright.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.315493;stroke-miterlimit:3.3"
|
||||||
|
id="rect846-3-3-5"
|
||||||
|
width="46.820621"
|
||||||
|
height="43.299355"
|
||||||
|
x="-75"
|
||||||
|
y="-43.29937"
|
||||||
|
ry="0"
|
||||||
|
transform="scale(-1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topright.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.261811;stroke-miterlimit:3.3"
|
||||||
|
id="rect846-3"
|
||||||
|
width="75"
|
||||||
|
height="75"
|
||||||
|
x="-75"
|
||||||
|
y="-75.000008"
|
||||||
|
ry="8.2145042"
|
||||||
|
transform="scale(-1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topright.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 4.3 KiB |
109
frontend/public/images/taxi/cornertopright.svg
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="200mm"
|
||||||
|
height="200mm"
|
||||||
|
viewBox="0 0 200 200"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="cornertopright.svg"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/bottomright.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="1.1224747"
|
||||||
|
inkscape:cx="391.54557"
|
||||||
|
inkscape:cy="498.45221"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.698168;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="200"
|
||||||
|
height="200"
|
||||||
|
x="2.7755576e-17"
|
||||||
|
y="-200"
|
||||||
|
transform="scale(1,-1)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.522164;stroke-miterlimit:3.3"
|
||||||
|
id="rect986"
|
||||||
|
width="125"
|
||||||
|
height="125"
|
||||||
|
x="75"
|
||||||
|
y="-125.00001"
|
||||||
|
ry="11.094693"
|
||||||
|
transform="scale(1,-1)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:1.22379;stroke-miterlimit:3.3"
|
||||||
|
id="rect1221"
|
||||||
|
width="42.689159"
|
||||||
|
height="30.09281"
|
||||||
|
x="75"
|
||||||
|
y="-30.09281"
|
||||||
|
ry="15.046405"
|
||||||
|
rx="0.23571429"
|
||||||
|
transform="scale(1,-1)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:1.35144;stroke-miterlimit:3.3"
|
||||||
|
id="rect1221-6"
|
||||||
|
width="42.689159"
|
||||||
|
height="36.697521"
|
||||||
|
x="157.31084"
|
||||||
|
y="-125.00001"
|
||||||
|
ry="18.348761"
|
||||||
|
rx="0.23571429"
|
||||||
|
transform="scale(1,-1)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.316859;stroke-miterlimit:3.3"
|
||||||
|
id="rect846-3-3"
|
||||||
|
width="46.820621"
|
||||||
|
height="43.675076"
|
||||||
|
x="153.17937"
|
||||||
|
y="-75.000008"
|
||||||
|
ry="0"
|
||||||
|
transform="scale(1,-1)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.315493;stroke-miterlimit:3.3"
|
||||||
|
id="rect846-3-3-5"
|
||||||
|
width="46.820621"
|
||||||
|
height="43.299355"
|
||||||
|
x="125"
|
||||||
|
y="-43.29937"
|
||||||
|
ry="0"
|
||||||
|
transform="scale(1,-1)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.261811;stroke-miterlimit:3.3"
|
||||||
|
id="rect846-3"
|
||||||
|
width="75"
|
||||||
|
height="75"
|
||||||
|
x="125"
|
||||||
|
y="-75.000008"
|
||||||
|
ry="8.2145042"
|
||||||
|
transform="scale(1,-1)" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 3.2 KiB |
80
frontend/public/images/taxi/cross.svg
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="200mm"
|
||||||
|
height="200mm"
|
||||||
|
viewBox="0 0 200 200"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="cross.svg"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/vertical.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="1.1224747"
|
||||||
|
inkscape:cx="391.54557"
|
||||||
|
inkscape:cy="427.18112"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.698168;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="200"
|
||||||
|
height="200"
|
||||||
|
x="-200"
|
||||||
|
y="-200"
|
||||||
|
transform="matrix(0,-1,-1,0,0,0)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.417731;stroke-miterlimit:3.3"
|
||||||
|
id="rect986"
|
||||||
|
width="200"
|
||||||
|
height="50"
|
||||||
|
x="-200"
|
||||||
|
y="-125"
|
||||||
|
ry="0"
|
||||||
|
transform="matrix(0,-1,-1,0,0,0)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.417731;stroke-miterlimit:3.3"
|
||||||
|
id="rect986-6"
|
||||||
|
width="200"
|
||||||
|
height="50"
|
||||||
|
x="0"
|
||||||
|
y="-125"
|
||||||
|
ry="0"
|
||||||
|
transform="scale(1,-1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.5 KiB |
166
frontend/public/images/taxi/fuelhorizontal.svg
Normal file
@@ -0,0 +1,166 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="200mm"
|
||||||
|
height="200mm"
|
||||||
|
viewBox="0 0 200 200"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="fuelhorizontal.svg"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/ttop.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.79370947"
|
||||||
|
inkscape:cx="299.22788"
|
||||||
|
inkscape:cy="403.80015"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="g14769"
|
||||||
|
width="200mm" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<g
|
||||||
|
id="g15000">
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.698168;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="200"
|
||||||
|
height="200"
|
||||||
|
x="-200"
|
||||||
|
y="0"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.157815;stroke-miterlimit:3.3"
|
||||||
|
id="rect986"
|
||||||
|
width="78.26664"
|
||||||
|
height="18.236031"
|
||||||
|
x="-45.734962"
|
||||||
|
y="73.212212"
|
||||||
|
ry="0"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/tbottom.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5"
|
||||||
|
transform="matrix(0.86824353,-0.49613826,0.66053269,0.75079729,0,0)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.157816;stroke-miterlimit:3.3"
|
||||||
|
id="rect986-2"
|
||||||
|
width="78.266777"
|
||||||
|
height="18.236101"
|
||||||
|
x="-197.8062"
|
||||||
|
y="-27.279419"
|
||||||
|
ry="0"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/tbottom.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5"
|
||||||
|
transform="matrix(-0.86824205,-0.49614084,-0.66053013,0.75079954,0,0)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.417732;stroke-miterlimit:3.3"
|
||||||
|
id="rect986-6"
|
||||||
|
width="200"
|
||||||
|
height="50"
|
||||||
|
x="-200"
|
||||||
|
y="-125"
|
||||||
|
ry="0"
|
||||||
|
transform="scale(-1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.127179;stroke-miterlimit:3.3"
|
||||||
|
id="rect986-6-1"
|
||||||
|
width="45.189426"
|
||||||
|
height="20.511456"
|
||||||
|
x="-121.78027"
|
||||||
|
y="-59.338455"
|
||||||
|
ry="0"
|
||||||
|
transform="scale(-1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<g
|
||||||
|
id="g14862">
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.194838px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 130.33628,11.426511 c 0,0 0.33707,0.512496 0.50155,0.771355 0.13496,0.212401 0.27766,0.420492 0.39816,0.641417 0.14074,0.258031 0.24505,0.53449 0.37805,0.796591 0.12995,0.256086 0.28028,0.501493 0.41005,0.757668 0.11219,0.221453 0.21972,0.445458 0.31839,0.673254 0.1137,0.262489 0.22318,0.527348 0.31494,0.798289 0.0953,0.28146 0.18104,0.567026 0.24405,0.857432 0.0697,0.321297 0.14741,0.97524 0.14741,0.97524 v 0 c 0,0 -0.0508,0.623767 -0.0987,0.932723 -0.058,0.374029 -0.13406,0.745697 -0.22788,1.11238 -0.089,0.34795 -0.20736,0.687775 -0.31727,1.029702 -0.13665,0.425112 -0.27816,0.848705 -0.42537,1.270275 -0.15727,0.450359 -0.31167,0.90211 -0.48911,1.344908 -0.15378,0.383734 -0.32793,0.759028 -0.4983,1.135687 -0.19915,0.440274 -0.61235,1.313977 -0.61235,1.313977"
|
||||||
|
id="path11082"
|
||||||
|
sodipodi:nodetypes="caaaaaaacaaaaaaac" />
|
||||||
|
<path
|
||||||
|
id="rect848"
|
||||||
|
style="fill:#808000;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 120.62148,7.9679532 h 7.80968 c 1.11877,0 2.02017,0.9006707 2.01944,2.0194407 l -0.0659,24.6965811 -1.95357,0.03899 h -7.80968 c -1.11877,0 -2.01944,-0.01573 -2.01944,-0.01573 V 9.9873939 c 0,-1.1187702 0.90067,-2.0194407 2.01944,-2.0194407 z"
|
||||||
|
sodipodi:nodetypes="sssccscsss" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g14764">
|
||||||
|
<g
|
||||||
|
id="g14820">
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect2409"
|
||||||
|
width="7.9378052"
|
||||||
|
height="2.4928758"
|
||||||
|
x="119.64509"
|
||||||
|
y="10.18909" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:2.82222px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="121.62167"
|
||||||
|
y="12.491911"
|
||||||
|
id="text4107"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4105"
|
||||||
|
style="font-size:2.82222px;fill:#ffffff;stroke-width:0.264583px"
|
||||||
|
x="121.62167"
|
||||||
|
y="12.491911">58,2</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g14769">
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect2409-3"
|
||||||
|
width="7.9378052"
|
||||||
|
height="2.4928758"
|
||||||
|
x="119.64509"
|
||||||
|
y="14.269464" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:2.82222px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="121.62168"
|
||||||
|
y="16.572287"
|
||||||
|
id="text4107-6"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4105-7"
|
||||||
|
style="font-size:2.82222px;fill:#ffffff;stroke-width:0.264583px"
|
||||||
|
x="121.62168"
|
||||||
|
y="16.572287">47,3</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 7.1 KiB |
183
frontend/public/images/taxi/fuelvertical.svg
Normal file
@@ -0,0 +1,183 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="200mm"
|
||||||
|
height="200mm"
|
||||||
|
viewBox="0 0 200 200"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="fuelvertical.svg"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/ttop.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="3.1748379"
|
||||||
|
inkscape:cx="654.99407"
|
||||||
|
inkscape:cy="374.34982"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="g15167"
|
||||||
|
width="200mm" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<g
|
||||||
|
id="g15000"
|
||||||
|
transform="rotate(90,100,100)">
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.698168;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="200"
|
||||||
|
height="200"
|
||||||
|
x="-200"
|
||||||
|
y="0"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.157815;stroke-miterlimit:3.3"
|
||||||
|
id="rect986"
|
||||||
|
width="78.26664"
|
||||||
|
height="18.236031"
|
||||||
|
x="-45.734962"
|
||||||
|
y="73.212212"
|
||||||
|
ry="0"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/tbottom.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5"
|
||||||
|
transform="matrix(0.86824353,-0.49613826,0.66053269,0.75079729,0,0)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.157816;stroke-miterlimit:3.3"
|
||||||
|
id="rect986-2"
|
||||||
|
width="78.266777"
|
||||||
|
height="18.236101"
|
||||||
|
x="-197.8062"
|
||||||
|
y="-27.279419"
|
||||||
|
ry="0"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/tbottom.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5"
|
||||||
|
transform="matrix(-0.86824205,-0.49614084,-0.66053013,0.75079954,0,0)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.417732;stroke-miterlimit:3.3"
|
||||||
|
id="rect986-6"
|
||||||
|
width="200"
|
||||||
|
height="50"
|
||||||
|
x="-200"
|
||||||
|
y="-125"
|
||||||
|
ry="0"
|
||||||
|
transform="scale(-1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.127179;stroke-miterlimit:3.3"
|
||||||
|
id="rect986-6-1"
|
||||||
|
width="45.189426"
|
||||||
|
height="20.511456"
|
||||||
|
x="-121.78027"
|
||||||
|
y="-59.338455"
|
||||||
|
ry="0"
|
||||||
|
transform="scale(-1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<g
|
||||||
|
id="g14862" />
|
||||||
|
<g
|
||||||
|
id="g14764">
|
||||||
|
<g
|
||||||
|
id="g14820" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g14769">
|
||||||
|
<g
|
||||||
|
id="g15167">
|
||||||
|
<g
|
||||||
|
id="g14862-3"
|
||||||
|
transform="rotate(-90,113.96513,37.337594)">
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.194838px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 130.33628,11.426511 c 0,0 0.33707,0.512496 0.50155,0.771355 0.13496,0.212401 0.27766,0.420492 0.39816,0.641417 0.14074,0.258031 0.24505,0.53449 0.37805,0.796591 0.12995,0.256086 0.28028,0.501493 0.41005,0.757668 0.11219,0.221453 0.21972,0.445458 0.31839,0.673254 0.1137,0.262489 0.22318,0.527348 0.31494,0.798289 0.0953,0.28146 0.18104,0.567026 0.24405,0.857432 0.0697,0.321297 0.14741,0.97524 0.14741,0.97524 v 0 c 0,0 -0.0508,0.623767 -0.0987,0.932723 -0.058,0.374029 -0.13406,0.745697 -0.22788,1.11238 -0.089,0.34795 -0.20736,0.687775 -0.31727,1.029702 -0.13665,0.425112 -0.27816,0.848705 -0.42537,1.270275 -0.15727,0.450359 -0.31167,0.90211 -0.48911,1.344908 -0.15378,0.383734 -0.32793,0.759028 -0.4983,1.135687 -0.19915,0.440274 -0.61235,1.313977 -0.61235,1.313977"
|
||||||
|
id="path11082"
|
||||||
|
sodipodi:nodetypes="caaaaaaacaaaaaaac" />
|
||||||
|
<path
|
||||||
|
id="rect848"
|
||||||
|
style="fill:#808000;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 120.62148,7.9679532 h 7.80968 c 1.11877,0 2.02017,0.9006707 2.01944,2.0194407 l -0.0659,24.6965811 -1.95357,0.03899 h -7.80968 c -1.11877,0 -2.01944,-0.01573 -2.01944,-0.01573 V 9.9873939 c 0,-1.1187702 0.90067,-2.0194407 2.01944,-2.0194407 z"
|
||||||
|
sodipodi:nodetypes="sssccscsss" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g14764-6"
|
||||||
|
transform="rotate(-90,113.96513,37.337594)">
|
||||||
|
<g
|
||||||
|
id="g14820-7">
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect2409"
|
||||||
|
width="7.9378052"
|
||||||
|
height="2.4928758"
|
||||||
|
x="119.64509"
|
||||||
|
y="10.18909" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:2.82222px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="121.62167"
|
||||||
|
y="12.491911"
|
||||||
|
id="text4107"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4105"
|
||||||
|
style="font-size:2.82222px;fill:#ffffff;stroke-width:0.264583px"
|
||||||
|
x="121.62167"
|
||||||
|
y="12.491911">58,2</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g14769-5"
|
||||||
|
transform="rotate(-90,113.96513,37.337594)">
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect2409-3"
|
||||||
|
width="7.9378052"
|
||||||
|
height="2.4928758"
|
||||||
|
x="119.64509"
|
||||||
|
y="14.269464" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-weight:normal;font-size:2.82222px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="121.62168"
|
||||||
|
y="16.572287"
|
||||||
|
id="text4107-6"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4105-7"
|
||||||
|
style="font-size:2.82222px;fill:#ffffff;stroke-width:0.264583px"
|
||||||
|
x="121.62168"
|
||||||
|
y="16.572287">47,3</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 7.8 KiB |
69
frontend/public/images/taxi/horizontal.svg
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="200mm"
|
||||||
|
height="200mm"
|
||||||
|
viewBox="0 0 200 200"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="horizontal.svg"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/bottomright.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="1.1224747"
|
||||||
|
inkscape:cx="391.54557"
|
||||||
|
inkscape:cy="498.45221"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
width="200mm" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.698168;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="200"
|
||||||
|
height="200"
|
||||||
|
x="-200"
|
||||||
|
y="0"
|
||||||
|
transform="scale(-1,1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.417731;stroke-miterlimit:3.3"
|
||||||
|
id="rect986"
|
||||||
|
width="200"
|
||||||
|
height="50"
|
||||||
|
x="-200"
|
||||||
|
y="74.999992"
|
||||||
|
ry="0"
|
||||||
|
transform="scale(-1,1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.1 KiB |
110
frontend/public/images/taxi/house.svg
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="172.62199mm"
|
||||||
|
height="127.52mm"
|
||||||
|
viewBox="0 0 172.62199 127.52"
|
||||||
|
version="1.1"
|
||||||
|
id="svg3326"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="house.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview3328"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.56123737"
|
||||||
|
inkscape:cx="396.44545"
|
||||||
|
inkscape:cy="560.36896"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs3323">
|
||||||
|
<inkscape:path-effect
|
||||||
|
effect="perspective-envelope"
|
||||||
|
up_left_point="8.320787,0.25230885"
|
||||||
|
up_right_point="166.09079,0.24051385"
|
||||||
|
down_left_point="0.32078701,27.642309"
|
||||||
|
down_right_point="172.32079,27.652309"
|
||||||
|
id="path-effect3698"
|
||||||
|
is_visible="true"
|
||||||
|
lpeversion="1"
|
||||||
|
deform_type="perspective"
|
||||||
|
horizontal_mirror="false"
|
||||||
|
vertical_mirror="false"
|
||||||
|
overflow_perspective="false" />
|
||||||
|
</defs>
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#e3dbde;fill-rule:evenodd;stroke:#000000;stroke-width:0.494778;stroke-miterlimit:3.3;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect3409"
|
||||||
|
width="159.50522"
|
||||||
|
height="99.505219"
|
||||||
|
x="6.5681777"
|
||||||
|
y="-127.14492"
|
||||||
|
transform="scale(1,-1)" />
|
||||||
|
<path
|
||||||
|
style="fill:#ac595e;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect3597"
|
||||||
|
width="157.72784"
|
||||||
|
height="27.411638"
|
||||||
|
x="8.3635254"
|
||||||
|
y="0.24051346"
|
||||||
|
ry="0"
|
||||||
|
inkscape:path-effect="#path-effect3698"
|
||||||
|
d="m 8.320787,0.25230885 157.770003,-0.011795 6.23,27.41179515 -172.00000299,-0.01 z"
|
||||||
|
sodipodi:type="rect" />
|
||||||
|
<rect
|
||||||
|
style="fill:#241c1c;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.357629;stroke-miterlimit:3.3;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect7790"
|
||||||
|
width="20.724756"
|
||||||
|
height="46.306629"
|
||||||
|
x="124.69867"
|
||||||
|
y="81.034317" />
|
||||||
|
<rect
|
||||||
|
style="fill:#241c1c;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect7894"
|
||||||
|
width="41.166904"
|
||||||
|
height="17.668142"
|
||||||
|
x="107.70421"
|
||||||
|
y="42.471615" />
|
||||||
|
<rect
|
||||||
|
style="fill:#241c1c;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect7896"
|
||||||
|
width="59.978352"
|
||||||
|
height="17.419277"
|
||||||
|
x="11.827881"
|
||||||
|
y="42.471615" />
|
||||||
|
<rect
|
||||||
|
style="fill:#241c1c;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect7898"
|
||||||
|
width="41.76862"
|
||||||
|
height="18.292213"
|
||||||
|
x="11.827881"
|
||||||
|
y="81.096001" />
|
||||||
|
<rect
|
||||||
|
style="fill:#241c1c;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect7900"
|
||||||
|
width="28.363632"
|
||||||
|
height="18.870781"
|
||||||
|
x="76.911842"
|
||||||
|
y="81.096001" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 3.8 KiB |
72
frontend/public/images/taxi/map-cornerbottomleft.svg
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="50"
|
||||||
|
height="50"
|
||||||
|
viewBox="0 0 13.229167 13.229167"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
sodipodi:docname="map-bornerbottomleft.svg"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
width="50mm"
|
||||||
|
units="px"
|
||||||
|
inkscape:zoom="8.979798"
|
||||||
|
inkscape:cx="48.163667"
|
||||||
|
inkscape:cy="39.477503"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.140806"
|
||||||
|
id="rect13257"
|
||||||
|
width="13.088361"
|
||||||
|
height="4.8862772"
|
||||||
|
x="0.07040292"
|
||||||
|
y="0.07040292" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-6"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="0.043490551"
|
||||||
|
y="8.245574" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.140806"
|
||||||
|
id="rect13257-7"
|
||||||
|
width="4.8862777"
|
||||||
|
height="13.088361"
|
||||||
|
x="8.2724867"
|
||||||
|
y="0.043944586" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-5"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="8.245574"
|
||||||
|
y="0.043490551" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.1 KiB |
72
frontend/public/images/taxi/map-cornerbottomright.svg
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="50"
|
||||||
|
height="50"
|
||||||
|
viewBox="0 0 13.229167 13.229167"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
sodipodi:docname="map-bornerbottomrigh.svg"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
width="50mm"
|
||||||
|
units="px"
|
||||||
|
inkscape:zoom="8.979798"
|
||||||
|
inkscape:cx="48.163667"
|
||||||
|
inkscape:cy="39.477503"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.140806"
|
||||||
|
id="rect13257"
|
||||||
|
width="13.088361"
|
||||||
|
height="4.8862772"
|
||||||
|
x="0.07040292"
|
||||||
|
y="0.07040292" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.140806"
|
||||||
|
id="rect13257-6"
|
||||||
|
width="4.8862777"
|
||||||
|
height="13.088361"
|
||||||
|
x="0.07040292"
|
||||||
|
y="0.07040292" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-7"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="8.245574"
|
||||||
|
y="8.245574" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-5"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="8.245574"
|
||||||
|
y="0.043490551" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.1 KiB |
72
frontend/public/images/taxi/map-cornertopleft.svg
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="50"
|
||||||
|
height="50"
|
||||||
|
viewBox="0 0 13.229167 13.229167"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
sodipodi:docname="map-bornertopleft.svg"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
width="50mm"
|
||||||
|
units="px"
|
||||||
|
inkscape:zoom="8.979798"
|
||||||
|
inkscape:cx="48.163667"
|
||||||
|
inkscape:cy="39.477503"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="0.043490551"
|
||||||
|
y="0.043490551" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.140806"
|
||||||
|
id="rect13257-6"
|
||||||
|
width="13.088361"
|
||||||
|
height="4.8862772"
|
||||||
|
x="0.07040292"
|
||||||
|
y="8.2724867" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-7"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="8.245574"
|
||||||
|
y="8.245574" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.140806"
|
||||||
|
id="rect13257-5"
|
||||||
|
width="4.8862772"
|
||||||
|
height="13.088361"
|
||||||
|
x="8.2724867"
|
||||||
|
y="0.07040292" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.1 KiB |
72
frontend/public/images/taxi/map-cornertopright.svg
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="50"
|
||||||
|
height="50"
|
||||||
|
viewBox="0 0 13.229167 13.229167"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
sodipodi:docname="map-bornertopright.svg"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
width="50mm"
|
||||||
|
units="px"
|
||||||
|
inkscape:zoom="8.979798"
|
||||||
|
inkscape:cx="48.163667"
|
||||||
|
inkscape:cy="39.477503"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.140806"
|
||||||
|
id="rect13257"
|
||||||
|
width="4.8862772"
|
||||||
|
height="13.088361"
|
||||||
|
x="0.07040292"
|
||||||
|
y="0.07040292" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.140806"
|
||||||
|
id="rect13257-6"
|
||||||
|
width="13.088361"
|
||||||
|
height="4.8862772"
|
||||||
|
x="0.07040292"
|
||||||
|
y="8.2724867" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-7"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="8.245574"
|
||||||
|
y="8.245574" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-5"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="8.245574"
|
||||||
|
y="0.043490551" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.1 KiB |
72
frontend/public/images/taxi/map-cross.svg
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="50"
|
||||||
|
height="50"
|
||||||
|
viewBox="0 0 13.229167 13.229167"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
sodipodi:docname="map-cross.svg"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
width="50mm"
|
||||||
|
units="px"
|
||||||
|
inkscape:zoom="8.979798"
|
||||||
|
inkscape:cx="48.163667"
|
||||||
|
inkscape:cy="39.477503"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="0.043490551"
|
||||||
|
y="0.043490551" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-6"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="0.043490551"
|
||||||
|
y="8.245574" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-7"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="8.245574"
|
||||||
|
y="8.245574" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-5"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="8.245574"
|
||||||
|
y="0.043490551" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.0 KiB |
82
frontend/public/images/taxi/map-fuelhorizontal.svg
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="50"
|
||||||
|
height="50"
|
||||||
|
viewBox="0 0 13.229167 13.229167"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
sodipodi:docname="map-fuelhorizontal.svg"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
width="50mm"
|
||||||
|
units="px"
|
||||||
|
inkscape:zoom="8.979798"
|
||||||
|
inkscape:cx="48.163667"
|
||||||
|
inkscape:cy="23.107424"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.140806"
|
||||||
|
id="rect13257"
|
||||||
|
width="13.088361"
|
||||||
|
height="4.8862772"
|
||||||
|
x="0.07040292"
|
||||||
|
y="0.07040292" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.140806"
|
||||||
|
id="rect13257-6"
|
||||||
|
width="13.088361"
|
||||||
|
height="4.8862772"
|
||||||
|
x="0.07040292"
|
||||||
|
y="8.2724867" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-7"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="8.245574"
|
||||||
|
y="8.245574" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-5"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="8.245574"
|
||||||
|
y="0.043490551" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.233;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||||
|
d="m 7.3761776,0.79399793 c 0,0 0.057215,0.0869939 0.085136,0.13093373 0.022906,0.0360539 0.04713,0.0713765 0.067586,0.10887734 0.023893,0.0438 0.041594,0.090727 0.064168,0.1352174 0.022062,0.04347 0.04757,0.085126 0.069605,0.1286105 0.019039,0.037591 0.037297,0.075614 0.054039,0.1142815 0.019299,0.044556 0.03788,0.089515 0.053456,0.1355056 0.016177,0.047776 0.030729,0.09625 0.041424,0.1455449 0.011834,0.054539 0.025023,0.1655422 0.025023,0.1655422 v 0 c 0,0 -0.00861,0.1058814 -0.016751,0.1583251 -0.00984,0.06349 -0.022753,0.1265784 -0.038678,0.188821 -0.015109,0.059063 -0.035197,0.1167465 -0.05385,0.1747869 -0.023193,0.072161 -0.047211,0.1440635 -0.072198,0.215623 -0.026692,0.076446 -0.052899,0.1531287 -0.083018,0.2282915 -0.0261,0.065137 -0.055663,0.1288412 -0.08458,0.1927773 C 7.4537321,3.0918698 7.3836002,3.240177 7.3836002,3.240177"
|
||||||
|
id="path11082"
|
||||||
|
sodipodi:nodetypes="caaaaaaacaaaaaaac" />
|
||||||
|
<path
|
||||||
|
id="rect848"
|
||||||
|
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.0169741;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 5.7272047,0.20692473 h 1.3256019 c 0.1898981,0 0.3428996,0.15288449 0.3427758,0.34279017 l -0.011188,4.1921232 -0.3315957,0.00662 h -1.325599 c -0.1898982,0 -0.3427764,-0.00267 -0.3427764,-0.00267 v -4.196071 c 0,-0.18990577 0.1528782,-0.34279017 0.3427764,-0.34279017 z"
|
||||||
|
sodipodi:nodetypes="sssccscsss" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 3.6 KiB |
82
frontend/public/images/taxi/map-fuelvertical.svg
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="50"
|
||||||
|
height="50"
|
||||||
|
viewBox="0 0 13.229167 13.229167"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
sodipodi:docname="map-fuelvertical.svg"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
width="50mm"
|
||||||
|
units="px"
|
||||||
|
inkscape:zoom="8.979798"
|
||||||
|
inkscape:cx="48.275028"
|
||||||
|
inkscape:cy="19.766592"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.140806"
|
||||||
|
id="rect13257"
|
||||||
|
width="4.8862772"
|
||||||
|
height="13.088361"
|
||||||
|
x="0.07040292"
|
||||||
|
y="0.07040292" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-6"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="0.043490551"
|
||||||
|
y="8.245574" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-7"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="8.245574"
|
||||||
|
y="8.245574" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.140806"
|
||||||
|
id="rect13257-5"
|
||||||
|
width="4.8862772"
|
||||||
|
height="13.088361"
|
||||||
|
x="8.2724867"
|
||||||
|
y="0.07040292" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.259;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||||
|
d="m 12.08964,3.8328653 c 0,0 0.101248,0.1539388 0.150657,0.2316919 0.04053,0.063799 0.0834,0.1263033 0.119602,0.1926624 0.04228,0.077505 0.0736,0.1605447 0.113552,0.239272 0.03904,0.076921 0.08418,0.1506332 0.123174,0.2275807 0.03369,0.066518 0.066,0.133802 0.09563,0.2022253 0.03415,0.078844 0.06703,0.1584002 0.09459,0.239782 0.02863,0.084542 0.05438,0.1703175 0.0733,0.2575468 0.02094,0.096508 0.04428,0.2929328 0.04428,0.2929328 v 0 c 0,0 -0.01524,0.1873609 -0.02964,0.2801619 -0.01742,0.1123474 -0.04026,0.223985 -0.06845,0.3341255 -0.02674,0.1045136 -0.06228,0.206587 -0.09529,0.3092916 -0.04104,0.1276909 -0.08354,0.2549255 -0.127762,0.3815525 -0.04723,0.1352738 -0.09361,0.2709667 -0.14691,0.4039699 -0.04619,0.1152624 -0.0985,0.2279892 -0.149673,0.3411263 -0.05982,0.1322444 -0.18393,0.3946791 -0.18393,0.3946791"
|
||||||
|
id="path11082"
|
||||||
|
sodipodi:nodetypes="caaaaaaacaaaaaaac" />
|
||||||
|
<path
|
||||||
|
id="rect848"
|
||||||
|
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.0300369;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M 9.1716066,2.7940185 H 11.5174 c 0.336045,0 0.606798,0.2705345 0.606579,0.6065793 l -0.0198,7.4181112 -0.586794,0.01172 H 9.1715977 c -0.336045,0 -0.6065792,-0.0047 -0.6065792,-0.0047 V 3.4005978 c 0,-0.336045 0.2705342,-0.6065793 0.6065792,-0.6065793 z"
|
||||||
|
sodipodi:nodetypes="sssccscsss" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 3.6 KiB |
72
frontend/public/images/taxi/map-horizontal.svg
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="50"
|
||||||
|
height="50"
|
||||||
|
viewBox="0 0 13.229167 13.229167"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
sodipodi:docname="map-horizontal.svg"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
width="50mm"
|
||||||
|
units="px"
|
||||||
|
inkscape:zoom="8.979798"
|
||||||
|
inkscape:cx="48.163667"
|
||||||
|
inkscape:cy="39.477503"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.140806"
|
||||||
|
id="rect13257"
|
||||||
|
width="13.088361"
|
||||||
|
height="4.8862772"
|
||||||
|
x="0.07040292"
|
||||||
|
y="0.07040292" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.140806"
|
||||||
|
id="rect13257-6"
|
||||||
|
width="13.088361"
|
||||||
|
height="4.8862772"
|
||||||
|
x="0.07040292"
|
||||||
|
y="8.2724867" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-7"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="8.245574"
|
||||||
|
y="8.245574" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-5"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="8.245574"
|
||||||
|
y="0.043490551" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.1 KiB |
72
frontend/public/images/taxi/map-tdown.svg
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="50"
|
||||||
|
height="50"
|
||||||
|
viewBox="0 0 13.229167 13.229167"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
sodipodi:docname="map-tbottom.svg"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
width="50mm"
|
||||||
|
units="px"
|
||||||
|
inkscape:zoom="8.979798"
|
||||||
|
inkscape:cx="48.163667"
|
||||||
|
inkscape:cy="39.477503"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.140806"
|
||||||
|
id="rect13257"
|
||||||
|
width="13.088361"
|
||||||
|
height="4.8862772"
|
||||||
|
x="0.07040292"
|
||||||
|
y="0.07040292" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-6"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="0.043490551"
|
||||||
|
y="8.245574" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-7"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="8.245574"
|
||||||
|
y="8.245574" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-5"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="8.245574"
|
||||||
|
y="0.043490551" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.0 KiB |
72
frontend/public/images/taxi/map-tleft.svg
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="50"
|
||||||
|
height="50"
|
||||||
|
viewBox="0 0 13.229167 13.229167"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
sodipodi:docname="map-tleft.svg"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
width="50mm"
|
||||||
|
units="px"
|
||||||
|
inkscape:zoom="8.979798"
|
||||||
|
inkscape:cx="48.163667"
|
||||||
|
inkscape:cy="39.477503"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="0.043490551"
|
||||||
|
y="0.043490551" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-6"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="0.043490551"
|
||||||
|
y="8.245574" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-7"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="8.245574"
|
||||||
|
y="8.245574" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.140806"
|
||||||
|
id="rect13257-5"
|
||||||
|
width="4.8862772"
|
||||||
|
height="13.088361"
|
||||||
|
x="8.2724867"
|
||||||
|
y="0.07040292" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.0 KiB |
72
frontend/public/images/taxi/map-tright.svg
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="50"
|
||||||
|
height="50"
|
||||||
|
viewBox="0 0 13.229167 13.229167"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
sodipodi:docname="map-tright.svg"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
width="50mm"
|
||||||
|
units="px"
|
||||||
|
inkscape:zoom="8.979798"
|
||||||
|
inkscape:cx="48.163667"
|
||||||
|
inkscape:cy="39.477503"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.140806"
|
||||||
|
id="rect13257"
|
||||||
|
width="4.8862772"
|
||||||
|
height="13.088361"
|
||||||
|
x="0.07040292"
|
||||||
|
y="0.07040292" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-6"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="0.043490551"
|
||||||
|
y="8.245574" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-7"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="8.245574"
|
||||||
|
y="8.245574" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-5"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="8.245574"
|
||||||
|
y="0.043490551" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.0 KiB |
72
frontend/public/images/taxi/map-tup.svg
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="50"
|
||||||
|
height="50"
|
||||||
|
viewBox="0 0 13.229167 13.229167"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
sodipodi:docname="map-tup.svg"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
width="50mm"
|
||||||
|
units="px"
|
||||||
|
inkscape:zoom="8.979798"
|
||||||
|
inkscape:cx="48.163667"
|
||||||
|
inkscape:cy="39.477503"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="0.043490551"
|
||||||
|
y="0.043490551" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.140806"
|
||||||
|
id="rect13257-6"
|
||||||
|
width="13.088361"
|
||||||
|
height="4.8862772"
|
||||||
|
x="0.07040292"
|
||||||
|
y="8.2724867" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-7"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="8.245574"
|
||||||
|
y="8.245574" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-5"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="8.245574"
|
||||||
|
y="0.043490551" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.0 KiB |
72
frontend/public/images/taxi/map-vertical.svg
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="50"
|
||||||
|
height="50"
|
||||||
|
viewBox="0 0 13.229167 13.229167"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
sodipodi:docname="map-vertical.svg"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
width="50mm"
|
||||||
|
units="px"
|
||||||
|
inkscape:zoom="8.979798"
|
||||||
|
inkscape:cx="48.163667"
|
||||||
|
inkscape:cy="39.477503"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.140806"
|
||||||
|
id="rect13257"
|
||||||
|
width="4.8862772"
|
||||||
|
height="13.088361"
|
||||||
|
x="0.07040292"
|
||||||
|
y="0.07040292" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-6"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="0.043490551"
|
||||||
|
y="8.245574" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0869811"
|
||||||
|
id="rect13257-7"
|
||||||
|
width="4.9401021"
|
||||||
|
height="4.9401021"
|
||||||
|
x="8.245574"
|
||||||
|
y="8.245574" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.140806"
|
||||||
|
id="rect13257-5"
|
||||||
|
width="4.8862772"
|
||||||
|
height="13.088361"
|
||||||
|
x="8.2724867"
|
||||||
|
y="0.07040292" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.0 KiB |
105
frontend/public/images/taxi/person.svg
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="130mm"
|
||||||
|
height="297mm"
|
||||||
|
viewBox="0 0 130 297"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="person.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.56123738"
|
||||||
|
inkscape:cx="218.26772"
|
||||||
|
inkscape:cy="407.13611"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<g
|
||||||
|
id="g841"
|
||||||
|
transform="matrix(1.7109573,0,0,1.7109573,-49.007973,-145.44907)">
|
||||||
|
<path
|
||||||
|
id="rect864"
|
||||||
|
style="fill:#803300;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3"
|
||||||
|
d="M 55.096026,182.19109 H 66.769062 L 41.25794,258.53351 H 29.584904 Z"
|
||||||
|
sodipodi:nodetypes="ccccc" />
|
||||||
|
<path
|
||||||
|
id="rect864-3"
|
||||||
|
style="fill:#803300;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3"
|
||||||
|
d="M 78.442095,182.19109 H 66.769062 l 25.511119,76.34242 h 11.673039 z"
|
||||||
|
sodipodi:nodetypes="ccccc" />
|
||||||
|
<rect
|
||||||
|
style="fill:#d3bc5f;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3"
|
||||||
|
id="rect1296"
|
||||||
|
width="23.094477"
|
||||||
|
height="71.230904"
|
||||||
|
x="55.096027"
|
||||||
|
y="110.96018"
|
||||||
|
ry="0" />
|
||||||
|
<path
|
||||||
|
id="rect1300"
|
||||||
|
style="fill:#d3bc5f;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3"
|
||||||
|
d="m 78.190506,110.96018 h 7.673717 l 9.540904,64.23331 H 87.73141 Z"
|
||||||
|
sodipodi:nodetypes="ccccc" />
|
||||||
|
<path
|
||||||
|
id="rect1300-6"
|
||||||
|
style="fill:#d3bc5f;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3"
|
||||||
|
d="M 55.096027,110.96018 H 47.42231 l -9.540904,64.2333 h 7.673717 z"
|
||||||
|
sodipodi:nodetypes="ccccc" />
|
||||||
|
<ellipse
|
||||||
|
style="fill:#ffe6d5;fill-rule:evenodd;stroke:#000000;stroke-width:0.556395;stroke-miterlimit:3.3"
|
||||||
|
id="path1860"
|
||||||
|
cx="66.643265"
|
||||||
|
cy="98.193443"
|
||||||
|
rx="12.722526"
|
||||||
|
ry="12.729039" />
|
||||||
|
<circle
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3"
|
||||||
|
id="path2018"
|
||||||
|
cx="61.15995"
|
||||||
|
cy="93.070518"
|
||||||
|
r="1.6208154" />
|
||||||
|
<circle
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:#000000;stroke-width:0.412626;stroke-miterlimit:3.3"
|
||||||
|
id="path2018-7"
|
||||||
|
cx="71.804031"
|
||||||
|
cy="92.805939"
|
||||||
|
r="1.3904188" />
|
||||||
|
<ellipse
|
||||||
|
style="fill:#ffccaa;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3"
|
||||||
|
id="path2172"
|
||||||
|
cx="66.603874"
|
||||||
|
cy="99.576675"
|
||||||
|
rx="1.3070318"
|
||||||
|
ry="1.0586804" />
|
||||||
|
<path
|
||||||
|
id="path2196"
|
||||||
|
style="fill:#ffccaa;fill-rule:evenodd;stroke:#000000;stroke-width:0.601609;stroke-miterlimit:3.3"
|
||||||
|
d="m 74.437708,102.79926 c 4e-6,1.4069 -3.456697,2.54741 -7.720743,2.54741 -4.264046,0 -7.720748,-1.14051 -7.720744,-2.54741 3e-6,-0.90337 1.187738,0.0717 3.181242,0.83353 1.694697,0.6476 2.573313,0.49344 4.099408,0.49344 1.692122,0 3.447143,-0.10081 4.803025,-0.53224 2.06086,-0.65575 3.357809,-1.64332 3.357812,-0.79473 z"
|
||||||
|
sodipodi:nodetypes="sssssss" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 4.0 KiB |
67
frontend/public/images/taxi/radar.svg
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="210mm"
|
||||||
|
height="210mm"
|
||||||
|
viewBox="0 0 210 210"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="radar.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.56123737"
|
||||||
|
inkscape:cx="396.44544"
|
||||||
|
inkscape:cy="560.36895"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<g
|
||||||
|
id="g1444"
|
||||||
|
transform="matrix(3.2401803,0,0,3.2401803,-256.36921,-306.88579)">
|
||||||
|
<rect
|
||||||
|
style="fill:#786721;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect868"
|
||||||
|
width="62.955742"
|
||||||
|
height="49.764977"
|
||||||
|
x="80.049629"
|
||||||
|
y="95.024445" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.274529px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="M 79.901845,159.5435 93.34906,144.54032"
|
||||||
|
id="path1200" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="M 143.16022,159.08456 129.70597,145.15607"
|
||||||
|
id="path1200-3" />
|
||||||
|
<circle
|
||||||
|
style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.499999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path1358"
|
||||||
|
cx="131.23929"
|
||||||
|
cy="116.87977"
|
||||||
|
r="8.3879414" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.3 KiB |
73
frontend/public/images/taxi/redlight.svg
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="210mm"
|
||||||
|
height="210mm"
|
||||||
|
viewBox="0 0 210 210"
|
||||||
|
version="1.1"
|
||||||
|
id="svg2844"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="redlight.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview2846"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.56123737"
|
||||||
|
inkscape:cx="109.5793"
|
||||||
|
inkscape:cy="560.36896"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
height="210mm" />
|
||||||
|
<defs
|
||||||
|
id="defs2841" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<g
|
||||||
|
id="g829"
|
||||||
|
transform="matrix(2.1908531,0,0,2.1908531,-130.48541,-182.47651)">
|
||||||
|
<rect
|
||||||
|
style="fill:#333333;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="30.798695"
|
||||||
|
height="95.249992"
|
||||||
|
x="92.086365"
|
||||||
|
y="83.903572"
|
||||||
|
ry="3.6688216" />
|
||||||
|
<circle
|
||||||
|
style="fill:#d40000;fill-rule:evenodd;stroke:#000000;stroke-width:0.434597;stroke-miterlimit:3.3"
|
||||||
|
id="path927"
|
||||||
|
cx="107.48571"
|
||||||
|
cy="99.990768"
|
||||||
|
r="12.388993" />
|
||||||
|
<circle
|
||||||
|
style="fill:#422c00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.434597;stroke-miterlimit:3.3"
|
||||||
|
id="path927-3"
|
||||||
|
cx="107.48571"
|
||||||
|
cy="130.1545"
|
||||||
|
r="12.388993" />
|
||||||
|
<circle
|
||||||
|
style="fill:#002800;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.434597;stroke-miterlimit:3.3"
|
||||||
|
id="path927-6"
|
||||||
|
cx="107.48571"
|
||||||
|
cy="161.45821"
|
||||||
|
r="12.388993" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.2 KiB |
74
frontend/public/images/taxi/taxi.svg
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="66.542mm"
|
||||||
|
height="131.97301mm"
|
||||||
|
viewBox="0 0 66.542 131.97301"
|
||||||
|
version="1.1"
|
||||||
|
id="svg957"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="taxi.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview959"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.56123737"
|
||||||
|
inkscape:cx="-179.06862"
|
||||||
|
inkscape:cy="560.36896"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs954" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#e6d690;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.465391;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="131.50793"
|
||||||
|
height="66.076797"
|
||||||
|
x="-131.74063"
|
||||||
|
y="0.2326965"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.479108;stroke-miterlimit:3.3"
|
||||||
|
id="rect1016"
|
||||||
|
width="15.774606"
|
||||||
|
height="66.096329"
|
||||||
|
x="-110.37288"
|
||||||
|
y="0.44752184"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3"
|
||||||
|
id="rect1018"
|
||||||
|
width="22.247723"
|
||||||
|
height="65.980431"
|
||||||
|
x="-44.058758"
|
||||||
|
y="0.61777174"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3"
|
||||||
|
id="rect1176"
|
||||||
|
width="3.3279102"
|
||||||
|
height="12.234275"
|
||||||
|
x="-55.588726"
|
||||||
|
y="27.564478"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.3 KiB |
81
frontend/public/images/taxi/tdown.svg
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="200mm"
|
||||||
|
height="200mm"
|
||||||
|
viewBox="0 0 200 200"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="tdown.svg"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/tright.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="1.1224747"
|
||||||
|
inkscape:cx="391.54557"
|
||||||
|
inkscape:cy="427.18112"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
width="200mm" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.698168;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="200"
|
||||||
|
height="200"
|
||||||
|
x="-200"
|
||||||
|
y="0"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.29538;stroke-miterlimit:3.3"
|
||||||
|
id="rect986"
|
||||||
|
width="100"
|
||||||
|
height="50"
|
||||||
|
x="-200"
|
||||||
|
y="75"
|
||||||
|
ry="0"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.417732;stroke-miterlimit:3.3"
|
||||||
|
id="rect986-6"
|
||||||
|
width="200"
|
||||||
|
height="50"
|
||||||
|
x="-200"
|
||||||
|
y="-125"
|
||||||
|
ry="0"
|
||||||
|
transform="scale(-1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.5 KiB |
82
frontend/public/images/taxi/ticket.svg
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="210mm"
|
||||||
|
height="210mm"
|
||||||
|
viewBox="0 0 210 210"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="ticket.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.56123737"
|
||||||
|
inkscape:cx="56.125985"
|
||||||
|
inkscape:cy="560.36896"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
height="210mm" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<g
|
||||||
|
id="g837"
|
||||||
|
transform="matrix(1.3293508,0,0,1.3293508,-33.154799,-73.565064)">
|
||||||
|
<rect
|
||||||
|
style="fill:#fffff4;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="111.00117"
|
||||||
|
height="157.49057"
|
||||||
|
x="48.425934"
|
||||||
|
y="55.833076" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:8.365;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M 58.281391,74.318408 H 145.0201"
|
||||||
|
id="path2168" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:8.365;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M 58.281405,94.269281 H 145.02009"
|
||||||
|
id="path2168-3" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:8.365;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M 58.281404,114.22015 H 145.02009"
|
||||||
|
id="path2168-3-6" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:8.365;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M 58.281392,134.17101 H 145.0201"
|
||||||
|
id="path2168-7" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:8.365;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M 58.281406,154.12188 H 145.02009"
|
||||||
|
id="path2168-3-5" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:8.365;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M 58.281405,174.07274 H 145.02009"
|
||||||
|
id="path2168-3-6-3" />
|
||||||
|
<path
|
||||||
|
style="fill:#ff0000;fill-rule:evenodd;stroke:#f00000;stroke-width:8.365;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="M 58.281406,194.02361 H 145.02009"
|
||||||
|
id="path2168-3-6-3-5" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 3.4 KiB |
81
frontend/public/images/taxi/tleft.svg
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="200mm"
|
||||||
|
height="200mm"
|
||||||
|
viewBox="0 0 200 200"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="tleft.svg"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/cross.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="1.1224747"
|
||||||
|
inkscape:cx="391.54557"
|
||||||
|
inkscape:cy="427.18112"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
width="200mm" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.698168;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="200"
|
||||||
|
height="200"
|
||||||
|
x="-200"
|
||||||
|
y="-200"
|
||||||
|
transform="matrix(0,-1,-1,0,0,0)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.417731;stroke-miterlimit:3.3"
|
||||||
|
id="rect986"
|
||||||
|
width="200"
|
||||||
|
height="50"
|
||||||
|
x="-200"
|
||||||
|
y="-125"
|
||||||
|
ry="0"
|
||||||
|
transform="matrix(0,-1,-1,0,0,0)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.295381;stroke-miterlimit:3.3"
|
||||||
|
id="rect986-6"
|
||||||
|
width="100"
|
||||||
|
height="50"
|
||||||
|
x="0"
|
||||||
|
y="-125"
|
||||||
|
ry="0"
|
||||||
|
transform="scale(1,-1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.6 KiB |
75
frontend/public/images/taxi/trafficlight-green.svg
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="210mm"
|
||||||
|
height="297mm"
|
||||||
|
viewBox="0 0 210 297"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="trafficlight-green.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.56123737"
|
||||||
|
inkscape:cx="396.44545"
|
||||||
|
inkscape:cy="560.36896"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.483677;stroke-miterlimit:3.3"
|
||||||
|
id="rect2066"
|
||||||
|
width="9.8816996"
|
||||||
|
height="142.79434"
|
||||||
|
x="77.262375"
|
||||||
|
y="122.88019" />
|
||||||
|
<rect
|
||||||
|
style="fill:#333333;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="30.798695"
|
||||||
|
height="95.249992"
|
||||||
|
x="66.939056"
|
||||||
|
y="28.724499"
|
||||||
|
ry="3.6688216" />
|
||||||
|
<circle
|
||||||
|
style="fill:#5a0000;fill-rule:evenodd;stroke:#000000;stroke-width:0.434597;stroke-miterlimit:3.3;fill-opacity:1"
|
||||||
|
id="path927"
|
||||||
|
cx="82.338402"
|
||||||
|
cy="44.811695"
|
||||||
|
r="12.388993" />
|
||||||
|
<circle
|
||||||
|
style="fill:#422c00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.434597;stroke-miterlimit:3.3"
|
||||||
|
id="path927-3"
|
||||||
|
cx="82.338402"
|
||||||
|
cy="74.975426"
|
||||||
|
r="12.388993" />
|
||||||
|
<circle
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:#000000;stroke-width:0.434597;stroke-miterlimit:3.3;fill-opacity:1"
|
||||||
|
id="path927-6"
|
||||||
|
cx="82.338402"
|
||||||
|
cy="106.27913"
|
||||||
|
r="12.388993" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.3 KiB |
75
frontend/public/images/taxi/trafficlight-red.svg
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="210mm"
|
||||||
|
height="297mm"
|
||||||
|
viewBox="0 0 210 297"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="trafficlight-red.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.56123737"
|
||||||
|
inkscape:cx="396.44545"
|
||||||
|
inkscape:cy="560.36896"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.483677;stroke-miterlimit:3.3"
|
||||||
|
id="rect2066"
|
||||||
|
width="9.8816996"
|
||||||
|
height="142.79434"
|
||||||
|
x="77.262375"
|
||||||
|
y="122.88019" />
|
||||||
|
<rect
|
||||||
|
style="fill:#333333;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="30.798695"
|
||||||
|
height="95.249992"
|
||||||
|
x="66.939056"
|
||||||
|
y="28.724499"
|
||||||
|
ry="3.6688216" />
|
||||||
|
<circle
|
||||||
|
style="fill:#d40000;fill-rule:evenodd;stroke:#000000;stroke-width:0.434597;stroke-miterlimit:3.3"
|
||||||
|
id="path927"
|
||||||
|
cx="82.338402"
|
||||||
|
cy="44.811695"
|
||||||
|
r="12.388993" />
|
||||||
|
<circle
|
||||||
|
style="fill:#422c00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.434597;stroke-miterlimit:3.3"
|
||||||
|
id="path927-3"
|
||||||
|
cx="82.338402"
|
||||||
|
cy="74.975426"
|
||||||
|
r="12.388993" />
|
||||||
|
<circle
|
||||||
|
style="fill:#002800;fill-rule:evenodd;stroke:#000000;stroke-width:0.434597;stroke-miterlimit:3.3;fill-opacity:1"
|
||||||
|
id="path927-6"
|
||||||
|
cx="82.338402"
|
||||||
|
cy="106.27913"
|
||||||
|
r="12.388993" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.3 KiB |
75
frontend/public/images/taxi/trafficlight-redyellow.svg
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="210mm"
|
||||||
|
height="297mm"
|
||||||
|
viewBox="0 0 210 297"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="trafficlight-redyellow.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.56123737"
|
||||||
|
inkscape:cx="396.44545"
|
||||||
|
inkscape:cy="560.36896"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.483677;stroke-miterlimit:3.3"
|
||||||
|
id="rect2066"
|
||||||
|
width="9.8816996"
|
||||||
|
height="142.79434"
|
||||||
|
x="77.262375"
|
||||||
|
y="122.88019" />
|
||||||
|
<rect
|
||||||
|
style="fill:#333333;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="30.798695"
|
||||||
|
height="95.249992"
|
||||||
|
x="66.939056"
|
||||||
|
y="28.724499"
|
||||||
|
ry="3.6688216" />
|
||||||
|
<circle
|
||||||
|
style="fill:#d40000;fill-rule:evenodd;stroke:#000000;stroke-width:0.434597;stroke-miterlimit:3.3"
|
||||||
|
id="path927"
|
||||||
|
cx="82.338402"
|
||||||
|
cy="44.811695"
|
||||||
|
r="12.388993" />
|
||||||
|
<circle
|
||||||
|
style="fill:#d48c00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.434597;stroke-miterlimit:3.3"
|
||||||
|
id="path927-3"
|
||||||
|
cx="82.338402"
|
||||||
|
cy="74.975426"
|
||||||
|
r="12.388993" />
|
||||||
|
<circle
|
||||||
|
style="fill:#002800;fill-rule:evenodd;stroke:#000000;stroke-width:0.434597;stroke-miterlimit:3.3;fill-opacity:1"
|
||||||
|
id="path927-6"
|
||||||
|
cx="82.338402"
|
||||||
|
cy="106.27913"
|
||||||
|
r="12.388993" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.3 KiB |
75
frontend/public/images/taxi/trafficlight-yellow.svg
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="210mm"
|
||||||
|
height="297mm"
|
||||||
|
viewBox="0 0 210 297"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="trafficlight-yellow.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.56123737"
|
||||||
|
inkscape:cx="396.44545"
|
||||||
|
inkscape:cy="560.36896"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.483677;stroke-miterlimit:3.3"
|
||||||
|
id="rect2066"
|
||||||
|
width="9.8816996"
|
||||||
|
height="142.79434"
|
||||||
|
x="77.262375"
|
||||||
|
y="122.88019" />
|
||||||
|
<rect
|
||||||
|
style="fill:#333333;fill-rule:evenodd;stroke:#000000;stroke-width:0.480999;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="30.798695"
|
||||||
|
height="95.249992"
|
||||||
|
x="66.939056"
|
||||||
|
y="28.724499"
|
||||||
|
ry="3.6688216" />
|
||||||
|
<circle
|
||||||
|
style="fill:#5a0000;fill-rule:evenodd;stroke:#000000;stroke-width:0.434597;stroke-miterlimit:3.3;fill-opacity:1"
|
||||||
|
id="path927"
|
||||||
|
cx="82.338402"
|
||||||
|
cy="44.811695"
|
||||||
|
r="12.388993" />
|
||||||
|
<circle
|
||||||
|
style="fill:#d48c00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.434597;stroke-miterlimit:3.3"
|
||||||
|
id="path927-3"
|
||||||
|
cx="82.338402"
|
||||||
|
cy="74.975426"
|
||||||
|
r="12.388993" />
|
||||||
|
<circle
|
||||||
|
style="fill:#002800;fill-rule:evenodd;stroke:#000000;stroke-width:0.434597;stroke-miterlimit:3.3;fill-opacity:1"
|
||||||
|
id="path927-6"
|
||||||
|
cx="82.338402"
|
||||||
|
cy="106.27913"
|
||||||
|
r="12.388993" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.3 KiB |
81
frontend/public/images/taxi/tright.svg
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="200mm"
|
||||||
|
height="200mm"
|
||||||
|
viewBox="0 0 200 200"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="tright.svg"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/tleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="1.1224747"
|
||||||
|
inkscape:cx="391.54557"
|
||||||
|
inkscape:cy="427.18112"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
width="200mm" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.698168;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="200"
|
||||||
|
height="200"
|
||||||
|
x="-200"
|
||||||
|
y="0"
|
||||||
|
transform="rotate(-90)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.417731;stroke-miterlimit:3.3"
|
||||||
|
id="rect986"
|
||||||
|
width="200"
|
||||||
|
height="50"
|
||||||
|
x="-200"
|
||||||
|
y="75"
|
||||||
|
ry="0"
|
||||||
|
transform="rotate(-90)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.295381;stroke-miterlimit:3.3"
|
||||||
|
id="rect986-6"
|
||||||
|
width="100"
|
||||||
|
height="50"
|
||||||
|
x="-200"
|
||||||
|
y="-125"
|
||||||
|
ry="0"
|
||||||
|
transform="scale(-1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.5 KiB |
81
frontend/public/images/taxi/tup.svg
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="200mm"
|
||||||
|
height="200mm"
|
||||||
|
viewBox="0 0 200 200"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="tup.svg"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/tright.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="1.1224747"
|
||||||
|
inkscape:cx="391.54557"
|
||||||
|
inkscape:cy="427.18112"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
width="200mm" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.698168;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="200"
|
||||||
|
height="200"
|
||||||
|
x="-200"
|
||||||
|
y="0"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.29538;stroke-miterlimit:3.3"
|
||||||
|
id="rect986"
|
||||||
|
width="100"
|
||||||
|
height="50"
|
||||||
|
x="-100"
|
||||||
|
y="75"
|
||||||
|
ry="0"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/tbottom.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5"
|
||||||
|
transform="rotate(-90)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.417732;stroke-miterlimit:3.3"
|
||||||
|
id="rect986-6"
|
||||||
|
width="200"
|
||||||
|
height="50"
|
||||||
|
x="-200"
|
||||||
|
y="-125"
|
||||||
|
ry="0"
|
||||||
|
transform="scale(-1)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.5 KiB |
69
frontend/public/images/taxi/vertical.svg
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="200mm"
|
||||||
|
height="200mm"
|
||||||
|
viewBox="0 0 200 200"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
|
sodipodi:docname="vertical.svg"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/horizontal.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="1.1224747"
|
||||||
|
inkscape:cx="391.54557"
|
||||||
|
inkscape:cy="498.45221"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1009"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
width="200mm" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:0.698168;stroke-miterlimit:3.3"
|
||||||
|
id="rect846"
|
||||||
|
width="200"
|
||||||
|
height="200"
|
||||||
|
x="-200"
|
||||||
|
y="-200"
|
||||||
|
transform="matrix(0,-1,-1,0,0,0)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
<rect
|
||||||
|
style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:0.417731;stroke-miterlimit:3.3"
|
||||||
|
id="rect986"
|
||||||
|
width="200"
|
||||||
|
height="50"
|
||||||
|
x="-200"
|
||||||
|
y="-125"
|
||||||
|
ry="0"
|
||||||
|
transform="matrix(0,-1,-1,0,0,0)"
|
||||||
|
inkscape:export-filename="/home/torsten/Bilder/your-part/backgrounds/taxi/topleft.png"
|
||||||
|
inkscape:export-xdpi="63.5"
|
||||||
|
inkscape:export-ydpi="63.5" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.2 KiB |
323
frontend/src/data/streetCoordinates.json
Normal file
@@ -0,0 +1,323 @@
|
|||||||
|
{
|
||||||
|
"tileSize": 640,
|
||||||
|
"tiles": {
|
||||||
|
"cornerBottomRight": {
|
||||||
|
"regions": [
|
||||||
|
[
|
||||||
|
{"x": 0, "y": 0},
|
||||||
|
{"x": 0, "y": 1},
|
||||||
|
{"x": 0.375, "y": 1},
|
||||||
|
{"x": 0.375, "y": 0.427},
|
||||||
|
{"x": 0.38, "y": 0.409},
|
||||||
|
{"x": 0.389, "y": 0.397},
|
||||||
|
{"x": 0.4, "y": 0.388},
|
||||||
|
{"x": 0.408, "y": 0.397},
|
||||||
|
{"x": 0.417, "y": 0.38},
|
||||||
|
{"x": 0.434, "y": 0.375},
|
||||||
|
{"x": 1, "y": 0.375},
|
||||||
|
{"x": 1, "y": 0}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{"x": 0.625, "y": 1},
|
||||||
|
{"x": 0.625, "y": 0.663},
|
||||||
|
{"x": 0.629, "y": 0.651},
|
||||||
|
{"x": 0.632, "y": 0.647},
|
||||||
|
{"x": 0.634, "y": 0.642},
|
||||||
|
{"x": 0.641, "y": 0.636},
|
||||||
|
{"x": 0.648, "y": 0.632},
|
||||||
|
{"x": 0.656, "y": 0.625},
|
||||||
|
{"x": 1, "y": 0.625},
|
||||||
|
{"x": 1, "y": 1}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"cornerBottomLeft": {
|
||||||
|
"regions": [
|
||||||
|
[
|
||||||
|
{"x": 0, "y": 0.375},
|
||||||
|
{"x": 0.575, "y": 0.375},
|
||||||
|
{"x": 0.588, "y": 0.38},
|
||||||
|
{"x": 0.6, "y": 0.386},
|
||||||
|
{"x": 0.611, "y": 0.395},
|
||||||
|
{"x": 0.619, "y": 0.406},
|
||||||
|
{"x": 0.625, "y": 0.422},
|
||||||
|
{"x": 0.625, "y": 1},
|
||||||
|
{"x": 1, "y": 1},
|
||||||
|
{"x": 1, "y": 0},
|
||||||
|
{"x": 0, "y": 0}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{"x": 0, "y": 0.625},
|
||||||
|
{"x": 0.336, "y": 0.625},
|
||||||
|
{"x": 0.35, "y": 0.629},
|
||||||
|
{"x": 0.359, "y": 0.636},
|
||||||
|
{"x": 0.366, "y": 0.642},
|
||||||
|
{"x": 0.373, "y": 0.651},
|
||||||
|
{"x": 0.375, "y": 0.659},
|
||||||
|
{"x": 0.375, "y": 1},
|
||||||
|
{"x": 0, "y": 1}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"cornerTopLeft": {
|
||||||
|
"regions": [
|
||||||
|
[
|
||||||
|
{"x": 0.375, "y": 0},
|
||||||
|
{"x": 0.375, "y": 0.339},
|
||||||
|
{"x": 0.372, "y": 0.353},
|
||||||
|
{"x": 0.366, "y": 0.363},
|
||||||
|
{"x": 0.361, "y": 0.367},
|
||||||
|
{"x": 0.356, "y": 0.37},
|
||||||
|
{"x": 0.348, "y": 0.373},
|
||||||
|
{"x": 0.336, "y": 0.375},
|
||||||
|
{"x": 0, "y": 0.375},
|
||||||
|
{"x": 0, "y": 0}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{"x": 0.625, "y": 0},
|
||||||
|
{"x": 0.625, "y": 0.583},
|
||||||
|
{"x": 0.62, "y": 0.594},
|
||||||
|
{"x": 0.615, "y": 0.605},
|
||||||
|
{"x": 0.605, "y": 0.614},
|
||||||
|
{"x": 0.594, "y": 0.621},
|
||||||
|
{"x": 0.584, "y": 0.625},
|
||||||
|
{"x": 0, "y": 0.625},
|
||||||
|
{"x": 0, "y": 1},
|
||||||
|
{"x": 1, "y": 1},
|
||||||
|
{"x": 1, "y": 0}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"cornerTopRight": {
|
||||||
|
"regions": [
|
||||||
|
[
|
||||||
|
{"x": 0.375, "y": 0},
|
||||||
|
{"x": 0.375, "y": 0.583},
|
||||||
|
{"x": 0.38, "y": 0.594},
|
||||||
|
{"x": 0.384, "y": 0.605},
|
||||||
|
{"x": 0.395, "y": 0.614},
|
||||||
|
{"x": 0.406, "y": 0.621},
|
||||||
|
{"x": 0.416, "y": 0.625},
|
||||||
|
{"x": 1, "y": 0.625},
|
||||||
|
{"x": 1, "y": 1},
|
||||||
|
{"x": 0, "y": 1},
|
||||||
|
{"x": 0, "y": 0}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{"x": 0.625, "y": 0},
|
||||||
|
{"x": 0.625, "y": 0.339},
|
||||||
|
{"x": 0.628, "y": 0.353},
|
||||||
|
{"x": 0.634, "y": 0.363},
|
||||||
|
{"x": 0.639, "y": 0.367},
|
||||||
|
{"x": 0.644, "y": 0.37},
|
||||||
|
{"x": 0.652, "y": 0.373},
|
||||||
|
{"x": 0.664, "y": 0.375},
|
||||||
|
{"x": 1, "y": 0.375},
|
||||||
|
{"x": 1, "y": 0}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"horizontal": {
|
||||||
|
"regions": [
|
||||||
|
[
|
||||||
|
{"x": 0, "y": 0.375},
|
||||||
|
{"x": 1, "y": 0.375},
|
||||||
|
{"x": 1, "y": 0},
|
||||||
|
{"x": 0, "y": 0}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{"x": 0, "y": 0.625},
|
||||||
|
{"x": 1, "y": 0.625},
|
||||||
|
{"x": 1, "y": 1},
|
||||||
|
{"x": 0, "y": 1}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"vertical": {
|
||||||
|
"regions": [
|
||||||
|
[
|
||||||
|
{"x": 0.375, "y": 0},
|
||||||
|
{"x": 0.375, "y": 1},
|
||||||
|
{"x": 0, "y": 1},
|
||||||
|
{"x": 0, "y": 0}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{"x": 0.625, "y": 0},
|
||||||
|
{"x": 0.625, "y": 1},
|
||||||
|
{"x": 1, "y": 1},
|
||||||
|
{"x": 1, "y": 0}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"cross": {
|
||||||
|
"regions": [
|
||||||
|
[
|
||||||
|
{"x": 0.375, "y": 0},
|
||||||
|
{"x": 0.375, "y": 0.375},
|
||||||
|
{"x": 0, "y": 0.375},
|
||||||
|
{"x": 0, "y": 0}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{"x": 0.625, "y": 0},
|
||||||
|
{"x": 0.625, "y": 0.375},
|
||||||
|
{"x": 1, "y": 0.375},
|
||||||
|
{"x": 1, "y": 0}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{"x": 0.375, "y": 1},
|
||||||
|
{"x": 0.375, "y": 0.625},
|
||||||
|
{"x": 0, "y": 0.625},
|
||||||
|
{"x": 0, "y": 1}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{"x": 0.625, "y": 1},
|
||||||
|
{"x": 0.625, "y": 0.625},
|
||||||
|
{"x": 1, "y": 0.625},
|
||||||
|
{"x": 1, "y": 1}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"fuelHorizontal": {
|
||||||
|
"regions": [
|
||||||
|
[
|
||||||
|
{"x": 0, "y": 0.375},
|
||||||
|
{"x": 0.075, "y": 0.375},
|
||||||
|
{"x": 0.384, "y": 0.195},
|
||||||
|
{"x": 0.615, "y": 0.195},
|
||||||
|
{"x": 0.925, "y": 0.375},
|
||||||
|
{"x": 1, "y": 0.375},
|
||||||
|
{"x": 1, "y": 0},
|
||||||
|
{"x": 0, "y": 0}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{"x": 0.25, "y": 0.375},
|
||||||
|
{"x": 0.384, "y": 0.299},
|
||||||
|
{"x": 0.615, "y": 0.299},
|
||||||
|
{"x": 0.75, "y": 0.375},
|
||||||
|
{"x": 0.25, "y": 0.375}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{"x": 0, "y": 0.625},
|
||||||
|
{"x": 1, "y": 0.625},
|
||||||
|
{"x": 1, "y": 1},
|
||||||
|
{"x": 0, "y": 1}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"fuelVertical": {
|
||||||
|
"regions": [
|
||||||
|
[
|
||||||
|
{"x": 0.625, "y": 0},
|
||||||
|
{"x": 0.625, "y": 0.075},
|
||||||
|
{"x": 0.805, "y": 0.384},
|
||||||
|
{"x": 0.805, "y": 0.615},
|
||||||
|
{"x": 0.625, "y": 0.925},
|
||||||
|
{"x": 0.625, "y": 1},
|
||||||
|
{"x": 1, "y": 1},
|
||||||
|
{"x": 1, "y": 0}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{"x": 0.625, "y": 0.25},
|
||||||
|
{"x": 0.701, "y": 0.384},
|
||||||
|
{"x": 0.701, "y": 0.615},
|
||||||
|
{"x": 0.625, "y": 0.75},
|
||||||
|
{"x": 0.625, "y": 0.25}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{"x": 0.375, "y": 0},
|
||||||
|
{"x": 0.375, "y": 1},
|
||||||
|
{"x": 0, "y": 1},
|
||||||
|
{"x": 0, "y": 0}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"tLeft": {
|
||||||
|
"regions": [
|
||||||
|
[
|
||||||
|
{"x": 0, "y": 0.375},
|
||||||
|
{"x": 0.375, "y": 0.375},
|
||||||
|
{"x": 0.375, "y": 0},
|
||||||
|
{"x": 0, "y": 0}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{"x": 0, "y": 0.625},
|
||||||
|
{"x": 0.375, "y": 0.625},
|
||||||
|
{"x": 0.375, "y": 1},
|
||||||
|
{"x": 0, "y": 1}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{"x": 0.625, "y": 0},
|
||||||
|
{"x": 0.625, "y": 1},
|
||||||
|
{"x": 1, "y": 1},
|
||||||
|
{"x": 1, "y": 0}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"tRight": {
|
||||||
|
"regions": [
|
||||||
|
[
|
||||||
|
{"x": 0.375, "y": 0},
|
||||||
|
{"x": 0.375, "y": 1},
|
||||||
|
{"x": 0, "y": 1},
|
||||||
|
{"x": 0, "y": 0}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{"x": 0.625, "y": 0},
|
||||||
|
{"x": 0.625, "y": 0.375},
|
||||||
|
{"x": 1, "y": 0.375},
|
||||||
|
{"x": 1, "y": 0}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{"x": 0.625, "y": 1},
|
||||||
|
{"x": 0.625, "y": 0.625},
|
||||||
|
{"x": 1, "y": 0.625},
|
||||||
|
{"x": 1, "y": 1}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"tUp": {
|
||||||
|
"regions": [
|
||||||
|
[
|
||||||
|
{"x": 0, "y": 0.375},
|
||||||
|
{"x": 0.375, "y": 0.375},
|
||||||
|
{"x": 0.375, "y": 0},
|
||||||
|
{"x": 0, "y": 0}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{"x": 1, "y": 0.375},
|
||||||
|
{"x": 0.625, "y": 0.375},
|
||||||
|
{"x": 0.625, "y": 0},
|
||||||
|
{"x": 1, "y": 0}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{"x": 0, "y": 0.625},
|
||||||
|
{"x": 1, "y": 0.625},
|
||||||
|
{"x": 1, "y": 1},
|
||||||
|
{"x": 0, "y": 1}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"tDown": {
|
||||||
|
"regions": [
|
||||||
|
[
|
||||||
|
{"x": 0, "y": 0.375},
|
||||||
|
{"x": 1, "y": 0.375},
|
||||||
|
{"x": 1, "y": 0},
|
||||||
|
{"x": 0, "y": 0}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{"x": 0, "y": 0.625},
|
||||||
|
{"x": 0.375, "y": 0.625},
|
||||||
|
{"x": 0.375, "y": 1},
|
||||||
|
{"x": 0, "y": 1}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{"x": 1, "y": 0.625},
|
||||||
|
{"x": 0.625, "y": 0.625},
|
||||||
|
{"x": 0.625, "y": 1},
|
||||||
|
{"x": 1, "y": 1}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -192,6 +192,34 @@
|
|||||||
"totalUsers": "Gesamtanzahl Benutzer",
|
"totalUsers": "Gesamtanzahl Benutzer",
|
||||||
"genderDistribution": "Geschlechterverteilung",
|
"genderDistribution": "Geschlechterverteilung",
|
||||||
"ageDistribution": "Altersverteilung"
|
"ageDistribution": "Altersverteilung"
|
||||||
|
},
|
||||||
|
"taxiTools": {
|
||||||
|
"title": "Taxi-Tools",
|
||||||
|
"description": "Verwalte Taxi-Maps, Level und Konfigurationen",
|
||||||
|
"mapEditor": {
|
||||||
|
"title": "Map bearbeiten",
|
||||||
|
"availableMaps": "Verfügbare Maps: {count}",
|
||||||
|
"newMap": "Neue Map erstellen",
|
||||||
|
"mapFormat": "{name} (Position: {x},{y})",
|
||||||
|
"mapName": "Map-Name",
|
||||||
|
"mapDescription": "Beschreibung",
|
||||||
|
"mapWidth": "Breite",
|
||||||
|
"mapHeight": "Höhe",
|
||||||
|
"tileSize": "Tile-Größe",
|
||||||
|
"positionX": "X-Position",
|
||||||
|
"positionY": "Y-Position",
|
||||||
|
"mapType": "Map-Typ",
|
||||||
|
"mapLayout": "Map-Layout",
|
||||||
|
"tilePalette": "Tile-Palette",
|
||||||
|
"position": "Position",
|
||||||
|
"fillAllRoads": "Alle Straßen",
|
||||||
|
"clearAll": "Alle löschen",
|
||||||
|
"generateRandom": "Zufällig generieren",
|
||||||
|
"delete": "Löschen",
|
||||||
|
"update": "Aktualisieren",
|
||||||
|
"cancel": "Abbrechen",
|
||||||
|
"create": "Erstellen"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -33,6 +33,37 @@
|
|||||||
"totalStars": "Gesamtsterne",
|
"totalStars": "Gesamtsterne",
|
||||||
"levelsCompleted": "Abgeschlossene Level",
|
"levelsCompleted": "Abgeschlossene Level",
|
||||||
"restartCampaign": "Kampagne neu starten"
|
"restartCampaign": "Kampagne neu starten"
|
||||||
|
},
|
||||||
|
"taxi": {
|
||||||
|
"title": "Taxi Simulator",
|
||||||
|
"description": "Fahre Passagiere durch die Stadt und verdiene Geld!",
|
||||||
|
"gameStats": "Spiel-Statistiken",
|
||||||
|
"score": "Punkte",
|
||||||
|
"money": "Geld",
|
||||||
|
"passengers": "Passagiere",
|
||||||
|
"currentLevel": "Aktueller Level",
|
||||||
|
"level": "Level",
|
||||||
|
"fuel": "Treibstoff",
|
||||||
|
"fuelLeft": "Verbleibender Treibstoff",
|
||||||
|
"restartLevel": "Level neu starten",
|
||||||
|
"pause": "Pause",
|
||||||
|
"resume": "Weiterspielen",
|
||||||
|
"paused": "Spiel pausiert",
|
||||||
|
"levelComplete": "Level abgeschlossen!",
|
||||||
|
"levelScore": "Level-Punktzahl",
|
||||||
|
"moneyEarned": "Verdientes Geld",
|
||||||
|
"passengersDelivered": "Beförderte Passagiere",
|
||||||
|
"nextLevel": "Nächster Level",
|
||||||
|
"campaignComplete": "Kampagne abgeschlossen!",
|
||||||
|
"totalScore": "Gesamtpunktzahl",
|
||||||
|
"totalMoney": "Gesamtgeld",
|
||||||
|
"levelsCompleted": "Abgeschlossene Level",
|
||||||
|
"restartCampaign": "Kampagne neu starten",
|
||||||
|
"pickupPassenger": "Passagier aufnehmen",
|
||||||
|
"deliverPassenger": "Passagier abliefern",
|
||||||
|
"refuel": "Tanken",
|
||||||
|
"startEngine": "Motor starten",
|
||||||
|
"stopEngine": "Motor stoppen"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,8 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"m-minigames": {
|
"m-minigames": {
|
||||||
"match3": "Match 3 - Juwelen"
|
"match3": "Match 3 - Juwelen",
|
||||||
|
"taxi": "Taxi Simulator"
|
||||||
},
|
},
|
||||||
"m-settings": {
|
"m-settings": {
|
||||||
"homepage": "Startseite",
|
"homepage": "Startseite",
|
||||||
@@ -60,7 +61,8 @@
|
|||||||
},
|
},
|
||||||
"minigames": "Minispiele",
|
"minigames": "Minispiele",
|
||||||
"m-minigames": {
|
"m-minigames": {
|
||||||
"match3": "Match3 Level"
|
"match3": "Match3 Level",
|
||||||
|
"taxiTools": "Taxi-Tools"
|
||||||
},
|
},
|
||||||
"chatrooms": "Chaträume"
|
"chatrooms": "Chaträume"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -192,6 +192,34 @@
|
|||||||
"totalUsers": "Total Users",
|
"totalUsers": "Total Users",
|
||||||
"genderDistribution": "Gender Distribution",
|
"genderDistribution": "Gender Distribution",
|
||||||
"ageDistribution": "Age Distribution"
|
"ageDistribution": "Age Distribution"
|
||||||
|
},
|
||||||
|
"taxiTools": {
|
||||||
|
"title": "Taxi Tools",
|
||||||
|
"description": "Manage Taxi maps, levels and configurations",
|
||||||
|
"mapEditor": {
|
||||||
|
"title": "Edit Map",
|
||||||
|
"availableMaps": "Available Maps: {count}",
|
||||||
|
"newMap": "Create New Map",
|
||||||
|
"mapFormat": "{name} (Position: {x},{y})",
|
||||||
|
"mapName": "Map Name",
|
||||||
|
"mapDescription": "Description",
|
||||||
|
"mapWidth": "Width",
|
||||||
|
"mapHeight": "Height",
|
||||||
|
"tileSize": "Tile Size",
|
||||||
|
"positionX": "X Position",
|
||||||
|
"positionY": "Y Position",
|
||||||
|
"mapType": "Map Type",
|
||||||
|
"mapLayout": "Map Layout",
|
||||||
|
"tilePalette": "Tile Palette",
|
||||||
|
"position": "Position",
|
||||||
|
"fillAllRoads": "All Roads",
|
||||||
|
"clearAll": "Clear All",
|
||||||
|
"generateRandom": "Generate Random",
|
||||||
|
"delete": "Delete",
|
||||||
|
"update": "Update",
|
||||||
|
"cancel": "Cancel",
|
||||||
|
"create": "Create"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -33,6 +33,37 @@
|
|||||||
"totalStars": "Total Stars",
|
"totalStars": "Total Stars",
|
||||||
"levelsCompleted": "Levels Completed",
|
"levelsCompleted": "Levels Completed",
|
||||||
"restartCampaign": "Restart Campaign"
|
"restartCampaign": "Restart Campaign"
|
||||||
|
},
|
||||||
|
"taxi": {
|
||||||
|
"title": "Taxi Simulator",
|
||||||
|
"description": "Drive passengers through the city and earn money!",
|
||||||
|
"gameStats": "Game Statistics",
|
||||||
|
"score": "Score",
|
||||||
|
"money": "Money",
|
||||||
|
"passengers": "Passengers",
|
||||||
|
"currentLevel": "Current Level",
|
||||||
|
"level": "Level",
|
||||||
|
"fuel": "Fuel",
|
||||||
|
"fuelLeft": "Fuel Left",
|
||||||
|
"restartLevel": "Restart Level",
|
||||||
|
"pause": "Pause",
|
||||||
|
"resume": "Resume",
|
||||||
|
"paused": "Game Paused",
|
||||||
|
"levelComplete": "Level Complete!",
|
||||||
|
"levelScore": "Level Score",
|
||||||
|
"moneyEarned": "Money Earned",
|
||||||
|
"passengersDelivered": "Passengers Delivered",
|
||||||
|
"nextLevel": "Next Level",
|
||||||
|
"campaignComplete": "Campaign Complete!",
|
||||||
|
"totalScore": "Total Score",
|
||||||
|
"totalMoney": "Total Money",
|
||||||
|
"levelsCompleted": "Levels Completed",
|
||||||
|
"restartCampaign": "Restart Campaign",
|
||||||
|
"pickupPassenger": "Pick up Passenger",
|
||||||
|
"deliverPassenger": "Deliver Passenger",
|
||||||
|
"refuel": "Refuel",
|
||||||
|
"startEngine": "Start Engine",
|
||||||
|
"stopEngine": "Stop Engine"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,8 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"m-minigames": {
|
"m-minigames": {
|
||||||
"match3": "Match 3 - Jewels"
|
"match3": "Match 3 - Jewels",
|
||||||
|
"taxi": "Taxi Simulator"
|
||||||
},
|
},
|
||||||
"m-settings": {
|
"m-settings": {
|
||||||
"homepage": "Homepage",
|
"homepage": "Homepage",
|
||||||
@@ -60,7 +61,8 @@
|
|||||||
},
|
},
|
||||||
"minigames": "Mini games",
|
"minigames": "Mini games",
|
||||||
"m-minigames": {
|
"m-minigames": {
|
||||||
"match3": "Match3 Levels"
|
"match3": "Match3 Levels",
|
||||||
|
"taxiTools": "Taxi Tools"
|
||||||
},
|
},
|
||||||
"chatrooms": "Chat rooms"
|
"chatrooms": "Chat rooms"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import UserRightsView from '../views/admin/UserRightsView.vue';
|
|||||||
import ForumAdminView from '../dialogues/admin/ForumAdminView.vue';
|
import ForumAdminView from '../dialogues/admin/ForumAdminView.vue';
|
||||||
import AdminFalukantEditUserView from '../views/admin/falukant/EditUserView.vue';
|
import AdminFalukantEditUserView from '../views/admin/falukant/EditUserView.vue';
|
||||||
import AdminMinigamesView from '../views/admin/MinigamesView.vue';
|
import AdminMinigamesView from '../views/admin/MinigamesView.vue';
|
||||||
|
import AdminTaxiToolsView from '../views/admin/TaxiToolsView.vue';
|
||||||
import AdminUsersView from '../views/admin/UsersView.vue';
|
import AdminUsersView from '../views/admin/UsersView.vue';
|
||||||
import UserStatisticsView from '../views/admin/UserStatisticsView.vue';
|
import UserStatisticsView from '../views/admin/UserStatisticsView.vue';
|
||||||
|
|
||||||
@@ -62,6 +63,12 @@ const adminRoutes = [
|
|||||||
name: 'AdminMinigames',
|
name: 'AdminMinigames',
|
||||||
component: AdminMinigamesView,
|
component: AdminMinigamesView,
|
||||||
meta: { requiresAuth: true }
|
meta: { requiresAuth: true }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/admin/minigames/taxi-tools',
|
||||||
|
name: 'AdminTaxiTools',
|
||||||
|
component: AdminTaxiToolsView,
|
||||||
|
meta: { requiresAuth: true }
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import Match3Game from '../views/minigames/Match3Game.vue';
|
import Match3Game from '../views/minigames/Match3Game.vue';
|
||||||
|
import TaxiGame from '../views/minigames/TaxiGame.vue';
|
||||||
|
|
||||||
const minigamesRoutes = [
|
const minigamesRoutes = [
|
||||||
{
|
{
|
||||||
@@ -6,6 +7,12 @@ const minigamesRoutes = [
|
|||||||
name: 'Match3Game',
|
name: 'Match3Game',
|
||||||
component: Match3Game,
|
component: Match3Game,
|
||||||
meta: { requiresAuth: true }
|
meta: { requiresAuth: true }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/minigames/taxi',
|
||||||
|
name: 'TaxiGame',
|
||||||
|
component: TaxiGame,
|
||||||
|
meta: { requiresAuth: true }
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
141
frontend/src/utils/streetCoordinates.js
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
import streetData from '../data/streetCoordinates.json';
|
||||||
|
|
||||||
|
class StreetCoordinates {
|
||||||
|
constructor() {
|
||||||
|
this.data = streetData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Konvertiert relative Koordinaten (0-1) zu absoluten Koordinaten
|
||||||
|
* @param {number} relativeX - Relative X-Koordinate (0-1)
|
||||||
|
* @param {number} relativeY - Relative Y-Koordinate (0-1)
|
||||||
|
* @param {number} tileSize - Größe des Tiles in Pixeln
|
||||||
|
* @returns {Object} Absolute Koordinaten {x, y}
|
||||||
|
*/
|
||||||
|
toAbsolute(relativeX, relativeY, tileSize) {
|
||||||
|
return {
|
||||||
|
x: Math.round(relativeX * tileSize),
|
||||||
|
y: Math.round(relativeY * tileSize)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Konvertiert absolute Koordinaten zu relativen Koordinaten (0-1)
|
||||||
|
* @param {number} absoluteX - Absolute X-Koordinate
|
||||||
|
* @param {number} absoluteY - Absolute Y-Koordinate
|
||||||
|
* @param {number} tileSize - Größe des Tiles in Pixeln
|
||||||
|
* @returns {Object} Relative Koordinaten {x, y}
|
||||||
|
*/
|
||||||
|
toRelative(absoluteX, absoluteY, tileSize) {
|
||||||
|
return {
|
||||||
|
x: absoluteX / tileSize,
|
||||||
|
y: absoluteY / tileSize
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gibt die Straßenregionen für einen Tile-Typ zurück
|
||||||
|
* @param {string} tileType - Typ des Tiles (z.B. 'cornerBottomRight')
|
||||||
|
* @param {number} tileSize - Größe des Tiles in Pixeln
|
||||||
|
* @returns {Array} Array von Polygonen mit absoluten Koordinaten
|
||||||
|
*/
|
||||||
|
getDriveableRegions(tileType, tileSize) {
|
||||||
|
const tile = this.data.tiles[tileType];
|
||||||
|
if (!tile) {
|
||||||
|
console.warn(`Tile type '${tileType}' not found`);
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
return tile.regions.map(region =>
|
||||||
|
region.map(point => this.toAbsolute(point.x, point.y, tileSize))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prüft, ob ein Punkt innerhalb der fahrbaren Bereiche liegt
|
||||||
|
* @param {number} x - X-Koordinate des Punktes
|
||||||
|
* @param {number} y - Y-Koordinate des Punktes
|
||||||
|
* @param {string} tileType - Typ des Tiles
|
||||||
|
* @param {number} tileSize - Größe des Tiles in Pixeln
|
||||||
|
* @returns {boolean} True wenn der Punkt fahrbar ist
|
||||||
|
*/
|
||||||
|
isPointDriveable(x, y, tileType, tileSize) {
|
||||||
|
const regions = this.getDriveableRegions(tileType, tileSize);
|
||||||
|
|
||||||
|
for (const region of regions) {
|
||||||
|
if (this.isPointInPolygon(x, y, region)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prüft, ob ein Punkt innerhalb eines Polygons liegt (Ray Casting Algorithm)
|
||||||
|
* @param {number} x - X-Koordinate des Punktes
|
||||||
|
* @param {number} y - Y-Koordinate des Punktes
|
||||||
|
* @param {Array} polygon - Array von {x, y} Punkten
|
||||||
|
* @returns {boolean} True wenn der Punkt im Polygon liegt
|
||||||
|
*/
|
||||||
|
isPointInPolygon(x, y, polygon) {
|
||||||
|
let inside = false;
|
||||||
|
for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
|
||||||
|
if (((polygon[i].y > y) !== (polygon[j].y > y)) &&
|
||||||
|
(x < (polygon[j].x - polygon[i].x) * (y - polygon[i].y) / (polygon[j].y - polygon[i].y) + polygon[i].x)) {
|
||||||
|
inside = !inside;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return inside;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Zeichnet die Straßenregionen auf einem Canvas
|
||||||
|
* @param {CanvasRenderingContext2D} ctx - Canvas 2D Context
|
||||||
|
* @param {string} tileType - Typ des Tiles
|
||||||
|
* @param {number} tileSize - Größe des Tiles in Pixeln
|
||||||
|
* @param {number} offsetX - X-Offset für das Tile
|
||||||
|
* @param {number} offsetY - Y-Offset für das Tile
|
||||||
|
*/
|
||||||
|
drawDriveableRegions(ctx, tileType, tileSize, offsetX = 0, offsetY = 0) {
|
||||||
|
const regions = this.getDriveableRegions(tileType, tileSize);
|
||||||
|
|
||||||
|
ctx.fillStyle = '#f0f0f0'; // Straßenfarbe
|
||||||
|
ctx.strokeStyle = '#333';
|
||||||
|
ctx.lineWidth = 1;
|
||||||
|
|
||||||
|
for (const region of regions) {
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(region[0].x + offsetX, region[0].y + offsetY);
|
||||||
|
|
||||||
|
for (let i = 1; i < region.length; i++) {
|
||||||
|
ctx.lineTo(region[i].x + offsetX, region[i].y + offsetY);
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx.closePath();
|
||||||
|
ctx.fill();
|
||||||
|
ctx.stroke();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gibt alle verfügbaren Tile-Typen zurück
|
||||||
|
* @returns {Array} Array von Tile-Typen
|
||||||
|
*/
|
||||||
|
getAvailableTileTypes() {
|
||||||
|
return Object.keys(this.data.tiles);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gibt die ursprüngliche Tile-Größe zurück
|
||||||
|
* @returns {number} Ursprüngliche Tile-Größe in Pixeln
|
||||||
|
*/
|
||||||
|
getOriginalTileSize() {
|
||||||
|
return this.data.tileSize;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Singleton-Instanz
|
||||||
|
const streetCoordinates = new StreetCoordinates();
|
||||||
|
|
||||||
|
export default streetCoordinates;
|
||||||
1093
frontend/src/views/admin/TaxiToolsView.vue
Normal file
@@ -1,116 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="minigames-view">
|
|
||||||
<v-container>
|
|
||||||
<v-row>
|
|
||||||
<v-col cols="12">
|
|
||||||
<h1 class="text-h3 mb-6">{{ $t('minigames.title') }}</h1>
|
|
||||||
<p class="text-body-1 mb-8">{{ $t('minigames.description') }}</p>
|
|
||||||
</v-col>
|
|
||||||
</v-row>
|
|
||||||
|
|
||||||
<v-row>
|
|
||||||
<v-col cols="12" md="6" lg="4">
|
|
||||||
<v-card
|
|
||||||
class="game-card"
|
|
||||||
@click="navigateToGame('match3')"
|
|
||||||
hover
|
|
||||||
elevation="4"
|
|
||||||
>
|
|
||||||
<v-img
|
|
||||||
src="/images/icons/game.png"
|
|
||||||
height="200"
|
|
||||||
cover
|
|
||||||
class="game-image"
|
|
||||||
></v-img>
|
|
||||||
<v-card-title class="text-h5">
|
|
||||||
{{ $t('minigames.match3.title') }}
|
|
||||||
</v-card-title>
|
|
||||||
<v-card-text>
|
|
||||||
{{ $t('minigames.match3.description') }}
|
|
||||||
</v-card-text>
|
|
||||||
<v-card-actions>
|
|
||||||
<v-btn
|
|
||||||
color="primary"
|
|
||||||
variant="elevated"
|
|
||||||
@click="navigateToGame('match3')"
|
|
||||||
>
|
|
||||||
{{ $t('minigames.play') }}
|
|
||||||
</v-btn>
|
|
||||||
</v-card-actions>
|
|
||||||
</v-card>
|
|
||||||
</v-col>
|
|
||||||
|
|
||||||
<!-- Platzhalter für weitere Spiele -->
|
|
||||||
<v-col cols="12" md="6" lg="4">
|
|
||||||
<v-card class="game-card coming-soon" disabled>
|
|
||||||
<v-img
|
|
||||||
src="/images/icons/coming-soon.png"
|
|
||||||
height="200"
|
|
||||||
cover
|
|
||||||
class="game-image"
|
|
||||||
></v-img>
|
|
||||||
<v-card-title class="text-h5">
|
|
||||||
{{ $t('minigames.comingSoon.title') }}
|
|
||||||
</v-card-title>
|
|
||||||
<v-card-text>
|
|
||||||
{{ $t('minigames.comingSoon.description') }}
|
|
||||||
</v-card-text>
|
|
||||||
<v-card-actions>
|
|
||||||
<v-btn disabled>
|
|
||||||
{{ $t('minigames.comingSoon') }}
|
|
||||||
</v-btn>
|
|
||||||
</v-card-actions>
|
|
||||||
</v-card>
|
|
||||||
</v-col>
|
|
||||||
</v-row>
|
|
||||||
</v-container>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
name: 'MinigamesView',
|
|
||||||
methods: {
|
|
||||||
navigateToGame(game) {
|
|
||||||
this.$router.push(`/minigames/${game}`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.minigames-view {
|
|
||||||
min-height: 100vh;
|
|
||||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
||||||
padding: 20px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.game-card {
|
|
||||||
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
|
||||||
cursor: pointer;
|
|
||||||
border-radius: 16px;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.game-card:hover:not(.coming-soon) {
|
|
||||||
transform: translateY(-8px);
|
|
||||||
box-shadow: 0 12px 24px rgba(0,0,0,0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.game-image {
|
|
||||||
background: linear-gradient(45deg, #ff6b6b, #4ecdc4);
|
|
||||||
}
|
|
||||||
|
|
||||||
.coming-soon {
|
|
||||||
opacity: 0.7;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
color: white;
|
|
||||||
text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
color: rgba(255,255,255,0.9);
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||