// This file is just used for test purposes
// I suppose you could use this to display the result as well...
void displayResult(MXPResult res, StringBuffer output )
{
switch (res.type)
{
case 0: {
// do nothing
output.append("Nothing.\n");
}
break;
case 1: {
String s = (String) res.data;
// i think if TRUE, output a newlines if not output regular text
if (s.equals("\r\n")) //newlines are always sent separately
output.append("\n");
else
output.append(s);
}
break;
case 2: {
int t = (Integer) res.data;
// not sure what this is used for
output.append("Line tag: "+t+"\n");
}
break;
case 3: {
flagStruct fs = (flagStruct) res.data;
// this tells ya the name of the flags receieved, like start room or start actor, basically server defined
// elements, this should be hidden and not output anything to the screen
// However, some of these things can be used for automappers,
// In wintin.net, under mxp variables, these show room names, room descriptions, etc. Ive sent you a screen shot of this also.
// so these are a type of variable but can be more than one word
// properties tags to be used by the server in !ELEMENT definitions.
if (fs.begin)
output.append("Start of flag: "+fs.name+"\n");
else
output.append("End of flag: "+fs.name+"\n");
}
break;
case 4: {
varStruct vs = (varStruct) res.data;
if (vs.erase)
// if this is TRUE, need to delete/remove the global variable
output.append("Erase variable: "+vs.name+"\n");
else
output.append("Variable: "+vs.name+", value: "+vs.value+"\n");
}
break;
case 5: {
formatStruct fs = (formatStruct) res.data;
// check to see if true, if so do what it says to inside the formatStruct
int mask = fs.usemask;
if ((mask & formatStruct.USE_BOLD) != 0 )
// if this is true, the output of text needs to be bolded
output.append("Formatting: "+
(((fs.attributes & libmxp.Bold) != 0 ) ? "bold" : "not bold")+"\n");
if ((mask & formatStruct.USE_ITALICS) != 0 )
// if this is true, the output of text needs to be italic
output.append("Formatting: "+
(((fs.attributes & libmxp.Italic) != 0 ) ? "italics" : "not italics")+"\n");
if ((mask & formatStruct.USE_UNDERLINE) != 0 )
// if this is true, the output of text needs to be underlined
output.append("Formatting: "+
(((fs.attributes & libmxp.Underline) != 0 ) ? "underline" : "not underline")+"\n");
if ((mask & formatStruct.USE_STRIKEOUT) != 0 )
// if this is true, the output of text needs to be strikeout
output.append("Formatting: "+
(((fs.attributes & libmxp.Strikeout) != 0 ) ? "strikeout" : "not strikeout")+"\n");
if ((mask & formatStruct.USE_FG) != 0 )
//Set the color of the text. If the background color is omitted, the current background color is used.
// you probably should not allow this, just reply back do not support
output.append( String.format("Formatting: foreground color (%d, %d, %d)\n", fs.fg.getRed(),
fs.fg.getGreen(), fs.fg.getBlue()));
if ((mask & formatStruct.USE_BG) != 0 )
// changes color of the background
// you probably should not allow this, just reply back do not support
output.append( String.format("Formatting: background color (%d, %d, %d)\n", fs.bg.getRed(),
fs.bg.getGreen(), fs.bg.getBlue()));
if ((mask & formatStruct.USE_FONT) != 0 )
// if this is true, use formatStruct.USE_FONT pointer as the style of font to use(might not allow this)
output.append( String.format("Formatting: font "+fs.font+"\n"));
if ((mask & formatStruct.USE_SIZE) != 0 )
// if this is TRUE, use formatStruct.USE_SIZE pointer to determine size of text to output(might not allow this)
output.append( String.format("Formatting: size %d\n", fs.size));
}
break;
case 6: {
linkStruct ls = (linkStruct) res.data;
// all data is kept in linkStruct
// the client should recognize a URL either with http or with www
// the text should be output in blue and underlined, when clicked it should open the browser and send a person to that website
// the hint option is used if you want to add something such as (Click here to send your browser to URL)
output.append( String.format("URL link: name %s, URL %s, text %s, hint %s\n",
ls.name, ls.url, ls.text, ls.hint));
}
break;
case 7: {
SendStruct ss = (SendStruct) res.data;
// this is an action link also, it sends commands through.
// the text is normally output with blue text and underlined
// if the server sends several hints, such as the following line: they will be split up using the | bar
// <SEND \"at %d %s|at %d look %s|at %d scan %s|at %d close %s %s\" hint=\"Go|Go|Look|Scan|Close\">%s</SEND>
// I have attached a screen shot of what this looks like with wintin.net inside of slothmud
output.append( String.format("Send link: name %s, command %s, text %s, hint %s, to prompt: %s, menu: %s\n",
ss.name, ss.command, ss.text,
ss.hint, (ss.toprompt?"yes":"no"), (ss.ismenu?"yes":"no")));
}
break;
case 8: {
String c = (String)res.data;
//The <EXPIRE> tag is used to remove links previously displayed with the <A> or <SEND> tags.
//For example, when moving to a new room, <SEND> links from the previous room description are no longer
//valid and need to be removed. To accomplish this, you create a Name for the tags that you want removed.
//Then you specify this name in the <EXPIRE> tag.
output.append("Expire: "+c+"\n");
}
break;
case 9:
{
String c = (String)res.data;
output.append("Send this: "+c+"\n");
}
break;
case 10: {
output.append("Horizontal line\n");
}
break;
case 11: {
soundStruct ss = (soundStruct) res.data;
if (ss.isSOUND)
output.append( String.format("Sound: file %s, URL %s, volume %d, %d repeats, priority %d, type %s\n",
ss.fname, ss.url, ss.vol, ss.repeats, ss.priority,
ss.type));
else
output.append( String.format("Music: file %s, URL %s, volume %d, %d repeats, continue %s, type %s\n",
ss.fname, ss.url, ss.vol, ss.repeats,
(ss.continuemusic?"yes":"no"), ss.type));
}
break;
case 12: {
windowStruct ws = (windowStruct) res.data;
output.append( String.format("Create window: name %s, title %s, left %d, top %d, width %d, height %d, scrolling %s, floating %s\n",
ws.name, ws.title, ws.left, ws.top, ws.width, ws.height,
(ws.scrolling?"yes":"no"), (ws.floating?"yes":"no")));
}
break;
case 13: {
internalWindowStruct ws = (internalWindowStruct) res.data;
String s = "none";
switch (ws.align) {
case Left: s = "left"; break;
case Right: s = "right"; break;
case Bottom: s = "bottom"; break;
case Top: s = "top"; break;
case Middle: s = "middle (invalid!)"; break;
};
output.append( String.format("Create internal window: name %s, title %s, align %s, scrolling %s\n",
ws.name, ws.title, s, (ws.scrolling?"yes":"no")));
}
break;
case 14: {
String s = (String)res.data;
output.append( String.format("Close window: %s\n", s));
}
break;
case 15: {
String s = (String)res.data;
output.append( String.format("Set active window: %s\n", s));
}
break;
case 16: {
moveStruct ms = (moveStruct) res.data;
output.append( String.format("Move cursor: X=%d, Y=%d\n", ms.x, ms.y));
}
break;
case 17: {
output.append( String.format("Erase text: %s\n",
((res.data!=null) ? "rest of frame" : "rest of line")));
}
break;
case 18: {
relocateStruct rs = (relocateStruct) res.data;
output.append( String.format("Relocate: server %s, port %d\n", rs.server, rs.port));
}
break;
case 19: {
output.append( ((Boolean)res.data) ? "Send username\n" : "Send password\n");
}
break;
case 20: {
imageStruct is = (imageStruct) res.data;
String s = "";
switch (is.align) {
case Left: s = "left"; break;
case Right: s = "right"; break;
case Bottom: s = "bottom"; break;
case Top: s = "top"; break;
case Middle: s = "middle"; break;
};
output.append( String.format("Image: name %s, URL %s, type %s, height %d, width %d, hspace %d, vspace %d, align %s\n",
is.fname, is.url, is.type, is.height,
is.width, is.hspace, is.vspace, s));
}
break;
case 21: {
String s = (String)res.data;
output.append( String.format("Image map: %s\n", s));
}
break;
case 22: {
gaugeStruct gs = (gaugeStruct) res.data;
output.append( String.format("Gauge: variable %s, max.variable %s, caption %s, color (%d, %d, %d)\n",
gs.variable, gs.maxvariable,
gs.caption, gs.color.getRed(), gs.color.getGreen(), gs.color.getBlue()));
}
break;
case 23: {
statStruct ss = (statStruct) res.data;
output.append( String.format("Status bar: variable %s, max.variable %s, caption %s\n",
ss.variable, ss.maxvariable,
ss.caption));
}
break;
case -1: {
String s = (String)res.data;
output.append( String.format("Error: %s\n", s));
}
break;
case -2: {
String s = (String)res.data;
output.append( String.format("Warning: %s\n", s));
}
break;
}
}