PluginNutritionDumper.c
class PluginNutritionDumper extends PluginBase
{
/*
ref TStringArray m_AllPaths = new TStringArray;
ref TStringArray m_AllLines = new TStringArray;
ref map<string, int> m_ParamPool = new map<string, int>;
string config_path;
string child_name;
int scope;
string path;
PlayerBase m_Player;
override void OnInit()
{
m_AllPaths.Insert("CfgVehicles");
m_AllPaths.Insert("cfgLiquidDefinitions");
m_Player = PlayerBase.Cast(g_Game.GetPlayer());
}
void CheckInit()
{
m_AllLines.Clear();
string line = "Classname(stage),energy,water,toxicity,fullnessIndex,nutritionalIndex";
m_AllLines.Insert(line);
for(int i = 0; i < m_AllPaths.Count(); i++)
{
config_path = m_AllPaths.Get(i);
int children_count = g_Game.ConfigGetChildrenCount(config_path);
for(int x = 0; x < children_count; x++)
{
g_Game.ConfigGetChildName(config_path, x, child_name);
path = config_path + " " + child_name;
scope = g_Game.ConfigGetInt( config_path + " " + child_name + " scope" );
bool should_check = 1;
if( config_path == "CfgVehicles" && scope == 0)
{
should_check = 0;
}
if ( should_check )
{
bool has_nutrition = g_Game.ConfigIsExisting(path + " Nutrition");
bool has_stages = g_Game.ConfigIsExisting(path + " Food");
if(has_nutrition || has_stages)
{
EntityAI item = PlayerBase.Cast(g_Game.GetPlayer()).SpawnEntityOnGroundOnCursorDir(child_name,1);
Edible_Base edible = Edible_Base.Cast(item);
if(edible)
{
//Print("spawning " + child_name);
line = "";
NutritionalProfile profile;
if(!has_stages)
{
profile = edible.GetNutritionalProfile();
line = BuildLine(child_name, profile);
m_AllLines.Insert(line);
//Print(line);
}
else
{
for(int z = FoodStageType.RAW; z < FoodStageType.COUNT; z++)
{
if( z != FoodStageType.RAW )
edible.ChangeFoodStage(z);
profile = edible.GetNutritionalProfile();
string itemname = child_name + "(stage " + z.ToString()+")";
line = BuildLine(itemname, profile);
m_AllLines.Insert(line);
}
}
}
}
}
}
}
SaveToFile("nutritional_values.csv");
}
protected void SaveToFile(string filename)
{
FileHandle file = OpenFile(filename, FileMode.WRITE);
if( file!=0 )
{
for(int i = 0; i < m_AllLines.Count(); i++)
{
FPrintln(file,m_AllLines.Get(i));
Print(m_AllLines.Get(i));
}
}
}
string BuildLine(string item_name, NutritionalProfile profile)
{
string line = item_name+",";
line = line + profile.GetEnergy()+",";
line = line + profile.GetWaterContent()+",";
line = line + profile.GetToxicity()+",";
line = line + profile.GetFullnessIndex()+",";
line = line + profile.GetNutritionalIndex();
return line;
}
*/
}