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 System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
@@ -44,7 +45,7 @@ namespace DevConsole
case "C":
CmdFlcActions();
break;
case "G":
case "X":
Environment.Exit(0);
break;
default:
@@ -115,29 +116,33 @@ namespace DevConsole
case "A":
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.Columns.ID,
Console.ReadLine(),
true));
true);
foreach (var record in queryId) PrintAllValues(record);
break;
case "B":
Console.WriteLine("Enter a game ID:");
PrintDirectories(gsmRO.LoadRecords<DirectoriesModel>( "*",
var queryDirectoryId = gsmRO.LoadRecords<DirectoriesModel>( "*",
GsmDbStruct.Tables.Directories,
GsmDbStruct.Columns.GameID,
Console.ReadLine(),
true));
true);
foreach (var record in queryDirectoryId) PrintAllValues(record);
break;
case "C":
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.Columns.GameName,
Console.ReadLine(),
false));
false);
foreach (var record in queryGameByName) PrintAllValues(record);
break;
case "X":
break;
@@ -146,7 +151,8 @@ namespace DevConsole
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.Write(":");
@@ -156,27 +162,50 @@ namespace DevConsole
switch (userInput.ToUpper())
{
case "A":
var masterGameRecord = new MasterGameRecordModel();
var writeMasterGameRecord = new MasterGameRecordModel();
List<DirectoriesModel> directories = gsmRO.LoadRecords<DirectoriesModel>( "*",
GsmDbStruct.Tables.Directories,
GsmDbStruct.Columns.GameID,
"600",
true);
List<GameEntryModel> gameEntry = gsmRO.LoadRecords<GameEntryModel>( GsmDbStruct.Columns.GameName,
GameEntryModel gameEntry = gsmRO.LoadRecords<GameEntryModel>( GsmDbStruct.Columns.GameName,
GsmDbStruct.Tables.GameEntry,
GsmDbStruct.Columns.ID,
"600",
true);
true).First();
List<SaveGameEntriesModel> saveDescriptor = new List<SaveGameEntriesModel>();
saveDescriptor.Add(new SaveGameEntriesModel());
List<SaveGameEntriesModel> saveGameEntries = new List<SaveGameEntriesModel>();
saveGameEntries.Add(new SaveGameEntriesModel());
masterGameRecord.Directories = directories;
masterGameRecord.GameEntry = gameEntry.First();
masterGameRecord.SaveGameEntries = saveDescriptor;
writeMasterGameRecord.Directories = directories;
writeMasterGameRecord.GameEntry = gameEntry;
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;
case "X":
break;
@@ -184,32 +213,13 @@ namespace DevConsole
}
#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($"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($"{item.Name}: {item.GetValue(data)}");
}
Console.WriteLine("");
}
}
}