Updated mxp.js file, now changes the movement buttons based on whether there is a visible exit or not. Mini-Map works fine, just needs more/better graphics for it. Pretty much all the MXP tags it's using are now being parsed or ignored which has cleaned up the mud output. I'm sure there are better ways to do some of the things, would appreciate any feedback/thoughts. I've got some more client changes to make and then I'm going to dig a bit deeper into the server code as the phudbase server uses significant CPU when it's supposed to be idling.
<div id="movement">
<table>
<tr>
<td id="moveUP" style='text-align: center; vertical-align: middle;' onclick="sendDirect('UP');">UP</td>
<td style='text-align: center; vertical-align: middle; background: transparent; cursor: default;'></td>
<td id="moveNW" style='text-align: center; vertical-align: middle;' onclick="sendDirect('NW');">NW</td>
<td id="moveN" style='text-align: center; vertical-align: middle;' onclick="sendDirect('N');">N</td>
<td id="moveNE" style='text-align: center; vertical-align: middle;' onclick="sendDirect('NE');">NE</td>
<td style='text-align: center; vertical-align: middle; background: transparent; cursor: default;'></td>
<td id="moveIN" style='text-align: center; vertical-align: middle;' onclick="sendDirect('IN');">IN</td>
</tr>
<tr>
<td style='text-align: center; vertical-align: middle; background: transparent; cursor: default;'></td>
<td style='text-align: center; vertical-align: middle; background: transparent; cursor: default;'></td>
<td id="moveW" style='text-align: center; vertical-align: middle;' onclick="sendDirect('W');">W</td>
<td style='text-align: center; vertical-align: middle; background: transparent; cursor: default;'></td>
<td id="moveE" style='text-align: center; vertical-align: middle;' onclick="sendDirect('E');">E</td>
<td style='text-align: center; vertical-align: middle; background: transparent; cursor: default;'></td>
<td style='text-align: center; vertical-align: middle; background: transparent; cursor: default;'></td>
</tr>
<tr>
<td id="moveD" style='text-align: center; vertical-align: middle;' onclick="sendDirect('DOWN');">D</td>
<td style='text-align: center; vertical-align: middle; background: transparent; cursor: default;'></td>
<td id="moveSW" style='text-align: center; vertical-align: middle;' onclick="sendDirect('SW');">SW</td>
<td id="moveS" style='text-align: center; vertical-align: middle;' onclick="sendDirect('S');">S</td>
<td id="moveSE" style='text-align: center; vertical-align: middle;' onclick="sendDirect('SE');">SE</td>
<td style='text-align: center; vertical-align: middle; background: transparent; cursor: default;'></td>
<td id="moveOUT" style='text-align: center; vertical-align: middle;' onclick="sendDirect('OUT');">OUT</td>
</tr>
</table>
</div>
// Process any MXP messages //
function process_Prompt(str)
{
console.log("PROMPT: "+str);
}
function check_PROMPT(str)
{
var promptRegExp = new RegExp("<Prompt>(.*?)<\/Prompt>", "g");
var promptRegReplace = "<.*?>|<.*?>";
if (str.search(promptRegExp) != -1)
{
var promptData = str.match(promptRegExp); //Extract the data..returns an array
promptData = promptData[0]; //just get the first element of the array
process_Prompt(promptData); // WORK WITH PROMPT
str = str.replace(promptRegExp,""); //remove all prompt data from display
}
return(str);
}
function process_Exits(str)
{
// console.log("EXIT: "+str);
if (str.search("<EX>Up")!=-1)
{
document.getElementById("moveUP").style.background="green";
return;
}
if (str.search("<EX>North<")!=-1)
{
document.getElementById("moveN").style.background="green";
return;
}
if (str.search("<EX>South<")!=-1)
{
document.getElementById("moveS").style.background="green";
return;
}
if (str.search("<EX>East <")!=-1)
{
document.getElementById("moveE").style.background="green";
return;
}
if (str.search("<EX>West <")!=-1)
{
document.getElementById("moveW").style.background="green";
return;
}
if (str.search("<EX>Down<")!=-1)
{
document.getElementById("moveD").style.background="green";
return;
}
if (str.search("<EX>Northeast")!=-1)
{
document.getElementById("moveNE").style.background="green";
return;
}
if (str.search("<EX>Southwest")!=-1)
{
document.getElementById("moveSW").style.background="green";
return;
}
if (str.search("<EX>Southeast")!=-1)
{
document.getElementById("moveSE").style.background="green";
return;
}
if (str.search("<EX>Northwest")!=-1)
{
document.getElementById("moveNW").style.background="green";
return;
}
if (str.search("<EX>In")!=-1)
{
document.getElementById("moveIN").style.background="green";
return;
}
if (str.search("<EX>Out")!=-1)
{
document.getElementById("moveOUT").style.background="green";
return;
}
}
function clear_EXITS()
{
document.getElementById("moveUP").style.background="#242424";
document.getElementById("moveN").style.background="#242424";
document.getElementById("moveS").style.background="#242424";
document.getElementById("moveE").style.background="#242424";
document.getElementById("moveW").style.background="#242424";
document.getElementById("moveD").style.background="#242424";
document.getElementById("moveNE").style.background="#242424";
document.getElementById("moveSW").style.background="#242424";
document.getElementById("moveSE").style.background="#242424";
document.getElementById("moveNW").style.background="#242424";
document.getElementById("moveIN").style.background="#242424";
document.getElementById("moveOUT").style.background="#242424";
}
function check_EXITS(str)
{
var exitRegExp = new RegExp("<EX>(.*?)<\/EX>\:.*?<br>", "g");
var exitRegReplace = "<.*?>|<.*?>";
if (str.search(exitRegExp) != -1)
{
// console.log("Exit before match: " + str);
var exitData = str.match(exitRegExp); //Extract the data..returns an array
// console.log("Exit Data: " + exitData);
clear_EXITS();
// Clear exit data!!
for (var i=0;i<exitData.length;i++)
process_Exits(exitData[i]); //Process each found exit.
str = str.replace(exitRegExp,""); //remove all prompt data from display
}
return(str);
}
function check_HELP(str)
{
var helpRegExp = new RegExp("<HELP>(.*?)<\/HELP>", "g");
str = str.replace(helpRegExp, helpRegReplace);
return(str);
}
function check_IMAGE(str)
{
var imageRegExp = new RegExp("<IMAGE(.*?)>", "g");
var imageRegReplace = "";
str = str.replace(imageRegExp, imageRegReplace);
return(str);
}
function process_MAP(str)
{
var html_MAP = "<table>";
for (var i=0;i<5;i++)
{
html_MAP += "<tr>";
for (var j=0;j<5;j++)
{
if (str.charAt(i*5+j) == "=") //city
{
html_MAP += "<td style='background:url(";
html_MAP += '"'+mxpRoot+'locale_city2.png");';
html_MAP += "background-repeat: no-repeat; background-size: 80px 80px;'></td>";
}
else
html_MAP += "<td>" + str.charAt(i*5+j) + "</td>";
}
html_MAP += "</tr>";
}
html_MAP +="</table>";
// console.log("HTMLMAP: " +html_MAP);
document.getElementById("map").innerHTML=html_MAP;
}