A* pathfinding, autopilot, WIP radar rendering, proper location names, character skills shown in menus, got rid of PreviewCharacter, mantis

This commit is contained in:
Regalis
2015-07-14 21:09:00 +03:00
parent a2636133ca
commit 44b9a63c94
51 changed files with 1971 additions and 940 deletions
+46 -11
View File
@@ -7,12 +7,34 @@ using System.Xml.Linq;
namespace Subsurface
{
class Skill
{
string name;
int level;
public string Name
{
get { return name; }
}
public int Level
{
get { return level; }
}
public Skill(string name, int level)
{
this.name = name;
this.level = level;
}
}
class Job
{
private JobPrefab prefab;
private Dictionary<string, float> skills;
private Dictionary<string, Skill> skills;
public string Name
{
@@ -34,15 +56,26 @@ namespace Subsurface
get { return prefab.ItemNames; }
}
public List<Skill> Skills
{
get { return skills.Values.ToList(); }
}
//public List<float> SkillLevels
//{
// get { return skills.Values.ToList(); }
//}
public Job(JobPrefab jobPrefab)
{
prefab = jobPrefab;
skills = new Dictionary<string, float>();
skills = new Dictionary<string, Skill>();
foreach (KeyValuePair<string, Vector2> skill in prefab.Skills)
{
skills.Add(skill.Key, Rand.Range(skill.Value.X, skill.Value.Y, false));
skills.Add(
skill.Key,
new Skill( skill.Key, (int)Rand.Range(skill.Value.X, skill.Value.Y, false)));
}
}
@@ -53,10 +86,12 @@ namespace Subsurface
foreach (XElement subElement in element.Elements())
{
skills.Add(subElement.Name.ToString(), ToolBox.GetAttributeFloat(subElement, "level", 0.0f));
skills.Add(
subElement.Name.ToString(),
new Skill(subElement.Name.ToString(), ToolBox.GetAttributeInt(subElement, "level", 0)));
}
}
public static Job Random()
{
JobPrefab prefab = JobPrefab.List[Rand.Int(JobPrefab.List.Count-1, false)];
@@ -64,12 +99,12 @@ namespace Subsurface
return new Job(prefab);
}
public float GetSkill(string skillName)
public int GetSkillLevel(string skillName)
{
float skillLevel = 0.0f;
skills.TryGetValue(skillName.ToLower(), out skillLevel);
Skill skill = null;
skills.TryGetValue(skillName, out skill);
return skillLevel;
return (skill==null) ? 0 : skill.Level;
}
public virtual XElement Save(XElement parentElement)
@@ -78,9 +113,9 @@ namespace Subsurface
jobElement.Add(new XAttribute("name", Name));
foreach (KeyValuePair<string, float> skill in skills)
foreach (KeyValuePair<string, Skill> skill in skills)
{
jobElement.Add(new XElement(skill.Key, new XAttribute("level", skill.Value)));
jobElement.Add(new XElement(skill.Key, new XAttribute("level", skill.Value.Level)));
}
parentElement.Add(jobElement);
+7 -6
View File
@@ -85,17 +85,18 @@ namespace Subsurface
{
foreach (XElement subElement in element.Elements())
{
string skillName = subElement.Name.ToString();
if (Skills.ContainsKey(skillName)) continue;
string skillName = ToolBox.GetAttributeString(subElement, "name", "");
var levelAttribute = subElement.Attribute("level").ToString();
if (levelAttribute.Contains("'"))
if (string.IsNullOrEmpty(skillName) || Skills.ContainsKey(skillName)) continue;
var levelString = ToolBox.GetAttributeString(subElement, "level", "");
if (levelString.Contains(","))
{
Skills.Add(skillName, ToolBox.ParseToVector2(levelAttribute, false));
Skills.Add(skillName, ToolBox.ParseToVector2(levelString, false));
}
else
{
float skillLevel = float.Parse(levelAttribute, CultureInfo.InvariantCulture);
float skillLevel = float.Parse(levelString, CultureInfo.InvariantCulture);
Skills.Add(skillName, new Vector2(skillLevel, skillLevel));
}