Implemented MasterGameEntry readback functionality

- Corrected exit command.
- Generic PrintAllValues function using C# Reflection replaces previous hard-coded functions.
This commit is contained in:
2020-07-03 18:46:57 +01:00
parent e6f46b6c95
commit 7ea7797750
+50 -40
View File
@@ -3,6 +3,7 @@ using FireLance.Models;
using Gsm; using Gsm;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
@@ -44,7 +45,7 @@ namespace DevConsole
case "C": case "C":
CmdFlcActions(); CmdFlcActions();
break; break;
case "G": case "X":
Environment.Exit(0); Environment.Exit(0);
break; break;
default: default:
@@ -115,29 +116,33 @@ namespace DevConsole
case "A": case "A":
Console.WriteLine("Enter a game ID:"); Console.WriteLine("Enter a game ID:");
PrintGameEntries(gsmRO.LoadRecords<GameEntryModel>( GsmDbStruct.Columns.GameName, var queryId = gsmRO.LoadRecords<GameEntryModel>( GsmDbStruct.Columns.GameName,
GsmDbStruct.Tables.GameEntry, GsmDbStruct.Tables.GameEntry,
GsmDbStruct.Columns.ID, GsmDbStruct.Columns.ID,
Console.ReadLine(), Console.ReadLine(),
true)); true);
foreach (var record in queryId) PrintAllValues(record);
break; break;
case "B": case "B":
Console.WriteLine("Enter a game ID:"); Console.WriteLine("Enter a game ID:");
PrintDirectories(gsmRO.LoadRecords<DirectoriesModel>( "*", var queryDirectoryId = gsmRO.LoadRecords<DirectoriesModel>( "*",
GsmDbStruct.Tables.Directories, GsmDbStruct.Tables.Directories,
GsmDbStruct.Columns.GameID, GsmDbStruct.Columns.GameID,
Console.ReadLine(), Console.ReadLine(),
true)); true);
foreach (var record in queryDirectoryId) PrintAllValues(record);
break; break;
case "C": case "C":
Console.WriteLine("Enter game title to search:"); Console.WriteLine("Enter game title to search:");
PrintGameEntries(gsmRO.LoadRecords<GameEntryModel>( GsmDbStruct.Columns.GameName, var queryGameByName = gsmRO.LoadRecords<GameEntryModel>( GsmDbStruct.Columns.GameName,
GsmDbStruct.Tables.GameEntry, GsmDbStruct.Tables.GameEntry,
GsmDbStruct.Columns.GameName, GsmDbStruct.Columns.GameName,
Console.ReadLine(), Console.ReadLine(),
false)); false);
foreach (var record in queryGameByName) PrintAllValues(record);
break; break;
case "X": case "X":
break; break;
@@ -146,7 +151,8 @@ namespace DevConsole
private static void CmdFlcActions() private static void CmdFlcActions()
{ {
Console.WriteLine("A. FireLance Import Predefined SaveData Entry"); Console.WriteLine("A. FireLance Write Predefined SaveData Entry");
Console.WriteLine("B. FireLance Read Predefined SaveData Entry");
Console.WriteLine("X. <--- Go back\n"); Console.WriteLine("X. <--- Go back\n");
Console.Write(":"); Console.Write(":");
@@ -156,27 +162,50 @@ namespace DevConsole
switch (userInput.ToUpper()) switch (userInput.ToUpper())
{ {
case "A": case "A":
var masterGameRecord = new MasterGameRecordModel(); var writeMasterGameRecord = new MasterGameRecordModel();
List<DirectoriesModel> directories = gsmRO.LoadRecords<DirectoriesModel>( "*", List<DirectoriesModel> directories = gsmRO.LoadRecords<DirectoriesModel>( "*",
GsmDbStruct.Tables.Directories, GsmDbStruct.Tables.Directories,
GsmDbStruct.Columns.GameID, GsmDbStruct.Columns.GameID,
"600", "600",
true); true);
List<GameEntryModel> gameEntry = gsmRO.LoadRecords<GameEntryModel>( GsmDbStruct.Columns.GameName, GameEntryModel gameEntry = gsmRO.LoadRecords<GameEntryModel>( GsmDbStruct.Columns.GameName,
GsmDbStruct.Tables.GameEntry, GsmDbStruct.Tables.GameEntry,
GsmDbStruct.Columns.ID, GsmDbStruct.Columns.ID,
"600", "600",
true); true).First();
List<SaveGameEntriesModel> saveDescriptor = new List<SaveGameEntriesModel>(); List<SaveGameEntriesModel> saveGameEntries = new List<SaveGameEntriesModel>();
saveDescriptor.Add(new SaveGameEntriesModel()); saveGameEntries.Add(new SaveGameEntriesModel());
masterGameRecord.Directories = directories; writeMasterGameRecord.Directories = directories;
masterGameRecord.GameEntry = gameEntry.First(); writeMasterGameRecord.GameEntry = gameEntry;
masterGameRecord.SaveGameEntries = saveDescriptor; writeMasterGameRecord.SaveGameEntries = saveGameEntries;
fireLanceCRUD.InsertRecord("GameRecords", writeMasterGameRecord);
break;
case "B":
var readMasterGameRecords = fireLanceCRUD.LoadRecordsFromTable<MasterGameRecordModel>("GameRecords");
foreach (var record in readMasterGameRecords)
{
Console.WriteLine(record.Id);
Console.WriteLine("");
PrintAllValues(record.GameEntry);
Console.WriteLine("");
foreach (var subRecord in record.Directories)
{
PrintAllValues(subRecord);
Console.WriteLine("");
}
foreach (var subRecord in record.SaveGameEntries)
{
PrintAllValues(subRecord);
Console.WriteLine("");
}
}
fireLanceCRUD.InsertRecord("GameRecords", masterGameRecord);
break; break;
case "X": case "X":
break; break;
@@ -184,32 +213,13 @@ namespace DevConsole
} }
#endregion #endregion
private static void PrintGameEntries(List<GameEntryModel> gameEntries) private static void PrintAllValues<T>(T data)
{ {
foreach (var game in gameEntries) foreach (PropertyDescriptor item in TypeDescriptor.GetProperties(data))
{ {
Console.WriteLine($"ID: {game.ID}"); Console.WriteLine($"{item.Name}: {item.GetValue(data)}");
Console.WriteLine($"GameName: {game.GameName}");
Console.WriteLine($"BackupWarning: {game.BackupWarning}");
Console.WriteLine($"RestoreWarning: {game.RestoreWarning}");
Console.WriteLine($"LastModified: {game.LastModified}\n");
}
}
private static void PrintDirectories(List<DirectoriesModel> directoryEntries)
{
foreach (var directory in directoryEntries)
{
Console.WriteLine($"GameID: {directory.GameID}");
Console.WriteLine($"SpecialPath: {directory.SpecialPath}");
Console.WriteLine($"Path: {directory.Path}");
Console.WriteLine($"RegHive: {directory.RegHive}");
Console.WriteLine($"RegPath: {directory.RegPath}");
Console.WriteLine($"RegValue: {directory.RegValue}");
Console.WriteLine($"DefinedFiles: {directory.DefinedFiles}");
Console.WriteLine($"ExcludedFiles: {directory.ExcludedFiles}");
Console.WriteLine($"Recurse: {directory.Recurse}\n");
} }
Console.WriteLine("");
} }
} }
} }