code/change.cpp
2024-10-26 09:15:45 +08:00

138 lines
4.2 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <iostream>
#include <string>
#include <windows.h>
#include <cstdlib>
#include <fstream>
#include "SimpleIni.h"
using namespace std;
// 函数声明
bool fileExists(const std::string& filename);
bool createDefaultConfig(const std::string& filename);
bool renameFolder(const std::string& oldName, const std::string& newName); // 使用 MoveFile
int main(){
const std::string configFile = "config.ini";
// 检查 config.ini 是否存在
if (!fileExists(configFile)) {
cout << "未检测到 " << configFile << " 文件,正在创建默认配置..." << endl;
if (createDefaultConfig(configFile)) {
cout << "默认配置文件创建成功。" << endl;
} else {
cout << "创建默认配置文件失败。" << endl;
return 1; // 退出程序,因为无法创建配置文件
}
}
// 初始化INI文件
CSimpleIniA ini;
ini.SetUnicode();
ini.SetMultiKey(true);
SI_Error rc = ini.LoadFile(configFile.c_str());
if (rc < 0) {
cout << "无法加载配置文件 " << configFile << endl;
return 1;
}
const char* name = ini.GetValue("User", "name", "0");
cout << "欢迎使用CSSO与CS起源切换程序" << endl;
cout << "当前模式: " << name <<"(0为CSSO1为CS起源)"<< endl;
cout << "请选择操作:" << endl;
cout << "1. CSSO" << endl;
cout << "2. CS起源" << endl;
cout << "3. 退出" << endl;
int choice;
cin >> choice;
if (choice == 1) {
if (strcmp(name, "0") == 0) {
cout << "你已是CSSO模式!" << endl;
} else {
// 切换到CSSO模式
bool result1 = renameFolder("bin", "bin_backup");
bool result2 = renameFolder("bin2", "bin");
if (result1 && result2) {
ini.SetValue("User", "name", "0");
SI_Error saveRc = ini.SaveFile(configFile.c_str());
if (saveRc >= 0) {
cout << "成功切换到CSSO模式!" << endl;
} else {
cout << "保存配置文件失败!" << endl;
}
} else {
cout << "切换失败!检查文件路径或权限。" << endl;
}
Sleep(1500);
}
}
else if (choice == 2) {
if (strcmp(name, "1") == 0) {
cout << "你已是CS起源模式!" << endl;
} else {
// 切换到CS起源模式
bool result1 = renameFolder("bin", "bin2");
bool result2 = renameFolder("bin_backup", "bin");
if (result1 && result2) {
ini.SetValue("User", "name", "1");
SI_Error saveRc = ini.SaveFile(configFile.c_str());
if (saveRc >= 0) {
cout << "成功切换到CS起源模式!" << endl;
} else {
cout << "保存配置文件失败!" << endl;
}
} else {
cout << "切换失败!检查文件路径或权限。" << endl;
}
Sleep(1500);
}
}
else if (choice == 3) {
cout << "退出程序." << endl;
Sleep(100);
return 0;
}
else {
cout << "无效的选项,请重新运行程序并选择正确的选项。" << endl;
}
return 0;
}
// 检查文件是否存在
bool fileExists(const std::string& filename) {
std::ifstream infile(filename);
return infile.good();
}
// 创建默认的config.ini文件
bool createDefaultConfig(const std::string& filename) {
CSimpleIniA ini;
ini.SetUnicode();
ini.SetMultiKey(true);
// 设置默认值
ini.SetValue("User", "name", "0");
// 保存INI文件
SI_Error rc = ini.SaveFile(filename.c_str());
return (rc >= 0);
}
// 使用 MoveFile 重命名文件夹
bool renameFolder(const std::string& oldName, const std::string& newName) {
if (MoveFile(oldName.c_str(), newName.c_str())) {
cout << "重命名成功: " << oldName << " -> " << newName << endl;
return true;
} else {
DWORD error = GetLastError();
cout << "重命名失败: " << oldName << " -> " << newName << " (错误代码: " << error << ")" << endl;
return false;
}
}