You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
4.6 KiB
140 lines
4.6 KiB
using System.Collections.Generic; |
|
using System.Globalization; |
|
using System.Xml; |
|
|
|
using UnityEngine; |
|
|
|
namespace Ability |
|
{ |
|
public enum InGameAbType |
|
{ |
|
ADD_BULLET_AFTER, |
|
ADD_BULLET_PARALLEL, |
|
ADD_BULLET_45, |
|
ADD_BULLET_RICOCHET, |
|
ADD_DAMAGE, |
|
ADD_ATTACK_SPEED, |
|
ADD_HEALTH, |
|
ADD_XP, |
|
ADD_DROP_GOLD, |
|
ADD_HEADSHOT, |
|
HEAL, |
|
ADD_MINOR_DAMAGE, |
|
ADD_MINOR_SPEED, |
|
DECAY |
|
} |
|
|
|
//----------------------------------------------------------- |
|
public class InGameAbInfo |
|
{ |
|
public float m_value; |
|
public int m_lvlUp; |
|
public int m_maxLvlUp; |
|
public int m_weight; |
|
} |
|
|
|
//----------------------------------------------------------- |
|
public class InGameAbilities |
|
{ |
|
Dictionary<InGameAbType, InGameAbInfo> m_abilities = new Dictionary<InGameAbType, InGameAbInfo>(); |
|
|
|
//----------------------------------------------------------- |
|
public void Init() |
|
{ |
|
ParseXml(); |
|
} |
|
|
|
//----------------------------------------------------------- |
|
void ParseXml() |
|
{ |
|
TextAsset xml = Resources.Load("data/InGameAbilitySettings") as TextAsset; |
|
|
|
XmlDocument file = new XmlDocument(); |
|
file.LoadXml(xml.text); |
|
|
|
XmlNode pRoot = file.DocumentElement; |
|
if (pRoot == null) |
|
{ |
|
CommonFunctions.myassert(false, "Root element not found or xml doesn't load!"); |
|
return; |
|
} |
|
|
|
NumberStyles style = NumberStyles.Number; |
|
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-GB"); |
|
|
|
foreach (XmlNode childNode in pRoot.ChildNodes) |
|
{ |
|
InGameAbInfo info = new InGameAbInfo(); |
|
|
|
foreach (XmlAttribute attr in childNode.Attributes) |
|
{ |
|
if (attr.Name == "value") |
|
float.TryParse(attr.Value, style, culture, out info.m_value); |
|
if (attr.Name == "weight") |
|
int.TryParse(attr.Value, style, culture, out info.m_weight); |
|
if (attr.Name == "max_lvlup") |
|
int.TryParse(attr.Value, style, culture, out info.m_maxLvlUp); |
|
} |
|
|
|
InGameAbType type = GetAbilityTypeByName(childNode.Name); |
|
m_abilities.Add(type, info); |
|
} |
|
} |
|
|
|
//----------------------------------------------------------- |
|
public InGameAbType GetAbilityTypeByName(string name) |
|
{ |
|
if (name == "ADD_BULLET_AFTER") |
|
return InGameAbType.ADD_BULLET_AFTER; |
|
else if (name == "ADD_BULLET_PARALLEL") |
|
return InGameAbType.ADD_BULLET_PARALLEL; |
|
else if (name == "ADD_BULLET_45") |
|
return InGameAbType.ADD_BULLET_45; |
|
else if (name == "ADD_BULLET_RICOCHET") |
|
return InGameAbType.ADD_BULLET_RICOCHET; |
|
else if (name == "ADD_DAMAGE") |
|
return InGameAbType.ADD_DAMAGE; |
|
else if (name == "ADD_ATTACK_SPEED") |
|
return InGameAbType.ADD_ATTACK_SPEED; |
|
else if (name == "ADD_HEALTH") |
|
return InGameAbType.ADD_HEALTH; |
|
else if (name == "ADD_XP") |
|
return InGameAbType.ADD_XP; |
|
else if (name == "ADD_DROP_GOLD") |
|
return InGameAbType.ADD_DROP_GOLD; |
|
else if (name == "ADD_HEADSHOT") |
|
return InGameAbType.ADD_HEADSHOT; |
|
else if (name == "HEAL") |
|
return InGameAbType.HEAL; |
|
else if (name == "ADD_MINOR_DAMAGE") |
|
return InGameAbType.ADD_MINOR_DAMAGE; |
|
else if (name == "ADD_MINOR_SPEED") |
|
return InGameAbType.ADD_MINOR_SPEED; |
|
else if (name == "DECAY") |
|
return InGameAbType.DECAY; |
|
|
|
CommonFunctions.myassert(false); |
|
return InGameAbType.ADD_HEALTH; |
|
} |
|
|
|
//----------------------------------------------------------- |
|
public string GetAbNameByType(InGameAbType type) |
|
{ |
|
return CommonFunctions.GetInGameAbilityNameStr(type); |
|
} |
|
|
|
//----------------------------------------------------------- |
|
public InGameAbInfo GetAbilityInfoByType(InGameAbType type) |
|
{ |
|
if (m_abilities.ContainsKey(type)) |
|
{ |
|
InGameAbInfo info = m_abilities[type]; |
|
return info; |
|
} |
|
else |
|
CommonFunctions.myassert(false, "WRONG ABILITY!"); |
|
|
|
return null; |
|
} |
|
} |
|
}
|
|
|