Skip to content

Commit

Permalink
- Reldens - v4.0.0-beta.37
Browse files Browse the repository at this point in the history
- Merge pull request #253 from damian-pastorini/v4.0.0-beta.37
  • Loading branch information
damian-pastorini authored Jul 23, 2024
2 parents fea1b91 + 351d4cb commit 88e0e35
Show file tree
Hide file tree
Showing 23 changed files with 608 additions and 122 deletions.
3 changes: 3 additions & 0 deletions lib/admin/server/admin-manager-config.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ class AdminManagerConfig extends PropertiesHandler
this.fileStorageManager = serverManager?.appServerFactory?.fileStorageManager;
this.bodyParser = serverManager?.appServerFactory?.bodyParser;
this.session = serverManager?.appServerFactory?.session;
this.broadcastCallback = (props) => {
return serverManager?.serverBroadcast(props);
};
this.requiredProperties = Object.keys(this);
}

Expand Down
291 changes: 236 additions & 55 deletions lib/admin/server/admin-manager.js

Large diffs are not rendered by default.

5 changes: 4 additions & 1 deletion lib/admin/server/admin-translations.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,10 @@ class AdminTranslations
adminVersion: 'Admin: {{version}}',
loginWelcome: 'Reldens',
pages: 'Server Management',
management: 'Management'
management: 'Management',
shuttingDown: 'Server is shutting down in:',
submitShutdownLabel: 'Shutdown Server',
submitCancelLabel: 'Cancel Server Shutdown',
}
};
for(let i of Object.keys(translations)){
Expand Down
6 changes: 3 additions & 3 deletions lib/admin/server/subscribers/activate-admin-subscriber.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ class ActivateAdminSubscriber
Logger.error('EventsManager not found in ActivateAdminSubscriber.');
return false;
}
serverManager.events.emit('reldens.beforeCreateAdminManager', this);
serverManager.events.emit('reldens.beforeCreateAdminManager', {serverManager});
serverManager.serverAdmin = new AdminManager(new AdminManagerConfig(serverManager));
serverManager.events.emit('reldens.beforeSetupAdminManager', this);
serverManager.events.emit('reldens.beforeSetupAdminManager', {serverManager});
await serverManager.serverAdmin.setupAdmin();
serverManager.events.emit('reldens.afterCreateAdminManager', this);
serverManager.events.emit('reldens.afterCreateAdminManager', {serverManager});
}

}
Expand Down
1 change: 1 addition & 0 deletions lib/admin/server/templates-list.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
module.exports.TemplatesList = {
login: 'login.html',
dashboard: 'dashboard.html',
management: 'management.html',
list: 'list.html',
listContent: 'list-content.html',
view: 'view.html',
Expand Down
3 changes: 1 addition & 2 deletions lib/game/server/game-server.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
*
*/

const { Server } = require('colyseus');
const Monitor = require('@colyseus/monitor');
const basicAuth = require('express-basic-auth');
const { Server } = require('colyseus');
const { Logger } = require('@reldens/utils');

class GameServer extends Server
Expand All @@ -16,7 +16,6 @@ class GameServer extends Server
{
// @TODO - BETA - Create a Colyseus driver.
super(options);
// set shutdown callback:
this.onShutdown(() => this.runOnShutDown());
}

Expand Down
2 changes: 1 addition & 1 deletion lib/game/server/installer.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const express = require('express');
const bodyParser = require('body-parser');
const session = require('express-session');
const crypto = require('crypto');
const TemplateEngine = require('./template-engine');
const { TemplateEngine } = require('./template-engine');
const { DriversMap } = require('./storage/drivers-map');
const { Logger, sc } = require('@reldens/utils');

Expand Down
23 changes: 23 additions & 0 deletions lib/game/server/manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ const { ThemeManager } = require('./theme-manager');
const { MapsLoader } = require('./maps-loader');
const { ForgotPassword } = require('./forgot-password');
const { Installer } = require('./installer');
const { RoomScene } = require('../../rooms/server/scene');
const { GameConst } = require('../constants');
const { ChatConst } = require('../../chat/constants');
const { EventsManagerSingleton, Logger, sc } = require('@reldens/utils');

class ServerManager
Expand Down Expand Up @@ -330,6 +333,26 @@ class ServerManager
await this.events.emit('reldens.serverConfigReady', {serverManager: this, configProcessor: this.configManager});
}

async serverBroadcast(props)
{
if(!props.message){
return false;
}
let messageSendModel = {
[GameConst.ACTION_KEY]: ChatConst.CHAT_ACTION,
[ChatConst.TYPES.KEY]: ChatConst.TYPES.ERROR,
[ChatConst.MESSAGE.KEY]: props.message,
};
let roomsKeys = Object.keys(this.roomsManager.createdInstances);
for(let roomKey of roomsKeys){
let room = this.roomsManager.createdInstances[roomKey];
if (room instanceof RoomScene){
room.broadcast('*', messageSendModel);
}
}
return true;
}

}

module.exports.ServerManager = ServerManager;
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ class PlayerDeathSubscriber
objectPosition = nextDropPosition;
}
}
room.disableOnDispose();
room.disableAutoDispose();
let dropsMappedData = this.mapDropsData(dropsObjects, room);
// TODO - fix, check if data was already sent and only broadcast the keys and the new ones.
let eventResult = true;
Expand Down
2 changes: 1 addition & 1 deletion lib/rewards/server/rewards-drops-processor.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class RewardsDropsProcessor
if(!rewards){
return;
}
roomScene.disableOnDispose();
roomScene.disableAutoDispose();
let dropsMappedData = RewardsDropsMapper.mapDropsData(rewards, roomScene);
let eventResult = true;
await roomScene.events.emit('reldens.afterProcessRewardsDropsBeforeBroadcast', dropsMappedData, eventResult);
Expand Down
14 changes: 12 additions & 2 deletions lib/rooms/server/login.js
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,18 @@ class RoomLogin extends Room

