Various cleanups.
[open-adventure.git] / cheat.c
1 #include <getopt.h>
2 #include <stdlib.h>
3 #include <stdio.h>
4 #include <stdbool.h>
5 #include <time.h>
6 #include "advent.h"
7 #include "linenoise/linenoise.h"
8 #include "dungeon.h"
9
10 struct game_t game;
11
12 FILE  *logfp = NULL, *rfp = NULL;
13 bool oldstyle = false;
14 bool editline = true;
15 bool prompt = true;
16
17 int main(int argc, char *argv[])
18 {
19     int ch;
20     char *savefilename = NULL;
21     long numdie = 0;
22     long saved = 1;
23     long version = 0;
24
25     /*  Options. */
26     const char* opts = "d:s:v:o:";
27     const char* usage = "Usage: %s [-d numdie] [-s numsaves] [-v version] -o savefilename \n";
28     while ((ch = getopt(argc, argv, opts)) != EOF) {
29         switch (ch) {
30         case 'd':
31             numdie = (long)atoi(optarg);
32             break;
33         case 's':
34             saved = (long)atoi(optarg);
35             break;
36         case 'v':
37             version = (long)atoi(optarg);;
38             break;
39         case 'o':
40             savefilename = optarg;
41             break;
42         default:
43             fprintf(stderr,
44                     usage, argv[0]);
45             fprintf(stderr,
46                     "        -d number of deaths. Signed integer value.'\n");
47             fprintf(stderr,
48                     "        -s number of saves. Signed integer value.\n");
49             fprintf(stderr,
50                     "        -v version number of save format.\n");
51             fprintf(stderr,
52                     "        -o file name of save game to write.\n");
53             exit(EXIT_FAILURE);
54             break;
55         }
56     }
57
58     if (savefilename == NULL) {
59         fprintf(stderr,
60                 usage, argv[0]);
61         fprintf(stderr,
62                 "ERROR: filename required\n");
63         exit(EXIT_FAILURE);
64     }
65
66     FILE *fp = NULL;
67
68     game.lcg_a = 1093;
69     game.lcg_c = 221587;
70     game.lcg_m = 1048576;
71     srand(time(NULL));
72     long seedval = (long)rand();
73     set_seed(seedval);
74
75     /*  Initialize game variables */
76     initialise();
77
78     make_zzword(game.zzword);
79     game.newloc = LOC_START;
80     game.loc = LOC_START;
81     game.limit = GAMELIMIT;
82
83     // apply cheats
84     game.numdie = numdie;
85     game.saved = saved;
86
87     fp = fopen(savefilename, WRITE_MODE);
88     if (fp == NULL) {
89         fprintf(stderr,
90                 "Can't open file %s. Exiting.\n", savefilename);
91         exit(EXIT_FAILURE);
92     }
93
94     savefile(fp, version);
95
96     printf("cheat: %s created.\n", savefilename);
97     return 0;
98 }