Hello
I was wondering about how to get nodes around player. I figured out that writing two xml referencing all Minerals and Herbs was a good way to do that.
With those two list and Object name was able to identify whether or not this object is a node.
Herbs.xml
Code:
<?xml version="1.0" encoding="utf-8" ?>
<herbs>
<herb>Bloodthistle</herb>
<herb>Peacebloom</herb>
<herb>Silverleaf</herb>
<herb>Earthroot</herb>
<herb>Mageroyal</herb>
<herb>Briarthorn</herb>
<herb>Stranglekelp</herb>
<herb>Bruiseweed</herb>
<herb>Wild Steelbloom</herb>
<herb>Grave Moss</herb>
<herb>Kingsblood</herb>
<herb>Liferoot</herb>
<herb>Fadeleaf</herb>
<herb>Goldthorn</herb>
<herb>Khadgar's Whisker</herb>
<herb>Wintersbite</herb>
<herb>Firebloom</herb>
<herb>Purple Lotus</herb>
<herb>Arthas' Tears</herb>
<herb>Sungrass</herb>
<herb>Blindweed</herb>
<herb>Ghost Mushroom</herb>
<herb>Gromsblood</herb>
<herb>Golden Sansam</herb>
<herb>Dreamfoil</herb>
<herb>Mountain Silversage</herb>
<herb>Plaguebloom</herb>
<herb>Icecap</herb>
<herb>Black Lotus</herb>
<herb>Felweed</herb>
<herb>Frozen Herb</herb>
<herb>Dreaming Glory</herb>
<herb>Ragveil</herb>
<herb>Terocone</herb>
<herb>Flame Cap</herb>
<herb>Ancient Lichen</herb>
<herb>Goldclover</herb>
<herb>Netherbloom</herb>
<herb>Netherdust Bush</herb>
<herb>Firethorn</herb>
<herb>Nightmare Vine</herb>
<herb>Mana Thistle</herb>
<herb>Tiger Lily</herb>
<herb>Talandra's Rose</herb>
<herb>Adder's Tongue</herb>
<herb>Frozen Herb</herb>
<herb>Frozen Herb</herb>
<herb>Lichbloom</herb>
<herb>Icethorn</herb>
<herb>Frost Lotus</herb>
</herbs>
Minerals.xml
Code:
<?xml version="1.0" encoding="utf-8" ?>
<nodes>
<node>Black Blood of Yogg-Saron</node>
<node>Copper Vein</node>
<node>Enchanted Earth</node>
<node>Enchanted Earth</node>
<node>Strange Ore</node>
<node>Incendicite Mineral Vein</node>
<node>Tin Vein</node>
<node>Lesser Bloodstone Deposit</node>
<node>Ooze Covered Silver Vein</node>
<node>Silver Vein</node>
<node>Iron Deposit</node>
<node>Indurium Mineral Vein</node>
<node>Gold Vein</node>
<node>Ooze Covered Gold Vein</node>
<node>Mithril Deposit</node>
<node>Ooze Covered Mithril Deposit</node>
<node>Dark Iron Deposit</node>
<node>Ooze Covered Truesilver Deposit</node>
<node>Truesilver Deposit</node>
<node>Ooze Covered Thorium Vein</node>
<node>Small Thorium Vein</node>
<node>Hakkari Thorium Vein</node>
<node>Ooze Covered Rich Thorium Vein</node>
<node>Rich Thorium Vein</node>
<node>Fel Iron Deposit</node>
<node>Nethercite Deposit</node>
<node>Large Obsidian Chunk</node>
<node>Small Obsidian Chunk</node>
<node>Adamantite Deposit</node>
<node>Cobalt Deposit</node>
<node>Rich Adamantite Deposit</node>
<node>Ancient Gem Vein</node>
<node>Khorium Vein</node>
<node>Rich Cobalt Deposit</node>
<node>Saronite Deposit</node>
<node>Rich Saronite Deposit</node>
<node>Pure Saronite Deposit</node>
<node>Titanium Vein</node>
</nodes>
NodeModel.cs
Code:
namespace Models
{
public class NodeModel
{
public string name { get; set; }
}
}
NodeHelper.cs
Code:
using System.Collections.Generic;
using System.Xml.Linq;
using System.IO;
using System.Xml;
namespace Helpers.Node
{
public class NodeHelper
{
public static List<NodeModel> MineralList { get; private set; }
public static List<NodeModel> HerbList { get; private set; }
static NodeHelper()
{
if (NodeHelper.HerbList == null && NodeHelper.MineralList == null)
{
NodeHelper.HerbList = new List<NodeModel>();
NodeHelper.MineralList = new List<NodeModel>();
loadHerbs();
loadMinerals();
}
}
private static void loadHerbs()
{
MemoryStream HerbStream = new MemoryStream(global::NAMESPACE.Properties.Resources.Herbs);
foreach (XElement node in XElement.Load(XmlTextReader.Create(HerbStream)).Elements())
HerbList.Add(new NodeModel
{
name = node.Value
});
}
private static void loadMinerals()
{
MemoryStream MineralStream = new MemoryStream(global::NAMESPACE.Properties.Resources.Minerals);
foreach (XElement node in XElement.Load(XmlTextReader.Create(MineralStream)).Elements())
MineralList.Add(new NodeModel
{
name = node.Value
});
}
public static bool IsNode(string nodeName)
{
if (HerbList.Find(item => item.name == nodeName) != null)
return true;
if (MineralList.Find(item => item.name == nodeName) != null)
return true;
return false;
}
}
}
Attach both xml as a Binary Ressource to your project and use IsNode(dword ObjectPointer) as a method to test if this object is a node or not.
I don't know if this code is useful or not, anyway it's working