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)