StrategyRPG/Johnmagotchi/GameContent/Objects/Units/UnitLoader.cs

98 lines
4.3 KiB
C#

using System;
using System.IO;
using System.Collections.Generic;
using System.Diagnostics;
using Johnmagotchi.Core.tools;
using System.Collections;
using System.Net.Http.Headers;
using static Johnmagotchi.GameContent.Objects.Units.Stats.UnitStatBlock;
using Johnmagotchi.GameContent.Objects.Units.Stats.Loadouts.PlayerClasses;
namespace Johnmagotchi.GameContent.Objects.Units
{
public class UnitLoader
{
public static List<string> GetTest() {
// MAC OS also prly Linux - var path = Path.Combine(Directory.GetCurrentDirectory(), "GameContent/Objects/Units/UnitDefines.csv");
//System.Console.WriteLine("PATH: {0}", Directory.GetCurrentDirectory());
//var path = "..\\..\\..\\GameContent\\Objects\\Units\\UnitDefines.csv";
List<string> listA = new List<string>();
return listA;
}
public static List <Unit> LoadUnitList ()
{
List<Unit> unitList = new List<Unit>();
Console.WriteLine("PATH: {0}", Directory.GetCurrentDirectory());
var path = "..\\..\\..\\Data\\BattleObjects\\UnitDefinitions.csv";
Console.WriteLine("path: {0} ", path);
// these let us resolve which column is which
int IdIndex = -1;
int NameIndex = -1;
int ClassIndex = -1;
int isUniqueIndex = -1;
int HealthIndex = -1;
int AttackIndex = -1;
int DefenseIndex = -1;
int SpeedIndex = -1;
int MovementIndex = -1;
int MovementTypeIndex = -1;
bool AreColumnIndexesSet = false;
using (var reader = new StreamReader(path))
{
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(',');
if (AreColumnIndexesSet == false)
{
//These strings MUST match /GameContent/Data/UnitDefines.CSV
// That file MUST have these in the first row.
for (int i = 0; i < values.Length; i++)
{
if (values[i].Trim() == "ID") { IdIndex = i; }
if (values[i].Trim() == "NAME") { NameIndex = i; }
if (values[i].Trim() == "CLASS") { ClassIndex = i; }
if (values[i].Trim() == "IS_UNIQUE") { isUniqueIndex = i; }
if (values[i].Trim() == "HEALTH") { HealthIndex = i; }
if (values[i].Trim() == "ATTACK") { AttackIndex = i; }
if (values[i].Trim() == "DEFENSE") { DefenseIndex = i; }
if (values[i].Trim() == "SPEED") { SpeedIndex = i; }
if (values[i].Trim() == "MOVEMENT") { MovementIndex = i; }
if (values[i].Trim() == "MOVEMENT_TYPE") { MovementTypeIndex = i; }
}
AreColumnIndexesSet = true;
}
else
{
Unit unit = new Unit();
unit.UnitID = int.Parse(values[IdIndex]);
unit.stats.classId = PlayerClass.GetClassFromShortHand(values[ClassIndex]);
// unit.isUnique = (values[isUniqueIndex].ToLower() == "true");
unit.name = unit.stats.Name = values[NameIndex];
unit.playerClassEnum = PlayerClass.GetClassFromShortHand(values[ClassIndex]);
TibzLog.Debug("loaded class - " + unit.playerClassEnum);
unit.stats.baseStats.MaxHealth = int.Parse(values[HealthIndex]);
unit.stats.baseStats.Attack = int.Parse(values[AttackIndex]);
unit.stats.baseStats.Defense = int.Parse(values[DefenseIndex]);
unit.stats.baseStats.Speed = int.Parse(values[SpeedIndex]);
unit.stats.baseStats.Movement = int.Parse(values[MovementIndex]);
unit.stats.baseStats.setMovementTypeFromFile(values[MovementTypeIndex]);
unitList.Add(unit);
}
}
}
return unitList;
}
}
}