Mercurial > otakunoraifu
annotate xlovesys.cc @ 56:c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
* splitted scn2k.h into smaller header files
* moved some definitions from scn2k_*.cc to the header files
* moved opcode implementation to scn2k_*impl.cc
author | thib |
---|---|
date | Thu, 30 Apr 2009 19:05:09 +0000 |
parents | ddbcbd000206 |
children | 4416cfac86ae |
rev | line source |
---|---|
0 | 1 /* |
2 * Copyright (c) 2004-2006 Kazunori "jagarl" Ueno | |
3 * All rights reserved. | |
4 * | |
5 * Redistribution and use in source and binary forms, with or without | |
6 * modification, are permitted provided that the following conditions | |
7 * are met: | |
8 * 1. Redistributions of source code must retain the above copyright | |
9 * notice, this list of conditions and the following disclaimer. | |
10 * 2. Redistributions in binary form must reproduce the above copyright | |
11 * notice, this list of conditions and the following disclaimer in the | |
12 * documentation and/or other materials provided with the distribution. | |
13 * 3. The name of the author may not be used to endorse or promote products | |
14 * derived from this software without specific prior written permission. | |
15 * | |
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | |
17 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |
18 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |
19 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | |
20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | |
21 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |
25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
26 */ | |
27 | |
28 // #define ROOTPATH "/mnt/KEY/CLANNAD" | |
29 // #define ROOTPATH "/home/uenok/pb" | |
30 // #define FONT "msgothic.ttc" | |
31 /* kochi-mincho-subst.ttf あるいは -*-*-*-r-*--24-*-*-*-*-*-jisx0208.1983-* など */ | |
32 /* TrueType Font は /usr/X11R6/lib/X11/fonts/TrueType/ などに存在する必要がある */ | |
33 | |
52 | 34 #include <stdio.h> |
35 #include <stdlib.h> | |
36 #include <unistd.h> | |
37 #include <locale.h> | |
0 | 38 |
52 | 39 #include <SDL.h> |
40 #include <vector> | |
41 #include <getopt.h> | |
0 | 42 |
52 | 43 #include "system/file.h" |
44 #include "system/system_config.h" | |
45 #include "window/widget.h" | |
46 #include "window/system.h" | |
0 | 47 |
52 | 48 #include "music2/music.h" |
0 | 49 |
52 | 50 #include "scn2k/scn2k.h" |
51 #include "scn2k/scn2k_impl.h" | |
0 | 52 |
53 const char key_lb_orig[] = {0x4b, 0x45, 0x59, 0x5c, 0x83, 0x8a, 0x83, 0x67, 0x83, 0x8b, 0x83, 0x6f, 0x83, 0x58, 0x83, 0x5e, 0x81, 0x5b, 0x83, 0x59, 0x81, 0x49, 0}; | |
54 | |
55 const char key_lb_new[] = "KEY\\LittleBusters"; | |
56 | |
57 | |
58 extern "C" int main(int argc, char* argv[]); /* SDL.h で定義されるので必要ないはずなんだけど…… */ | |
59 | |
60 int main(int argc, char *argv[]) { | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
61 AyuSysConfig *config = AyuSysConfig::GetInstance(); |
0 | 62 int opt = 0, end = 0, screenmode = 0; |
63 char rootPath[1024] = "/mnt/KEY/CLANNAD"; | |
64 char font[1024] = "msgothic.ttc"; | |
35 | 65 char* xor_key = NULL; |
0 | 66 Uint32 videoOptions = SDL_HWSURFACE; |
67 | |
68 while(1) { | |
35 | 69 opt = getopt(argc, argv, "fdt:c:r:k:vh?"); |
0 | 70 if(opt == -1) {break;} |
71 | |
72 switch(opt) { | |
73 case 'f': | |
74 videoOptions |= SDL_FULLSCREEN; | |
75 break; | |
76 case 'd': | |
77 videoOptions |= SDL_DOUBLEBUF; | |
78 break; | |
79 case 't': | |
80 strncpy(font, optarg, 1023); | |
81 break; | |
82 case 'r': | |
83 strncpy(rootPath, optarg, 1023); | |
84 break; | |
85 case 'v': | |
41
4c832144b3f2
OtakuNoRaifu is born! (Changed 'xclannad' to 'OtakuNoRaifu')
thib
parents:
35
diff
changeset
|
86 printf("otakunoraifu %s\n", VERSION); |
0 | 87 end = 1; |
88 break; | |
35 | 89 case 'k': |
90 if (xor_key == NULL) | |
91 xor_key = new char[33]; | |
92 strncpy(xor_key, optarg, 32); | |
93 break; | |
0 | 94 case 'h': |
95 case '?': | |
96 printf("\nUsage: %s [OPTIONS]\n\n", argv[0]); | |
97 printf(" -f : full screen mode\n"); | |
98 printf(" -d : double buffer mode\n"); | |
99 printf(" -t : set font (typeface)\n"); | |
100 printf(" -r : set root path (default /mnt/KEY/CLANNAD)\n"); | |
35 | 101 printf(" -k : set xor key, if needed\n"); |
0 | 102 printf(" -v : show version and exit\n"); |
103 printf(" -h -? : show help and exit\n\n"); | |
104 end = 1; | |
105 break; | |
106 } | |
107 } | |
108 if(end == 1) return 0; | |
109 | |
110 printf("Settings:\n"); | |
111 printf(" Locale : %s\n", setlocale(LC_ALL, "")); | |
112 printf(" Root Path : %s\n", rootPath); | |
113 printf(" Font : %s\n", font); | |
114 printf("\n"); | |
52 | 115 |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
116 FileSearcher::GetInstance()->InitRoot(rootPath); |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
117 config->LoadInitFile(); |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
118 const char* regname = config->GetParaStr("#REGNAME"); |
0 | 119 if (strcmp(regname, key_lb_orig) == 0) { // "リトルバスターズ! -> LittleBustersに#REGNAMEを変更 |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
120 config->SetParaStr("#REGNAME", key_lb_new); |
0 | 121 } |
35 | 122 if (xor_key == NULL) |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
123 KeyHolder::GetInstance()->GuessKey((char*)regname); |
35 | 124 else { |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
125 KeyHolder::GetInstance()->SetKey2(xor_key); |
35 | 126 delete[] xor_key; |
127 } | |
0 | 128 SetFont(font); |
129 | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
130 MuSys::GetInstance()->InitMusic(); |
0 | 131 |
132 if(SDL_Init(SDL_INIT_VIDEO)) { | |
133 printf("Unable to init SDL: %s\n", SDL_GetError()); | |
52 | 134 return 1; |
0 | 135 } |
136 | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
137 config->GetParam("#SCREENSIZE_MOD", 1, &screenmode); |
0 | 138 if (screenmode == 1) { |
139 SDL_SetVideoMode(800, 600, 0, videoOptions); | |
140 } else { | |
141 SDL_SetVideoMode(640, 480, 0, videoOptions); | |
142 } | |
143 // SDL_SetVideoMode(640, 480, 0, videoOptions); | |
144 // SDL_SetVideoMode(800, 600, 0, SDL_HWSURFACE /*| SDL_FULLSCREEN */); | |
52 | 145 |
146 System::Main main_sys; | |
147 PicContainer* main_panel = main_sys.root.create_node(Rect(0, 0, main_sys.root.width, main_sys.root.height), 0); | |
148 main_panel->show(); | |
149 try { | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
150 Scn2k scn(main_sys.event, *main_panel); |
52 | 151 main_sys.Mainloop(); |
152 } catch(...) { | |
153 fprintf(stderr,"System faulted; exit now.\n"); | |
0 | 154 } |
52 | 155 delete main_panel; |
156 | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
157 MuSys::Quit(); |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
158 KeyHolder::Quit(); |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
159 AyuSysConfig::Quit(); |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
160 FileSearcher::Quit(); |
0 | 161 |
162 SDL_Quit(); | |
163 } | |
164 |