Add NPC creation and titles retrieval functionality in Admin module
- Implemented createNPCs method in AdminController to handle NPC creation with specified parameters including region, age, title, and count. - Added getTitlesOfNobility method in AdminController to retrieve available titles for users. - Updated adminRouter to include new routes for creating NPCs and fetching titles. - Enhanced navigationController and frontend localization files to support new NPC creation feature. - Introduced corresponding UI components and routes for NPC management in the admin interface.
This commit is contained in:
@@ -43,6 +43,8 @@ class AdminController {
|
||||
this.getRegionDistances = this.getRegionDistances.bind(this);
|
||||
this.upsertRegionDistance = this.upsertRegionDistance.bind(this);
|
||||
this.deleteRegionDistance = this.deleteRegionDistance.bind(this);
|
||||
this.createNPCs = this.createNPCs.bind(this);
|
||||
this.getTitlesOfNobility = this.getTitlesOfNobility.bind(this);
|
||||
}
|
||||
|
||||
async getOpenInterests(req, res) {
|
||||
@@ -383,6 +385,38 @@ class AdminController {
|
||||
}
|
||||
}
|
||||
|
||||
async createNPCs(req, res) {
|
||||
try {
|
||||
const { userid: userId } = req.headers;
|
||||
const { regionIds, minAge, maxAge, minTitleId, maxTitleId, count } = req.body;
|
||||
const result = await AdminService.createNPCs(userId, {
|
||||
regionIds: regionIds && regionIds.length > 0 ? regionIds : null,
|
||||
minAge: parseInt(minAge) || 0,
|
||||
maxAge: parseInt(maxAge) || 100,
|
||||
minTitleId: parseInt(minTitleId) || 1,
|
||||
maxTitleId: parseInt(maxTitleId) || 19,
|
||||
count: parseInt(count) || 1
|
||||
});
|
||||
res.status(200).json(result);
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
const status = error.message === 'noaccess' ? 403 : 500;
|
||||
res.status(status).json({ error: error.message });
|
||||
}
|
||||
}
|
||||
|
||||
async getTitlesOfNobility(req, res) {
|
||||
try {
|
||||
const { userid: userId } = req.headers;
|
||||
const titles = await AdminService.getTitlesOfNobility(userId);
|
||||
res.status(200).json(titles);
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
const status = error.message === 'noaccess' ? 403 : 500;
|
||||
res.status(status).json({ error: error.message });
|
||||
}
|
||||
}
|
||||
|
||||
async getRoomTypes(req, res) {
|
||||
try {
|
||||
const userId = req.headers.userid;
|
||||
|
||||
@@ -280,6 +280,10 @@ const menuStructure = {
|
||||
visible: ["mainadmin", "falukant"],
|
||||
path: "/admin/falukant/map"
|
||||
},
|
||||
createNPC: {
|
||||
visible: ["mainadmin", "falukant"],
|
||||
path: "/admin/falukant/create-npc"
|
||||
},
|
||||
}
|
||||
},
|
||||
minigames: {
|
||||
|
||||
Reference in New Issue
Block a user