Skip to content
Snippets Groups Projects
messages.js 3.50 KiB
var PlayerMessageProperties = [
			{
				 prop:"Read"
				,name:"Message has been read"
				,type:"Boolean"
				,def:true
			}
			,{
				 prop:"To"
				,name:"Player the message is to"
				,type:"Integer"
				,def:0
			}
			,{
				 prop:"From"
				,name:"Player the message is from"
				,type:"SignedInteger"
				,def:0
			}
			,{
				 prop:"Destroyed"
				,name:"Number of Fighters Destroyed"
				,type:"Integer"
				,def:0
			}
		];

var RadioMessageProperties = [
			{
				 prop:"Read"
				,name:"Message has been read"
				,type:"Boolean"
				,def:false
			}
			,{
				 prop:"To"
				,name:"Player the message is to"
				,type:"Integer"
				,def:0
			}
			,{
				 prop:"From"
				,name:"Player the message is from"
				,type:"Integer"
				,def:0
			}
			,{
				 prop:"Message"
				,name:"Test of the message"
				,type:"String:74"
				,def:""
			}
		];

var twpmsg=new RecordFile(fname("twpmesg.dat"), PlayerMessageProperties);
var twrmsg=new RecordFile(fname("twrmesg.dat"), RadioMessageProperties);

function ReadPMsg()
{
	console.writeln("The following happened to your ship since your last time on:");
	var count=0;
	for(i=0; i<twpmsg.length; i++) {
		var msg=twpmsg.Get(i);

		if(msg.To==player.Record && !msg.Read) {
			count++;
			if(msg.From==-98)
				console.writeln("A deleted player destroyed "+msg.Destroyed+" fighters.");
			else if(msg.From==-1) {
				console.attributes="R";
				console.writeln("The Cabal destroyed "+msg.Destroyed+" fighters.");
			}
			else {
				var otherplayer=players.Get(msg.From);

				console.writeln(otherplayer.Alias+" "+(otherplayer.TeamNumber?" Team["+otherplayer.TeamNumber+"] ":"")+"destroyed "+msg.Destroyed+" of your fighters.");
			}
			msg.Read=true;
			msg.Put();
		}
	}
	if(count==0)
		console.writeln("Nothing");
	return(count);
}

function RadioMessage(from, to, msg)
{
	var i;

	var rmsg;
	for(i=0; i<twrmsg.length; i++) {
		var rmsg=twrmsg.Get(i);
		if(rmsg.Read)
			break;
		rmsg=null;
	}
	if(rmsg==null)
		rmsg=twrmsg.New();
	rmsg.Read=false;
	rmsg.From=from;
	rmsg.To=to;
	rmsg.Message=msg;
	rmsg.Put();
	console.writeln("Message sent.");
	return;
}

function ReadRadio()
{
	var i;
	var rmsg;
	var count=0;
	
	console.crlf();
	console.writeln("Checking for Radio Messages sent to you.");
	for(i=0; i<twrmsg.length; i++) {
		var rmsg=twrmsg.Get(i);
		if(rmsg.Read)
			continue;
		if(rmsg.To != player.Record)
			continue;
		console.write("Message from ");
		if(rmsg.From > 0) {
			var p=players.Get(rmsg.From);
			console.write(p.Alias);
		}
		else {
			console.write("A deleted player");
		}
		console.writeln(":");
		console.writeln(rmsg.Message);
		rmsg.Read=true;
		rmsg.Put();
		count++;
	}
	if(count < 1)
		console.writeln("None Received.");
}
function SendRadioMessage()
{
	console.crlf();
	console.writeln("Warming up sub-space radio.");
	mswait(500);
	console.crlf();
	console.write("Who do you wish to send this message to (search string)? ");
	var sendto=console.getstr(42);
	var p=MatchPlayer(sendto);
	if(p==null)
		return(false);
	console.writeln("Tuning in to " + p.Alias + "'s frequency.");
	console.crlf();
	console.writeln("Due to the distances involved, messages are limited to 74 chars.");
	console.writeln("Pressing [ENTER] with no input quits");
	console.writeln("  [------------------------------------------------------------------------]");
	console.attributes="HY";
	console.write("? ");
	console.attributes="W";
	var msg=console.getstr(74);
	if(msg==null)
		return(false);
	msg=msg.replace(/\s*$/,'');
	if(msg=='')
		return(false);
	RadioMessage(player.Record, p.Record, msg);
	return(true);
}