comparison scn2k/scn2k_impl.cc @ 16:92765a5661f7

added "new" label on last savegame and corrected StatSaveFile
author thib
date Mon, 11 Aug 2008 16:23:17 +0000
parents 38226842bac8
children 94fe9153efa5
comparison
equal deleted inserted replaced
15:38226842bac8 16:92765a5661f7
755 cmd.cmd_type = CMD_WAITFRAMEUPDATE; 755 cmd.cmd_type = CMD_WAITFRAMEUPDATE;
756 } else if (cmd.cmd3 == 0x4b4 || cmd.cmd3 == 0x4b5) { // 選択肢巻き戻し 756 } else if (cmd.cmd3 == 0x4b4 || cmd.cmd3 == 0x4b5) { // 選択肢巻き戻し
757 LoadRollback(cmd); 757 LoadRollback(cmd);
758 } else if (cmd.cmd3 == 0x58d) { 758 } else if (cmd.cmd3 == 0x58d) {
759 // 前にロード|セーブされた番号を返す。 759 // 前にロード|セーブされた番号を返す。
760 flag.SetSys(-1); 760 int lastsave;
761 config.GetParam("#LASTSAVE", 1, &lastsave);
762 flag.SetSys(lastsave-1);
761 } else if (cmd.cmd3 == 0x585) { 763 } else if (cmd.cmd3 == 0x585) {
762 // 第一引数の記録された日付、タイトルなどが返される 764 // 第一引数の記録された日付、タイトルなどが返される
763 // データがないなら sys に 0が、あるなら 1 が返る 765 // データがないなら sys に 0が、あるなら 1 が返る
764 int y,m,d,wd,h,min,s,ms; 766 int y,m,d,wd,h,min,s,ms;
765 string title; 767 string title;
1013 path += buf; 1015 path += buf;
1014 1016
1015 struct stat sb; 1017 struct stat sb;
1016 if (stat(path.c_str(), &sb) == -1) return false; 1018 if (stat(path.c_str(), &sb) == -1) return false;
1017 struct tm* t = localtime(&sb.st_mtime); 1019 struct tm* t = localtime(&sb.st_mtime);
1020 year = t->tm_year;
1018 month = t->tm_mon + 1; 1021 month = t->tm_mon + 1;
1019 day = t->tm_mday; 1022 day = t->tm_mday;
1020 hour = t->tm_hour; 1023 hour = t->tm_hour;
1021 min = t->tm_min; 1024 min = t->tm_min;
1025 sec = t->tm_sec;
1026 msec = 0;
1022 /* タイトルの取得 */ 1027 /* タイトルの取得 */
1023 FILE* savefile = fopen(path.c_str(), "rb"); 1028 FILE* savefile = fopen(path.c_str(), "rb");
1024 if (savefile == 0) return false; 1029 if (savefile == 0) return false;
1025 char regname[1024]; 1030 char regname[1024];
1026 sprintf(regname, "KEY=%s\n", config.GetParaStr("#REGNAME")); 1031 sprintf(regname, "KEY=%s\n", config.GetParaStr("#REGNAME"));
1136 fprintf(stderr,"Cannot open save file %s\n",path.c_str()); 1141 fprintf(stderr,"Cannot open save file %s\n",path.c_str());
1137 return; 1142 return;
1138 } 1143 }
1139 fwrite(save.c_str(), save.length(), 1, f); 1144 fwrite(save.c_str(), save.length(), 1, f);
1140 fclose(f); 1145 fclose(f);
1146 config.SetParam("#LASTSAVE", 1, file_number);
1141 cmd.clear(); 1147 cmd.clear();
1142 return; 1148 return;
1143 } 1149 }
1144 1150
1145 void Scn2k::Load(Cmd& cmd) { 1151 void Scn2k::Load(Cmd& cmd) {