improve command handling and expose setGameMode

This commit is contained in:
Romain Beaumont 2015-08-28 00:53:19 +02:00
parent 0b78f258fa
commit 8dded86058
3 changed files with 34 additions and 29 deletions

View file

@ -60,6 +60,7 @@
- [player.changeBlock(position,blockType)](#playerchangeblockpositionblocktype)
- [player.sendInitialPosition()](#playersendinitialposition)
- [player.spawn()](#playerspawn)
- [player.setGameMode(gameMode)](#playersetgamemodegamemode)
- [Low level properties](#low-level-properties)
- [player._client](#player_client)
- [Low level methods](#low-level-methods)
@ -278,6 +279,9 @@ send its initial position to the player
tell everybody else that the player spawned
#### player.setGameMode(gameMode)
set player gameMode to `gameMode`
### Low level properties

View file

@ -2,35 +2,34 @@ module.exports=inject;
function inject(serv, player, options)
{
player._client.on('chat', function (data) {
if(data.message[0]=="/" && options.commands[data.message.slice(1)]) {
player.chat("" + options.commands[data.message.slice(1)]);
} else if(data.message == "/gamemode" || data.message == "/gamemode 0" || data.message == "/gamemode 1") {
if(data.message == "/gamemode 0") {
player._client.write("game_state_change", {
reason: 3,
gameMode: 0
});
player.gameMode = 0;
player.chat("Gamemode changed to 0!");
} else if(data.message == "/gamemode 1") {
player._client.write("game_state_change", {
reason: 3,
gameMode: 1
});
player.gameMode = 1;
player.chat("Gamemode changed to 1!")
} else {
player.chat("Invalid usage! Try using /gamemode 1");
player._client.on('chat', function (packet) {
if(!handleCommand(packet.message)) {
serv.broadcast('<' + player.username + '>' + ' ' + packet.message);
player.emit("chat",packet.message);
}
} else {
serv.broadcast('<' + player.username + '>' + ' ' + data.message);
player.emit("chat",data.message);
}
});
function handleCommand(message)
{
var command;
if(message[0]=="/")
command=message.slice(1);
else return false;
if(options.commands[command]) {
player.chat("" + options.commands[command]);
return true;
}
var results;
if(results=command.match(/^gamemode ([0-3])$/)) {
var gameMode=parseInt(results[1]);
player.setGameMode(gameMode);
return true;
}
player.chat("Invalid command.");
return true;
}
function chat(message) {
player._client.write('chat', { message: JSON.stringify(message), position: 0 });
}

View file

@ -80,12 +80,13 @@ function inject(serv,player)
});
}
function updateGameState()
function setGameMode(gameMode)
{
player._client.write('game_state_change', {
reason: 3,
gameMode: player.gameMode
gameMode: gameMode
});
player.gameMode=gameMode;
}
function fillTabList()
@ -179,7 +180,7 @@ function inject(serv,player)
player.emit("spawned");
updateTime();
updateGameState();
setGameMode(player.gameMode);
fillTabList();
spawnOthers();
spawn();
@ -188,6 +189,7 @@ function inject(serv,player)
}
player.setGameMode=setGameMode;
player.login=login;
player.sendInitialPosition=sendInitialPosition;
player.spawn=spawn;