Put stuff back in init, C-style
[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 FILE  *logfp = NULL, *rfp = NULL;
11 bool oldstyle = false;
12 bool editline = true;
13 bool prompt = true;
14
15 int main(int argc, char *argv[])
16 {
17     int ch;
18     char *savefilename = NULL;
19     long numdie = 0;
20     long saved = 1;
21     long version = 0;
22
23     /*  Options. */
24     const char* opts = "d:s:v:o:";
25     const char* usage = "Usage: %s [-d numdie] [-s numsaves] [-v version] -o savefilename \n";
26     while ((ch = getopt(argc, argv, opts)) != EOF) {
27         switch (ch) {
28         case 'd':
29             numdie = (long)atoi(optarg);
30             break;
31         case 's':
32             saved = (long)atoi(optarg);
33             break;
34         case 'v':
35             version = (long)atoi(optarg);;
36             break;
37         case 'o':
38             savefilename = optarg;
39             break;
40         default:
41             fprintf(stderr,
42                     usage, argv[0]);
43             fprintf(stderr,
44                     "        -d number of deaths. Signed integer value.'\n");
45             fprintf(stderr,
46                     "        -s number of saves. Signed integer value.\n");
47             fprintf(stderr,
48                     "        -v version number of save format.\n");
49             fprintf(stderr,
50                     "        -o file name of save game to write.\n");
51             exit(EXIT_FAILURE);
52             break;
53         }
54     }
55
56     if (savefilename == NULL) {
57         fprintf(stderr,
58                 usage, argv[0]);
59         fprintf(stderr,
60                 "ERROR: filename required\n");
61         exit(EXIT_FAILURE);
62     }
63
64     FILE *fp = NULL;
65
66     /*  Initialize game variables */
67     initialise();
68
69     make_zzword(game.zzword);
70
71     // apply cheats
72     game.numdie = numdie;
73     game.saved = saved;
74
75     fp = fopen(savefilename, WRITE_MODE);
76     if (fp == NULL) {
77         fprintf(stderr,
78                 "Can't open file %s. Exiting.\n", savefilename);
79         exit(EXIT_FAILURE);
80     }
81
82     savefile(fp, version);
83
84     printf("cheat: %s created.\n", savefilename);
85     return 0;
86 }