void tcore::save(HWND hdlgP) { std::stringstream strstr; // verify unit type // one or more utype.id changed, delete <units>/<race>/<id>.cfg. for (std::map<int, tunit_type>::const_iterator it = types_updating_.begin(); it != types_updating_.end(); ++ it) { const tunit_type& type = it->second; if (type.utype_from_cfg_.id_ != type.id_) { strstr.str(""); strstr << type.cfg_file(true); delfile1(strstr.str().c_str()); } if (!type.id_.empty() && type.dirty()) { type.generate(); } } core_enable_save_btn(FALSE); // clear updating flag types_updating_.clear(); dirty_ = 0; editor_config::campaign_id = ""; do_sync2(); }
BOOL extra_kingdom_ins_disk(char* kingdom_src, char* kingdom_ins, char* kingdom_ins_android) { char text1[_MAX_PATH], text2[_MAX_PATH]; BOOL fok; walk_campaign_param_t wcp; MakeDirectory(std::string(kingdom_ins)); // 清空目录 fok = delfile1(kingdom_ins); if (!fok) { posix_print_mb("删除目录: %s,失败", kingdom_ins); return fok; } fok = delfile1(kingdom_ins_android); if (!fok) { posix_print_mb("删除目录: %s,失败", kingdom_ins_android); // return fok; } // // <kingdom-src>\data // // 1. images in all campaigns wcp.src_campaign_dir = std::string(kingdom_src) + "\\data\\campaigns"; wcp.ins_campaign_dir = std::string(kingdom_ins) + "\\data\\campaigns"; fok = walk_dir_win32_deepen(wcp.src_campaign_dir.c_str(), 0, cb_walk_campaign, (uint32_t *)&wcp); if (!fok) { return fok; } wcp.ins_campaign_dir = std::string(kingdom_ins_android) + "\\data\\campaigns"; fok = walk_dir_win32_deepen(wcp.src_campaign_dir.c_str(), 0, cb_walk_campaign, (uint32_t *)&wcp); if (!fok) { return fok; } // 2. images in <data>\core root MakeDirectory(std::string("") + kingdom_ins + "\\data\\core"); sprintf(text1, "%s\\data\\core\\images", kingdom_src); sprintf(text2, "%s\\data\\core\\images", kingdom_ins); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } // android MakeDirectory(std::string("") + kingdom_ins_android + "\\data\\core"); sprintf(text2, "%s\\data\\core\\images", kingdom_ins_android); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } // 3. music in <data>\core root sprintf(text1, "%s\\data\\core\\music", kingdom_src); sprintf(text2, "%s\\data\\core\\music", kingdom_ins); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } // android sprintf(text2, "%s\\data\\core\\music", kingdom_ins_android); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } // 4. sounds in <data>\core root sprintf(text1, "%s\\data\\core\\sounds", kingdom_src); sprintf(text2, "%s\\data\\core\\sounds", kingdom_ins); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } // android sprintf(text2, "%s\\data\\core\\sounds", kingdom_ins_android); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } sprintf(text1, "%s\\data\\hardwired", kingdom_src); sprintf(text2, "%s\\data\\hardwired", kingdom_ins); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } // android sprintf(text2, "%s\\data\\hardwired", kingdom_ins_android); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } sprintf(text1, "%s\\data\\lua", kingdom_src); sprintf(text2, "%s\\data\\lua", kingdom_ins); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } // android sprintf(text2, "%s\\data\\lua", kingdom_ins_android); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } sprintf(text1, "%s\\data\\tools", kingdom_src); sprintf(text2, "%s\\data\\tools", kingdom_ins); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } // android sprintf(text2, "%s\\data\\tools", kingdom_ins_android); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } // <kingdom-src>\data\_main_cfg sprintf(text1, "%s\\data\\_main.cfg", kingdom_src); sprintf(text2, "%s\\data\\_main.cfg", kingdom_ins); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制文件,从%s到%s,失败", text1, text2); goto exit; } // android sprintf(text2, "%s\\data\\_main.cfg", kingdom_ins_android); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制文件,从%s到%s,失败", text1, text2); goto exit; } // // <kingdom-src>\fonts // sprintf(text1, "%s\\fonts", kingdom_src); sprintf(text2, "%s\\fonts", kingdom_ins); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } // android sprintf(text2, "%s\\fonts", kingdom_ins_android); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } // // <kingdom-src>\images // sprintf(text1, "%s\\images", kingdom_src); sprintf(text2, "%s\\images", kingdom_ins); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } // android sprintf(text2, "%s\\images", kingdom_ins_android); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } // // <kingdom-src>\manual // sprintf(text1, "%s\\manual", kingdom_src); sprintf(text2, "%s\\manual", kingdom_ins); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } // andorid don't copy manual // // <kingdom-src>\sounds // sprintf(text1, "%s\\sounds", kingdom_src); sprintf(text2, "%s\\sounds", kingdom_ins); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } // android sprintf(text2, "%s\\sounds", kingdom_ins_android); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } // // <kingdom-src>\translations // sprintf(text1, "%s\\translations", kingdom_src); sprintf(text2, "%s\\translations", kingdom_ins); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } // android sprintf(text2, "%s\\translations", kingdom_ins_android); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } // // <kingdom-src>\xwml // sprintf(text1, "%s\\xwml", kingdom_src); sprintf(text2, "%s\\xwml", kingdom_ins); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } // android sprintf(text2, "%s\\xwml", kingdom_ins_android); posix_print("<data>, copy %s to %s ......\n", text1, text2); fok = copyfile(text1, text2); if (!fok) { posix_print_mb("复制目录,从%s到%s,失败", text1, text2); goto exit; } fok = copy_root_files(kingdom_src, kingdom_ins); exit: if (!fok) { delfile1(kingdom_ins); } return fok; }
void On_DlgDDescCommand(HWND hdlgP, int id, HWND hwndCtrl, UINT codeNotify) { char *ptr = NULL; int retval; char text[_MAX_PATH]; BOOL fok; std::string str; std::stringstream strstr; switch (id) { case IDC_BT_DDESC_BROWSE: ptr = GetBrowseFilePath(hdlgP); if (!ptr) { break; } strcpy(text, appendbackslash(ptr)); if (text[strlen(text) - 1] == '\\') { text[strlen(text) - 1] = 0; } if (!check_wok_root_folder(text)) { posix_print_mb("%s,不是有效的kingdom-src-x.x.x源数据目录,请重新选择", appendbackslash(text)); break; } if (strcasecmp(ptr, game_config::path.c_str())) { game_config::path = ptr; gdmgr.heros_.set_path(game_config::path.c_str()); Edit_SetText(GetDlgItem(hdlgP, IDC_ET_DDESC_WWWROOT), appendbackslash(ptr)); OnLSBt(TRUE); if (gdmgr._da != da_sync) { title_select(da_sync); } else { sync_enter_ui(); } update_locale_dir(); } break; case IDM_NEW_EXTRAINSDIST: sprintf(text, "Do you want to extract install-material to C:\\kingdom-ins?"); retval = MessageBox(hdlgP, text, "Confirm Generate", MB_YESNO | MB_DEFBUTTON2); if (retval == IDYES) { fok = extra_kingdom_ins_disk(gdmgr._menu_text, "c:\\kingdom-ins", "c:\\kingdom-ins-android\\com.freeors.kingdom"); posix_print_mb("Extract install-material from %s to C:\\kingdom-ins, %s!!", gdmgr._menu_text, fok? "Success": "Fail"); } break; case IDM_NEW_CAMPAIGN: if (campaign_new()) { // title_select(da_sync); } break; case IDM_EXPLORER_WML: if (!_stricmp(gdmgr._menu_text, "hero.dat")) { if (gdmgr._da != da_wgen) { title_select(da_wgen); } else { wgen_enter_ui(); } } else if (!_stricmp(gdmgr._menu_text, "tb.dat")) { editor_config::type = BIN_BUILDINGRULE; if (gdmgr._da != da_visual) { title_select(da_visual); } else { visual_enter_ui(); } } else if (!_stricmp(extname(gdmgr._menu_text), "bin")) { if (wml_checksum_from_file(std::string(gdmgr._menu_text))) { editor_config::type = BIN_WML; if (gdmgr._da != da_visual) { title_select(da_visual); } else { visual_enter_ui(); } } } break; case IDM_DELETE_ITEM0: // 册除指定的文件/目录 strstr.str(""); str = gdmgr._menu_text; strstr << str.substr(0, str.rfind("\\xwml")); strstr << "\\data\\campaigns\\" << offextname(basename(gdmgr._menu_text)); strcpy(text, strstr.str().c_str()); strstr.str(""); strstr << "您想删除文件:" << gdmgr._menu_text << ",以及目录:"; strstr << text << "?"; // Confirm Multiple File Delete retval = MessageBox(hdlgP, strstr.str().c_str(), "确认删除", MB_YESNO | MB_DEFBUTTON2); if (retval == IDYES) { if (delfile1(gdmgr._menu_text)) { TreeView_DeleteItem(GetDlgItem(hdlgP, IDC_TV_DDESC_EXPLORER), (HTREEITEM)(UINT_PTR)gdmgr._menu_lparam); TreeView_SetChilerenByPath(GetDlgItem(hdlgP, IDC_TV_DDESC_EXPLORER), (HTREEITEM)(UINT_PTR)gdmgr._menu_lparam, dirname(gdmgr._menu_text)); } else { posix_print_mb("Failed delete %s !", gdmgr._menu_text); } if (!delfile1(text)) { posix_print_mb("Failed delete %s !", text); } sync_refresh_sync(); } break; case IDM_DELETE_ITEM1: strstr.str(""); strstr << "将产生不同步,您想删除文件:" << gdmgr._menu_text << "?"; // Confirm Multiple File Delete retval = MessageBox(hdlgP, strstr.str().c_str(), "确认删除", MB_YESNO | MB_DEFBUTTON2); if (retval == IDYES) { if (delfile1(gdmgr._menu_text)) { TreeView_DeleteItem(GetDlgItem(hdlgP, IDC_TV_DDESC_EXPLORER), (HTREEITEM)(UINT_PTR)gdmgr._menu_lparam); TreeView_SetChilerenByPath(GetDlgItem(hdlgP, IDC_TV_DDESC_EXPLORER), (HTREEITEM)(UINT_PTR)gdmgr._menu_lparam, dirname(gdmgr._menu_text)); } else { posix_print_mb("Failed delete %s !", gdmgr._menu_text); } // inform user, there is non sync. if (gdmgr._da != da_sync) { title_select(da_sync); } else { // forbid refresh sync_enter_ui(); } } break; default: break; } return; }