From db7c052b0e10aa2cd397f71cd87c9825abb2a586 Mon Sep 17 00:00:00 2001
From: "Rob Swindell (on Debian Linux)" <rob@synchro.net>
Date: Fri, 18 Oct 2024 17:08:27 -0700
Subject: [PATCH] Use cterm_lib.js for cterm-specific constants/operations

Update date display format to be less ambiguous (more international).

js.exec_dir is guaranteed to end in a slash, so no need to add one.

Bump version to 3.00.
---
 xtrn/minesweeper/minesweeper.js | 94 ++++++---------------------------
 1 file changed, 16 insertions(+), 78 deletions(-)

diff --git a/xtrn/minesweeper/minesweeper.js b/xtrn/minesweeper/minesweeper.js
index bf8c28fcdf..3db00ea31b 100644
--- a/xtrn/minesweeper/minesweeper.js
+++ b/xtrn/minesweeper/minesweeper.js
@@ -6,7 +6,7 @@
 
 const title = "Synchronet Minesweeper";
 const ini_section = "minesweeper";
-const REVISION = "$Revision: 2.16 $".split(' ')[1];
+const REVISION = "3.00";
 const author = "Digital Man";
 const header_height = 4;
 const winners_list = js.exec_dir + "winners.jsonl";
@@ -100,6 +100,9 @@ else {
 	var ansiterm = bbs.mods.ansiterm_lib;
 	if(!ansiterm)
 		ansiterm = bbs.mods.ansiterm_lib = load({}, "ansiterm_lib.js");
+	var cterm = bbs.mods.cterm_lib;
+	if(!cterm)
+		cterm = bbs.mods.cterm_lib = load({}, "cterm_lib.js");
 }
 var game = {};
 var board = [];
@@ -391,6 +394,11 @@ function get_winners(level)
 	return list;
 }
 
+function datestr(t)
+{
+	return strftime("%b%m-%y", t);
+}
+
 function show_winners(level)
 {
 	console.clear();
@@ -437,7 +445,7 @@ function show_winners(level)
 			,game.width
 			,game.height
 			,game.mines
-			,system.datestr(game.end)
+			,datestr(game.end)
 			));
 		count++;
 		displayed++;
@@ -483,7 +491,7 @@ function show_log()
 		else
 			console.attributes = BG_CYAN;
 		console.print(format("%s  %-25s %1.2f %s %3ux%2ux%-3u %3s  %s\x01>\x01n\r\n"
-			,system.datestr(game.end)
+			,datestr(game.end)
 			,game.name
 			,calc_difficulty(game)
 			,secondstr(calc_time(game), true)
@@ -519,7 +527,7 @@ function show_best()
 		else
 			console.attributes = BG_CYAN;
 		console.print(format("%s  %1.2f  %s  %3ux%2ux%-3u %s\x01>\x01n\r\n"
-			,system.datestr(game.end)
+			,datestr(game.end)
 			,calc_difficulty(game)
 			,secondstr(calc_time(game), true)
 			,game.width, game.height, game.mines
@@ -1090,74 +1098,6 @@ function read_apc()
 	return undefined;
 }
 
-
-function pixel_capability()
-{
-	var ret = false;
-	var ch;
-	var state = 0;
-	var optval = 0;
-
-	for(;;) {
-		ch = console.getbyte();
-		switch(state) {
-			case 0:
-				if (ch == 0x1b) { // ESC
-					state++;
-					break;
-				}
-				break;
-			case 1:
-				if (ch == 91) {   // [
-					state++;
-					break;
-				}
-				state = 0;
-				break;
-			case 2:
-				if (ch == 60) {   // <
-					state++;
-					break;
-				}
-				state = 0;
-				break;
-			case 3:
-				if (ch == 48) {   // 0
-					state++;
-					break;
-				}
-				state = 0;
-				break;
-			case 4:
-				if (ch == 59) {   // ;
-					state++;
-					break;
-				}
-				state = 0;
-				break;
-			case 5:
-				if (ch >= ascii('0') && ch <= ascii('9')) {
-					optval = optval * 10 + (ch - ascii('0'));
-					break;
-				}
-				else if(ch == 59) {
-					if (optval === 3)
-						ret = true;
-					optval = 0;
-					break;
-				}
-				else if (ch === 99) { // c
-					if (optval === 3)
-						ret = true;
-					return ret;
-				}
-				state = 0;
-				break;
-		}
-	}
-	return ret;
-}
-
 function detect_graphics()
 {
 	var tmpckpt;
@@ -1171,15 +1111,13 @@ function detect_graphics()
 	// Detect PPM graphics and load the cache
 	graph = false;
 	tmpckpt = console.ctrlkey_passthru;
-	if (console.cterm_version >= 1316) {
-		console.ctrlkey_passthru = '+[';
-		console.write('\x1b[<c');
-		graph = pixel_capability();
+	if (console.cterm_version >= cterm.cterm_version_supports_copy_buffers) {
+		graph = cterm.query_ctda(cterm.cterm_device_attributes.pixelops_supported);
 	}
 
 	if (graph) {
 		// Load up cache...
-		f = new File(js.exec_dir+'/'+gfile);
+		f = new File(js.exec_dir+gfile);
 		if (f.open('rb')) {
 			sent = false;
 			md5 = f.md5_hex;
@@ -1205,7 +1143,7 @@ function detect_graphics()
 			f.close();
 			if (graph) {
 				sent = false;
-				f = new File(js.exec_dir+'/'+mfile);
+				f = new File(js.exec_dir+mfile);
 				if (f.open('rb')) {
 					md5 = f.md5_hex;
 					console.write('\x1b_SyncTERM:C;L;minesweeper/'+mfile+'\x1b\\');
-- 
GitLab