From 55bc6241288da2f337f2b5de60d3f3154c2a5c4f Mon Sep 17 00:00:00 2001 From: Matthew Faltys Date: Wed, 11 Mar 2020 14:01:32 +0000 Subject: [PATCH] Add ability to edit sotw config --- nethack-launcher/print_user_screen.go | 36 +++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/nethack-launcher/print_user_screen.go b/nethack-launcher/print_user_screen.go index 33f97f1..b0a5bab 100644 --- a/nethack-launcher/print_user_screen.go +++ b/nethack-launcher/print_user_screen.go @@ -18,10 +18,11 @@ func printUserScreen(redisClient *redis.Client, username string) string { println(" l) Logout") println(" c) Change password") println(" w) Watch games in progress") - println(" h) View highscores") - println(" a) View all scores") - println(" e) Edit config") - println(" r) Recover from crash") + println(" h) View NetHack highscores") + println(" a) View all NetHack scores") + println(" e) Edit NetHack config") + println(" f) Edit SOTW config") + println(" r) Recover NetHack from crash") fmt.Printf(" p) Play NetHack %s\n", config.NethackLauncher.NethackVersion) fmt.Printf(" o) Play Shadow of the Wyrm %s\n", config.NethackLauncher.SotwVersion) println(" q) Quit") @@ -46,7 +47,30 @@ func printUserScreen(redisClient *redis.Client, username string) string { hackRCLoc := fmt.Sprintf("%s/user/%s/.nethackrc", config.NethackLauncher.HackDir, username) exec.Command("stty", "-F", "/dev/tty", "echo", "-cbreak").Run() clearScreen() - nh := exec.Command("vim", "-Z", hackRCLoc) + nh := exec.Command("vim", "-i", "NONE", "-Z", hackRCLoc) + nh.Stdout = os.Stdout + nh.Stdin = os.Stdin + nh.Stderr = os.Stderr + nh.Run() + clearScreen() + printUserScreen(redisClient, username) + case "f": + // check if the file has been uplifted + SOTWLoc := fmt.Sprintf("%s/user/%s/sotw/swyrm.ini", config.NethackLauncher.HackDir, username) + il, _ := os.Lstat(SOTWLoc) + if il.Mode()&os.ModeSymlink == os.ModeSymlink { + // the file is still a legacy symlink, remove and recopy + err := os.Remove(SOTWLoc) + if err != nil { + fmt.Println(err) + } + SOTWOrigin := fmt.Sprintf("%s/swyrm.ini", config.NethackLauncher.SotwRoot) + exec.Command("cp", SOTWOrigin, SOTWLoc).Run() + } + + exec.Command("stty", "-F", "/dev/tty", "echo", "-cbreak").Run() + clearScreen() + nh := exec.Command("vim", "-i", "NONE", "-Z", SOTWLoc) nh.Stdout = os.Stdout nh.Stdin = os.Stdin nh.Stderr = os.Stderr @@ -70,6 +94,7 @@ func printUserScreen(redisClient *redis.Client, username string) string { currentTime := time.Now().UTC() fulltime := currentTime.Format("2006-01-02.03:04:05") go runGame(username, fulltime) + //go runCleanup(username) watcher := startWatcher(username, fulltime, redisClient) wg.Wait() close(watcher) @@ -79,6 +104,7 @@ func printUserScreen(redisClient *redis.Client, username string) string { currentTime := time.Now().UTC() fulltime := currentTime.Format("2006-01-02.03:04:05") go runSotwGame(username, fulltime) + //go runCleanup(username) watcher := startWatcher(username, fulltime, redisClient) wg.Wait() close(watcher)