2020-03-13 22:35:20 +00:00
|
|
|
|
using GameBaseClassLibrary;
|
|
|
|
|
using System;
|
2020-03-01 15:07:22 +00:00
|
|
|
|
using System.Collections.Generic;
|
2020-03-13 22:35:20 +00:00
|
|
|
|
using System.Configuration;
|
|
|
|
|
using System.IO;
|
2020-03-01 15:07:22 +00:00
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
2020-03-13 22:35:20 +00:00
|
|
|
|
using UWUVCI_AIO_WPF.Classes;
|
|
|
|
|
using UWUVCI_AIO_WPF.Properties;
|
|
|
|
|
using UWUVCI_AIO_WPF.UI.Windows;
|
2020-03-01 15:07:22 +00:00
|
|
|
|
|
|
|
|
|
namespace UWUVCI_AIO_WPF
|
|
|
|
|
{
|
|
|
|
|
class MainViewModel : BaseModel
|
|
|
|
|
{
|
|
|
|
|
//public GameConfig GameConfiguration { get; set; }
|
2020-03-01 16:15:54 +00:00
|
|
|
|
private GameConfig gameConfiguration = new GameConfig();
|
2020-03-01 15:07:22 +00:00
|
|
|
|
|
2020-03-13 22:35:20 +00:00
|
|
|
|
|
2020-03-01 15:07:22 +00:00
|
|
|
|
public GameConfig GameConfiguration
|
|
|
|
|
{
|
|
|
|
|
get { return gameConfiguration; }
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
gameConfiguration = value;
|
|
|
|
|
OnPropertyChanged();
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-03-01 16:15:54 +00:00
|
|
|
|
private string romPath;
|
|
|
|
|
|
|
|
|
|
public string RomPath
|
|
|
|
|
{
|
|
|
|
|
get { return romPath; }
|
|
|
|
|
set { romPath = value;
|
|
|
|
|
OnPropertyChanged();
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-03-01 15:07:22 +00:00
|
|
|
|
|
2020-03-13 22:35:20 +00:00
|
|
|
|
|
|
|
|
|
private GameBases gbTemp;
|
|
|
|
|
|
|
|
|
|
public GameBases GbTemp
|
|
|
|
|
{
|
|
|
|
|
get { return gbTemp; }
|
|
|
|
|
set { gbTemp = value; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private List<string> lGameBasesString = new List<string>();
|
|
|
|
|
|
|
|
|
|
public List<string> LGameBasesString
|
|
|
|
|
{
|
|
|
|
|
get { return lGameBasesString; }
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
lGameBasesString = value;
|
|
|
|
|
OnPropertyChanged();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private bool pathsSet { get; set; } = false;
|
2020-03-01 15:52:59 +00:00
|
|
|
|
|
|
|
|
|
public bool PathsSet
|
|
|
|
|
{
|
|
|
|
|
get { return pathsSet; }
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
pathsSet = value;
|
|
|
|
|
OnPropertyChanged();
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-03-01 15:07:22 +00:00
|
|
|
|
|
2020-03-13 22:35:20 +00:00
|
|
|
|
private List<GameBases> lBases = new List<GameBases>();
|
|
|
|
|
|
|
|
|
|
public List<GameBases> LBases
|
|
|
|
|
{
|
|
|
|
|
get { return lBases; }
|
|
|
|
|
set { lBases = value;
|
|
|
|
|
OnPropertyChanged();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region TKLIST
|
|
|
|
|
private List<GameBases> lNDS = new List<GameBases>();
|
|
|
|
|
|
|
|
|
|
public List<GameBases> LNDS
|
|
|
|
|
{
|
|
|
|
|
get { return lNDS; }
|
|
|
|
|
set { lNDS = value; OnPropertyChanged(); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<GameBases> lN64 = new List<GameBases>();
|
|
|
|
|
|
|
|
|
|
public List<GameBases> LN64
|
|
|
|
|
{
|
|
|
|
|
get { return lN64; }
|
|
|
|
|
set { lN64 = value; OnPropertyChanged(); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<GameBases> lNES = new List<GameBases>();
|
|
|
|
|
|
|
|
|
|
public List<GameBases> LNES
|
|
|
|
|
{
|
|
|
|
|
get { return lNES; }
|
|
|
|
|
set { lNES = value; OnPropertyChanged(); }
|
|
|
|
|
}
|
|
|
|
|
private List<GameBases> lGBA = new List<GameBases>();
|
|
|
|
|
|
|
|
|
|
public List<GameBases> LGBA
|
|
|
|
|
{
|
|
|
|
|
get { return lGBA; }
|
|
|
|
|
set { lGBA = value; OnPropertyChanged(); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<GameBases> lSNES = new List<GameBases>();
|
|
|
|
|
|
|
|
|
|
public List<GameBases> LSNES
|
|
|
|
|
{
|
|
|
|
|
get { return lSNES; }
|
|
|
|
|
set { lSNES = value; OnPropertyChanged(); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
2020-03-01 15:07:22 +00:00
|
|
|
|
public MainViewModel()
|
|
|
|
|
{
|
2020-03-08 22:25:34 +00:00
|
|
|
|
|
2020-03-02 17:44:01 +00:00
|
|
|
|
|
2020-03-01 15:07:22 +00:00
|
|
|
|
GameConfiguration = new GameConfig();
|
2020-03-01 15:52:59 +00:00
|
|
|
|
UpdatePathSet(Properties.Settings.Default.PathsSet);
|
2020-03-13 22:35:20 +00:00
|
|
|
|
GetAllBases();
|
2020-03-01 15:52:59 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void UpdatePathSet(bool newValue)
|
|
|
|
|
{
|
|
|
|
|
PathsSet = newValue;
|
2020-03-01 15:07:22 +00:00
|
|
|
|
}
|
2020-03-08 22:25:34 +00:00
|
|
|
|
|
2020-03-13 22:35:20 +00:00
|
|
|
|
public void GetBases(GameConsoles Console)
|
|
|
|
|
{
|
|
|
|
|
List<GameBases> lTemp = new List<GameBases>();
|
|
|
|
|
string vcbpath = $@"bases/bases.vcb{Console.ToString().ToLower()}";
|
|
|
|
|
lTemp = VCBTool.ReadBasesFromVCB(vcbpath);
|
|
|
|
|
LBases.Clear();
|
|
|
|
|
GameBases custom = new GameBases();
|
|
|
|
|
custom.Name = "Custom";
|
|
|
|
|
custom.Region = Regions.EU;
|
|
|
|
|
LBases.Add(custom);
|
|
|
|
|
foreach(GameBases gb in lTemp)
|
|
|
|
|
{
|
|
|
|
|
LBases.Add(gb);
|
|
|
|
|
}
|
|
|
|
|
lGameBasesString.Clear();
|
|
|
|
|
foreach(GameBases gb in LBases)
|
|
|
|
|
{
|
|
|
|
|
LGameBasesString.Add($"{gb.Name} {gb.Region}");
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-03-08 22:25:34 +00:00
|
|
|
|
|
2020-03-13 22:35:20 +00:00
|
|
|
|
private void GetAllBases()
|
|
|
|
|
{
|
|
|
|
|
LN64.Clear();
|
|
|
|
|
LNDS.Clear();
|
|
|
|
|
LNES.Clear();
|
|
|
|
|
LSNES.Clear();
|
|
|
|
|
LGBA.Clear();
|
|
|
|
|
lNDS = VCBTool.ReadBasesFromVCB($@"bases/bases.vcbnds");
|
|
|
|
|
lNES = VCBTool.ReadBasesFromVCB($@"bases/bases.vcbnes");
|
|
|
|
|
lSNES = VCBTool.ReadBasesFromVCB($@"bases/bases.vcbsnes");
|
|
|
|
|
lN64 = VCBTool.ReadBasesFromVCB($@"bases/bases.vcbn64");
|
|
|
|
|
lGBA = VCBTool.ReadBasesFromVCB($@"bases/bases.vcbgba");
|
|
|
|
|
CreateSettingIfNotExist(lNDS, GameConsoles.NDS);
|
|
|
|
|
CreateSettingIfNotExist(lNES, GameConsoles.NES);
|
|
|
|
|
CreateSettingIfNotExist(lSNES, GameConsoles.SNES);
|
|
|
|
|
CreateSettingIfNotExist(lGBA, GameConsoles.GBA);
|
|
|
|
|
CreateSettingIfNotExist(lN64, GameConsoles.N64);
|
|
|
|
|
}
|
|
|
|
|
private void CreateSettingIfNotExist(List<GameBases> l, GameConsoles console)
|
|
|
|
|
{
|
|
|
|
|
string file = $@"keys\{console.ToString().ToLower()}.vck";
|
|
|
|
|
if (!File.Exists(file))
|
|
|
|
|
{
|
|
|
|
|
List<TKeys> temp = new List<TKeys>();
|
|
|
|
|
foreach(GameBases gb in l)
|
|
|
|
|
{
|
|
|
|
|
TKeys tempkey = new TKeys();
|
|
|
|
|
tempkey.Base = gb;
|
|
|
|
|
temp.Add(tempkey);
|
|
|
|
|
}
|
|
|
|
|
KeyFile.ExportFile(temp, console);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void EnterKey()
|
|
|
|
|
{
|
|
|
|
|
EnterKey ek = new EnterKey();
|
|
|
|
|
ek.ShowDialog();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void checkKey(string key)
|
|
|
|
|
{
|
|
|
|
|
if(GbTemp.KeyHash == key.GetHashCode())
|
|
|
|
|
{
|
|
|
|
|
UpdateKeyInFile(key, $@"keys\{GetConsoleOfBase(gbTemp).ToString().ToLower()}.vck", GbTemp, GetConsoleOfBase(gbTemp));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public void UpdateKeyInFile(string key, string file, GameBases Base, GameConsoles console)
|
|
|
|
|
{
|
|
|
|
|
if (File.Exists(file))
|
|
|
|
|
{
|
|
|
|
|
var temp = KeyFile.ReadBasesFromKeyFile(file);
|
|
|
|
|
foreach(TKeys t in temp)
|
|
|
|
|
{
|
|
|
|
|
if(t.Base == Base)
|
|
|
|
|
{
|
|
|
|
|
t.Tkey = key;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
File.Delete(file);
|
|
|
|
|
KeyFile.ExportFile(temp, console);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public GameConsoles GetConsoleOfBase(GameBases gb)
|
|
|
|
|
{
|
|
|
|
|
GameConsoles ret = new GameConsoles();
|
|
|
|
|
bool cont = false;
|
|
|
|
|
foreach(GameBases b in lNDS)
|
|
|
|
|
{
|
|
|
|
|
if(b == gb)
|
|
|
|
|
{
|
|
|
|
|
ret = GameConsoles.NDS;
|
|
|
|
|
cont = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!cont)
|
|
|
|
|
{
|
|
|
|
|
foreach (GameBases b in lN64)
|
|
|
|
|
{
|
|
|
|
|
if (b == gb)
|
|
|
|
|
{
|
|
|
|
|
ret = GameConsoles.N64;
|
|
|
|
|
cont = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!cont)
|
|
|
|
|
{
|
|
|
|
|
foreach (GameBases b in lNES)
|
|
|
|
|
{
|
|
|
|
|
if (b == gb)
|
|
|
|
|
{
|
|
|
|
|
ret = GameConsoles.NES;
|
|
|
|
|
cont = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!cont)
|
|
|
|
|
{
|
|
|
|
|
foreach (GameBases b in lSNES)
|
|
|
|
|
{
|
|
|
|
|
if (b == gb)
|
|
|
|
|
{
|
|
|
|
|
ret = GameConsoles.SNES;
|
|
|
|
|
cont = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!cont)
|
|
|
|
|
{
|
|
|
|
|
foreach (GameBases b in lGBA)
|
|
|
|
|
{
|
|
|
|
|
if (b == gb)
|
|
|
|
|
{
|
|
|
|
|
ret = GameConsoles.GBA;
|
|
|
|
|
cont = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
2020-03-01 15:07:22 +00:00
|
|
|
|
}
|
|
|
|
|
}
|