Mercurial > otakunoraifu
comparison xlovesys.cc @ 0:223b71206888
Initial import
author | thib |
---|---|
date | Fri, 01 Aug 2008 16:32:45 +0000 |
parents | |
children | 3fe3e5f184b5 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:223b71206888 |
---|---|
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 | |
34 #include<stdio.h> | |
35 #include<stdlib.h> | |
36 #include<unistd.h> | |
37 #include<locale.h> | |
38 | |
39 #include<SDL.h> | |
40 #include<vector> | |
41 #include<getopt.h> | |
42 | |
43 #include"system/file.h" | |
44 #include"system/system_config.h" | |
45 #include"window/widget.h" | |
46 #include"window/system.h" | |
47 | |
48 #include"music2/music.h" | |
49 | |
50 #include"scn2k/scn2k.h" | |
51 #include"scn2k/scn2k_impl.h" | |
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[]) { | |
61 AyuSysConfig config; | |
62 int opt = 0, end = 0, screenmode = 0; | |
63 char rootPath[1024] = "/mnt/KEY/CLANNAD"; | |
64 char font[1024] = "msgothic.ttc"; | |
65 Uint32 videoOptions = SDL_HWSURFACE; | |
66 | |
67 while(1) { | |
68 opt = getopt(argc, argv, "fdt:c:r:vh?"); | |
69 if(opt == -1) {break;} | |
70 | |
71 switch(opt) { | |
72 case 'f': | |
73 videoOptions |= SDL_FULLSCREEN; | |
74 break; | |
75 case 'd': | |
76 videoOptions |= SDL_DOUBLEBUF; | |
77 break; | |
78 case 't': | |
79 strncpy(font, optarg, 1023); | |
80 break; | |
81 case 'r': | |
82 strncpy(rootPath, optarg, 1023); | |
83 break; | |
84 case 'v': | |
85 // FIXME: "VERSION" undeclared? | |
86 // printf("xclannad %s\n", VERSION); | |
87 printf("xclannad 0.05e\n"); | |
88 end = 1; | |
89 break; | |
90 case 'h': | |
91 case '?': | |
92 printf("\nUsage: %s [OPTIONS]\n\n", argv[0]); | |
93 printf(" -f : full screen mode\n"); | |
94 printf(" -d : double buffer mode\n"); | |
95 printf(" -t : set font (typeface)\n"); | |
96 printf(" -r : set root path (default /mnt/KEY/CLANNAD)\n"); | |
97 printf(" -v : show version and exit\n"); | |
98 printf(" -h -? : show help and exit\n\n"); | |
99 end = 1; | |
100 break; | |
101 } | |
102 } | |
103 if(end == 1) return 0; | |
104 | |
105 printf("Settings:\n"); | |
106 printf(" Locale : %s\n", setlocale(LC_ALL, "")); | |
107 printf(" Root Path : %s\n", rootPath); | |
108 printf(" Font : %s\n", font); | |
109 printf("\n"); | |
110 | |
111 file_searcher.InitRoot(rootPath); | |
112 config.LoadInitFile(); | |
113 const char* regname = config.GetParaStr("#REGNAME"); | |
114 if (strcmp(regname, key_lb_orig) == 0) { // "リトルバスターズ! -> LittleBustersに#REGNAMEを変更 | |
115 config.SetParaStr("#REGNAME", key_lb_new); | |
116 } | |
117 SetFont(font); | |
118 | |
119 MuSys mu(config); | |
120 mu.InitMusic(); | |
121 | |
122 if(SDL_Init(SDL_INIT_VIDEO)) { | |
123 printf("Unable to init SDL: %s\n", SDL_GetError()); | |
124 return 1; | |
125 } | |
126 atexit(SDL_Quit); | |
127 | |
128 config.GetParam("#SCREENSIZE_MOD", 1, &screenmode); | |
129 if (screenmode == 1) { | |
130 SDL_SetVideoMode(800, 600, 0, videoOptions); | |
131 } else { | |
132 SDL_SetVideoMode(640, 480, 0, videoOptions); | |
133 } | |
134 // SDL_SetVideoMode(640, 480, 0, videoOptions); | |
135 // SDL_SetVideoMode(800, 600, 0, SDL_HWSURFACE /*| SDL_FULLSCREEN */); | |
136 { | |
137 System::Main main_sys; | |
138 PicContainer* main_panel = main_sys.root.create_node(Rect(0, 0, main_sys.root.width, main_sys.root.height), 0); | |
139 main_panel->show(); | |
140 try { | |
141 Scn2k scn(main_sys.event, *main_panel, mu, config); | |
142 main_sys.Mainloop(); | |
143 } catch(...) { | |
144 fprintf(stderr,"System faulted; exit now.\n"); | |
145 } | |
146 delete main_panel; | |
147 } | |
148 | |
149 mu.FinalizeMusic(); | |
150 | |
151 SDL_Quit(); | |
152 } | |
153 |