From 2af0b575233ba3b04c1fa0f855b85a1c0c2cf82f Mon Sep 17 00:00:00 2001
From: mcmlxxix <>
Date: Thu, 17 Jan 2013 19:45:09 +0000
Subject: [PATCH] fix game number prompt (hacky hack hack, this should be
 reworked eventually)

---
 xtrn/dicewarz2/game.js | 38 ++++++++++++++++++++++++++++++++++----
 1 file changed, 34 insertions(+), 4 deletions(-)

diff --git a/xtrn/dicewarz2/game.js b/xtrn/dicewarz2/game.js
index 16cda0e620..1d121013ad 100644
--- a/xtrn/dicewarz2/game.js
+++ b/xtrn/dicewarz2/game.js
@@ -31,7 +31,7 @@ function loadGraphic(filename) {
 	f.open();
 	return f;
 }
-function menuPrompt(string,append,keepOpen,hotkeys) {
+function menuPrompt(string, append, keepOpen, hotkeys) {
 	if(!append) 
 		promptFrame.clear();
 	if(!promptFrame.is_open) 
@@ -57,6 +57,37 @@ function menuPrompt(string,append,keepOpen,hotkeys) {
 		promptFrame.close();
 	return cmd;
 }
+function numberPrompt(string, append, keepOpen) {
+	if(!append) 
+		promptFrame.clear();
+	if(!promptFrame.is_open) 
+		promptFrame.open();
+	promptFrame.putmsg(string);
+	promptFrame.draw();
+	
+	var cmd=[];
+	while(!js.terminated) {
+		var k = console.getkey(K_NOECHO|K_NOCRLF|K_NUMBER|K_NOSPIN);
+		if(k == "\r") {
+			break;
+		}
+		else if(k == "\b") {
+			if(cmd.length > 0) {
+				cmd.pop();
+				promptFrame.putmsg(k);
+				promptFrame.cycle();
+			}
+		}
+		else {
+			cmd.push(k);
+			promptFrame.putmsg(k);
+			promptFrame.cycle();
+		}
+	}
+	if(!keepOpen)
+		promptFrame.close();
+	return cmd.join("");
+}
 function menuText(string,append) {
 	if(!append) 
 		promptFrame.clear();
@@ -407,11 +438,9 @@ function lobby() {
 			return false;
 		}
 		while(1) {
-			var num=menuPrompt("Game number: ",false,false);
+			var num=numberPrompt("Enter game # or Q to cancel: ",false,false);
 			if(!num) 
 				break;
-			log("num: " + num);
-			log(data.games.toSource());
 			if(data.games[num]) {
 				if(data.games[num].status>=0) {
 					playGame(num);
@@ -424,6 +453,7 @@ function lobby() {
 				break;
 			} else {
 				menuPrompt("\1n\1c No such game! \1w[press any key]",true,false,true);
+				return false;
 			}
 		}
 		return false;
-- 
GitLab