Do not parse player messages
Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
parent
0421166bc9
commit
c13b173c18
@ -115,45 +115,56 @@ const Chat = () => {
|
||||
});
|
||||
|
||||
const messages = chat.map((item, index) => {
|
||||
const punctuation = item.message.match(/(\.+$)/);
|
||||
let period;
|
||||
if (punctuation) {
|
||||
period = punctuation[1];
|
||||
let message;
|
||||
/* Do not perform extra parsing on player-generated
|
||||
* messages */
|
||||
if (item.normalChat) {
|
||||
message = <div key={`line-${index}`}>{item.message}</div>;
|
||||
} else {
|
||||
period = '';
|
||||
}
|
||||
let lines = item.message.split('.');
|
||||
const message = lines
|
||||
.filter(line => line.trim() !== '')
|
||||
.map((line, index) => {
|
||||
/* If the date is in the future, set it to now */
|
||||
const dice = line.match(/^(.*rolled )([1-6])(, ([1-6]))?(.*)$/);
|
||||
if (dice) {
|
||||
if (dice[4]) {
|
||||
return <div key={`line-${index}`}>{dice[1]}<Dice pips={dice[2]}/>,
|
||||
<Dice pips={dice[4]}/>{dice[5]}{ period }</div>;
|
||||
} else {
|
||||
return <div key={`line-${index}`}>{dice[1]}<Dice pips={dice[2]}/>{dice[5]}{ period }</div>;
|
||||
}
|
||||
}
|
||||
|
||||
let start = line, message;
|
||||
while (start) {
|
||||
const resource = start.match(/^(.*)(([0-9]+) (wood|sheep|wheat|stone|brick),?)(.*)$/);
|
||||
if (resource) {
|
||||
const count = resource[3] ? parseInt(resource[3]) : 1;
|
||||
message = <><Resource label={true} count={count} type={resource[4]}/>{resource[5]}{message}</>;
|
||||
start = resource[1];
|
||||
} else {
|
||||
message = <>{start}{message}</>;
|
||||
start = '';
|
||||
}
|
||||
const punctuation = item.message.match(/(\.+$)/);
|
||||
let period;
|
||||
if (punctuation) {
|
||||
period = punctuation[1];
|
||||
} else {
|
||||
period = '';
|
||||
}
|
||||
return <div key={`line-${index}`}>{ message }{ period }</div>;
|
||||
});
|
||||
let lines = item.message.split('.');
|
||||
message = lines
|
||||
.filter(line => line.trim() !== '')
|
||||
.map((line, index) => {
|
||||
/* If the date is in the future, set it to now */
|
||||
const dice = line.match(/^(.*rolled )([1-6])(, ([1-6]))?(.*)$/);
|
||||
if (dice) {
|
||||
if (dice[4]) {
|
||||
return <div key={`line-${index}`}>{dice[1]}
|
||||
<Dice pips={dice[2]}/>,
|
||||
<Dice pips={dice[4]}/>{dice[5]}{ period }</div>;
|
||||
} else {
|
||||
return <div key={`line-${index}`}>{dice[1]}
|
||||
<Dice pips={dice[2]}/>{dice[5]}{ period }</div>;
|
||||
}
|
||||
}
|
||||
|
||||
let start = line, message;
|
||||
while (start) {
|
||||
const resource = start.match(/^(.*)(([0-9]+) (wood|sheep|wheat|stone|brick),?)(.*)$/);
|
||||
if (resource) {
|
||||
const count = resource[3] ? parseInt(resource[3]) : 1;
|
||||
message = <><Resource label={true} count={count}
|
||||
type={resource[4]}/>{resource[5]}{message}</>;
|
||||
start = resource[1];
|
||||
} else {
|
||||
message = <>{start}{message}</>;
|
||||
start = '';
|
||||
}
|
||||
}
|
||||
return <div key={`line-${index}`}>{ message }{ period }</div>;
|
||||
});
|
||||
}
|
||||
|
||||
return (
|
||||
<ListItem key={`msg-${item.date}`} className={item.color ? '' : 'System'}>
|
||||
<ListItem key={`msg-${item.date}`}
|
||||
className={item.color ? '' : 'System'}>
|
||||
{ item.color &&
|
||||
<PlayerColor color={item.color}/>
|
||||
}
|
||||
|
@ -1025,7 +1025,7 @@ const addActivity = (game, session, message) => {
|
||||
game.activities.push({ color: session ? session.color : '', message, date });
|
||||
}
|
||||
|
||||
const addChatMessage = (game, session, message) => {
|
||||
const addChatMessage = (game, session, message, isNormalChat) => {
|
||||
let now = Date.now();
|
||||
let lastTime = 0;
|
||||
if (game.chat.length) {
|
||||
@ -1039,6 +1039,9 @@ const addChatMessage = (game, session, message) => {
|
||||
date: now,
|
||||
message: message
|
||||
};
|
||||
if (isNormalChat) {
|
||||
entry.normalChat = true;
|
||||
}
|
||||
if (session && session.name) {
|
||||
entry.from = session.name;
|
||||
}
|
||||
@ -3694,7 +3697,7 @@ router.ws("/ws/:id", async (ws, req) => {
|
||||
|
||||
case 'chat':
|
||||
console.log(`${short}:${id} - ${data.type} - ${data.message}`)
|
||||
addChatMessage(game, session, `${session.name}: ${data.message}`);
|
||||
addChatMessage(game, session, `${session.name}: ${data.message}`, true);
|
||||
parseChatCommands(game, data.message);
|
||||
sendUpdateToPlayers(game, { chat: game.chat });
|
||||
saveGame(game);
|
||||
|
Loading…
x
Reference in New Issue
Block a user