- Corrected exit command. - Generic PrintAllValues function using C# Reflection replaces previous hard-coded functions.
226 lines
9.1 KiB
C#
226 lines
9.1 KiB
C#
using FireLance;
|
|
using FireLance.Models;
|
|
using Gsm;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.IO;
|
|
using System.Linq;
|
|
|
|
namespace DevConsole
|
|
{
|
|
class Program
|
|
{
|
|
public static readonly GsmRO gsmRO = new GsmRO();
|
|
public static FireLanceCRUD fireLanceCRUD = new FireLanceCRUD();
|
|
|
|
static void Main(string[] args)
|
|
{
|
|
ConnectToGsmDb();
|
|
ConnectToFlcDb();
|
|
Console.WriteLine("");
|
|
while (true) { CommandsMenu(); }
|
|
}
|
|
|
|
private static void CommandsMenu()
|
|
{
|
|
Console.WriteLine("Please select an option below:\n");
|
|
Console.WriteLine("A. Manage DB Connections --->");
|
|
Console.WriteLine("B. GSM Actions --->");
|
|
Console.WriteLine("C. FLC Actions --->");
|
|
Console.WriteLine("X. Exit application\n");
|
|
Console.Write(":");
|
|
|
|
var userInput = Console.ReadLine();
|
|
Console.Write("\n\n");
|
|
|
|
switch (userInput.ToUpper())
|
|
{
|
|
case "A":
|
|
CmdDbMgr();
|
|
break;
|
|
case "B":
|
|
CmdGsmActions();
|
|
break;
|
|
case "C":
|
|
CmdFlcActions();
|
|
break;
|
|
case "X":
|
|
Environment.Exit(0);
|
|
break;
|
|
default:
|
|
Console.WriteLine("Invalid selection, please enter a listed command.");
|
|
break;
|
|
}
|
|
}
|
|
|
|
private static void ConnectToGsmDb()
|
|
{
|
|
gsmRO.OpenConnection(@"C:\Users\Dunestorm\Projects\FireLance\GSMParser\games.db", 0);
|
|
Console.WriteLine($"GSMParser Connection State: {gsmRO.IsConnectionOpen()}");
|
|
}
|
|
|
|
private static void ConnectToFlcDb()
|
|
{
|
|
fireLanceCRUD.OpenConnection("sr3", 27017);
|
|
Console.WriteLine($"FireLance Connection State: {fireLanceCRUD.IsConnectionOpen()}");
|
|
}
|
|
|
|
#region Command Options
|
|
private static void CmdDbMgr()
|
|
{
|
|
Console.WriteLine("[GsmDb]------------");
|
|
Console.WriteLine("A. Open DB");
|
|
Console.WriteLine("B. Close DB");
|
|
Console.WriteLine("[FlcDb]------------");
|
|
Console.WriteLine("C. Open DB");
|
|
Console.WriteLine("D. Close DB (Unsupported)");
|
|
Console.WriteLine("X. <--- Go back\n");
|
|
Console.Write(":");
|
|
|
|
var userInput = Console.ReadLine();
|
|
Console.Write("\n\n");
|
|
|
|
switch (userInput.ToUpper())
|
|
{
|
|
case "A":
|
|
ConnectToGsmDb();
|
|
break;
|
|
case "B":
|
|
gsmRO.CloseCurrentConnection();
|
|
break;
|
|
case "C":
|
|
ConnectToFlcDb();
|
|
break;
|
|
case "D":
|
|
fireLanceCRUD.CloseCurrentConnection();
|
|
break;
|
|
case "X":
|
|
break;
|
|
}
|
|
}
|
|
|
|
private static void CmdGsmActions()
|
|
{
|
|
Console.WriteLine("A. Query game by ID");
|
|
Console.WriteLine("B. Query directory by ID");
|
|
Console.WriteLine("C. Query game by NAME");
|
|
Console.WriteLine("X. <--- Go back\n");
|
|
Console.Write(":");
|
|
|
|
var userInput = Console.ReadLine();
|
|
Console.Write("\n\n");
|
|
|
|
switch (userInput.ToUpper())
|
|
{
|
|
case "A":
|
|
Console.WriteLine("Enter a game ID:");
|
|
|
|
var queryId = gsmRO.LoadRecords<GameEntryModel>( GsmDbStruct.Columns.GameName,
|
|
GsmDbStruct.Tables.GameEntry,
|
|
GsmDbStruct.Columns.ID,
|
|
Console.ReadLine(),
|
|
true);
|
|
foreach (var record in queryId) PrintAllValues(record);
|
|
|
|
break;
|
|
case "B":
|
|
Console.WriteLine("Enter a game ID:");
|
|
|
|
var queryDirectoryId = gsmRO.LoadRecords<DirectoriesModel>( "*",
|
|
GsmDbStruct.Tables.Directories,
|
|
GsmDbStruct.Columns.GameID,
|
|
Console.ReadLine(),
|
|
true);
|
|
foreach (var record in queryDirectoryId) PrintAllValues(record);
|
|
break;
|
|
case "C":
|
|
Console.WriteLine("Enter game title to search:");
|
|
|
|
var queryGameByName = gsmRO.LoadRecords<GameEntryModel>( GsmDbStruct.Columns.GameName,
|
|
GsmDbStruct.Tables.GameEntry,
|
|
GsmDbStruct.Columns.GameName,
|
|
Console.ReadLine(),
|
|
false);
|
|
foreach (var record in queryGameByName) PrintAllValues(record);
|
|
break;
|
|
case "X":
|
|
break;
|
|
}
|
|
}
|
|
|
|
private static void CmdFlcActions()
|
|
{
|
|
Console.WriteLine("A. FireLance Write Predefined SaveData Entry");
|
|
Console.WriteLine("B. FireLance Read Predefined SaveData Entry");
|
|
Console.WriteLine("X. <--- Go back\n");
|
|
Console.Write(":");
|
|
|
|
var userInput = Console.ReadLine();
|
|
Console.Write("\n\n");
|
|
|
|
switch (userInput.ToUpper())
|
|
{
|
|
case "A":
|
|
var writeMasterGameRecord = new MasterGameRecordModel();
|
|
List<DirectoriesModel> directories = gsmRO.LoadRecords<DirectoriesModel>( "*",
|
|
GsmDbStruct.Tables.Directories,
|
|
GsmDbStruct.Columns.GameID,
|
|
"600",
|
|
true);
|
|
|
|
GameEntryModel gameEntry = gsmRO.LoadRecords<GameEntryModel>( GsmDbStruct.Columns.GameName,
|
|
GsmDbStruct.Tables.GameEntry,
|
|
GsmDbStruct.Columns.ID,
|
|
"600",
|
|
true).First();
|
|
|
|
List<SaveGameEntriesModel> saveGameEntries = new List<SaveGameEntriesModel>();
|
|
saveGameEntries.Add(new SaveGameEntriesModel());
|
|
|
|
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("");
|
|
}
|
|
}
|
|
|
|
break;
|
|
case "X":
|
|
break;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
private static void PrintAllValues<T>(T data)
|
|
{
|
|
foreach (PropertyDescriptor item in TypeDescriptor.GetProperties(data))
|
|
{
|
|
Console.WriteLine($"{item.Name}: {item.GetValue(data)}");
|
|
}
|
|
Console.WriteLine("");
|
|
}
|
|
}
|
|
}
|