Skip to content
Snippets Groups Projects
computer.js 2.39 KiB
function ComputerMenu()
{
	console.crlf();
	console.attributes="HW";
	console.writeln("<Computer activated>");
	var showhelp=true;
	var sec;
	var seclen;

	for(;;) {
		if(showhelp) {
			console.crlf();
			if(user.settings&USER_ANSI)
				console.printfile(fname("computer.ans"));
			else
				console.printfile(fname("computer.asc"));
			showhelp=false;
		}
		console.attributes="HW";
		console.crlf();
		console.write("Computer command (?=help)? ");
		switch(InputFunc(['?','X','P','S','R','M'])) {
			case '?':
				showhelp=true;
				break;
			case 'X':
				/* 33990 */
				console.crlf();
				console.attributes="Y";
				console.writeln("<Computer deactivated>");
				return;
			case 'P':
				/* 33780 */
				console.write("What sector number is the port in? ");
				seclen=db.read(Settings.DB,'sectors.length',LOCK_READ);
				sec=InputFunc([{min:0,max:seclen-1}]);
				if(sec > 0 && sec < seclen) {
					var sector=db.read(Settings.DB,'sectors.'+sec,LOCK_READ);
					if(sector.Port==0 || (sector.Fighters>0 && sector.Fighters!=player.Record)) {
						console.crlf();
						console.writeln("I have no information about that port.");
						break;
					}
					if(sec==1) {
						SolReport();
					}
					else {
						PortReport(sector.Port);
					}
				}
				break;
			case 'S':
				/* 33830 */
				console.write("What sector do you want to get to? ");
				seclen=db.read(Settings.DB,'sectors.length',LOCK_READ);
				sec=InputFunc([{min:0,max:seclen-1}]);
				if(sec > 0 && sec < seclen) {
					if(sec==player.Sector) {
						console.writeln("You are in that sector.");
						break;
					}
					console.crlf();
					console.writeln("Computing shortest path.");
					var path=ShortestPath(player.Sector, sec);
					if(path==null) {
						console.writeln("There was an error in computation between sectors.");
					}
					else {
						console.writeln("The shortest path from sector "+player.Sector+" to sector "+sec+" is:");
						var i;
						for(i in path) {
							if(i!=0) 
								console.write(" - ");
							console.write(path[i]);
						}
						console.crlf();
						console.crlf();
					}
				}
				break;
			case 'R':
				/* 33900 */
				console.crlf();
				console.write("Ranking Players.");
				TWRank();
				console.writeln(db.read(Settings.DB,'ranking',LOCK_READ));
				break;
			case 'M':
				/* 33960 */
				SendRadioMessage();
				break;
			default:
				console.crlf();
				console.writeln("Invalid command.  Enter ? for help");
		}
	}
}