onDispose()
{
this.events.emitSync('reldens.onRoomDispose', {roomName: this.roomName, roomId: this.roomId});
Logger.info('ON-DISPOSE Room: '+this.roomName);
return new Promise((resolve, reject) => {
let result = {confirm: true};
let event = {roomName: this.roomName, roomId: this.roomId, result};
try {
this.events.emitSync('reldens.onRoomDispose', event);
Logger.info('ON-DISPOSE Room: ' + this.roomName);
} catch (error) {
result.confirm = false;
event.error = error;
}
result.confirm ? resolve(event) : reject(event);
});
}

}
Expand Down
45 changes: 27 additions & 18 deletions lib/rooms/server/scene.js
Original file line number Diff line number Diff line change
Expand Up @@ -507,6 +507,7 @@ class RoomScene extends RoomLogin
});
if(playerSchema && stateObject.isRemoveReady){
this.removeAllPlayerReferences(playerSchema, sessionId);
Logger.info('Removed player: '+playerSchema.playerName+' - Session ID: '+sessionId);
return playerSchema;
}
ErrorManager.error('Player not found, session ID: ' + sessionId);
Expand Down Expand Up @@ -691,7 +692,7 @@ class RoomScene extends RoomLogin
this.objectsManager.removeObjectData(roomObject);
this.deleteObjectSceneData(roomObject);
if(!this.hasActiveDroppedObjects()){
this.enableOnDispose();
this.enableAutoDispose();
}
this.broadcast('*', {act: ObjectsConst.DROPS.REMOVE, id: roomObject.objectIndex});
}
Expand All @@ -708,21 +709,29 @@ class RoomScene extends RoomLogin

onDispose()
{
Logger.info('ON-DISPOSE Room: '+this.roomName);
this.logEventsData('before');
this.clearMovementIntervals();
this.clearWorldTimers();
this.cleanUpRoomWorld();
// @TODO - BETA - Replace this by a master key related to the room ID and just remove all the events related
// to this room.
this.handleRespawnOnRoomDispose();
this.handleObjectsManagerOnRoomDispose();
delete this.objectsManager;
delete this.roomWorld;
this.roomWorld = {};
this.events.offByMasterKey(this.roomName+'-'+this.roomId);
super.onDispose();
this.logEventsData('after');
return new Promise((resolve, reject) => {
try {
Logger.info('ON-DISPOSE Room: ' + this.roomName);
this.logEventsData('before');
this.clearMovementIntervals();
this.clearWorldTimers();
this.cleanUpRoomWorld();
// @TODO - BETA - Replace this by a master key related to the room ID and just remove all the events related
// to this room.
this.handleRespawnOnRoomDispose();
this.handleObjectsManagerOnRoomDispose();
delete this.objectsManager;
delete this.roomWorld;
this.roomWorld = {};
this.events.offByMasterKey(this.roomName + '-' + this.roomId);
super.onDispose();
this.logEventsData('after');
} catch (error) {
resolve({confirm: false, error});
}
Logger.info('Disposed room: ' + this.roomName);
resolve({confirm: true});
});
}

cleanUpRoomWorld()
Expand Down Expand Up @@ -873,12 +882,12 @@ class RoomScene extends RoomLogin
this.state.sceneData = JSON.stringify(sceneData)
}

disableOnDispose()
disableAutoDispose()
{
this.autoDispose = false;
}

enableOnDispose()
enableAutoDispose()
{
this.autoDispose = true;
}
Expand Down
14 changes: 12 additions & 2 deletions lib/world/client/debug-world-creator.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,17 +44,27 @@ class DebugWorldCreator

cloneMapJson(scene, validLayers)
{
// @TODO - BETA - Fix to support multiple tilesets.
let tileset = scene.tilesets[0];
if(!tileset){
return {};
}
return Object.assign(
{},
(scene.cache?.tilemap?.entries?.entries[scene.tileset.name]?.data || {}),
(scene.cache?.tilemap?.entries?.entries[tileset.name]?.data || {}),
{layers: validLayers}
);
}

findValidLayers(scene)
{
let validLayers = [];
for(let layer of scene.cache.tilemap.entries.entries[scene.tileset.name].data.layers){
// @TODO - BETA - Fix to support multiple tilesets.
let tileset = scene.tilesets[0];
if(!tileset){
return validLayers;
}
for(let layer of scene.cache.tilemap.entries.entries[tileset.name].data.layers){
if(-1 !== layer.name.indexOf('collision')){
validLayers.push(layer);
}
Expand Down
5 changes: 4 additions & 1 deletion lib/world/client/renderer.js
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,10 @@ class Renderer
debugWorld()
{
this.gameDom.getElement('.wrapper').style.display = 'none';
this.createCanvas(this.scene.map.width * 32, this.scene.map.height * 32);
this.createCanvas(
this.scene.map.width * this.scene.map.tileWidth,
this.scene.map.height * this.scene.map.tileHeight
);
this.renderP2World();
}

Expand Down
16 changes: 8 additions & 8 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "reldens",
"version": "4.0.0-beta.36.1",
"version": "4.0.0-beta.37",
"description": "Reldens - MMORPG Platform",
"author": "Damian A. Pastorini",
"license": "MIT",
Expand Down
Loading

0 comments on commit 88e0e35

Please sign in to comment.