PluginHorticulture.c
class PluginHorticulture extends PluginBase
{
ref map<string, ref PlantMaterialHealth> m_PlantMaterials;
void PluginHorticulture()
{
m_PlantMaterials = new map<string, ref PlantMaterialHealth>;
LoadFromCfg();
}
void LoadFromCfg()
{
string cfg_access = "CfgHorticulture"; // it is stored in dz\gear\cultivation\cfgHorticulture.hpp
int cfg_horticulture_count = g_Game.ConfigGetChildrenCount( cfg_access );
for ( int i = 0; i < cfg_horticulture_count; i++ )
{
string cfg_class_name = "";
g_Game.ConfigGetChildName( cfg_access, i, cfg_class_name );
string cfg_class_access = cfg_access + " " + cfg_class_name;
int cfg_class_count = g_Game.ConfigGetChildrenCount( cfg_class_access );
for ( int j = 0; j < cfg_class_count; j++ )
{
string cfg_subclass_name = "";
g_Game.ConfigGetChildName( cfg_class_access, j, cfg_subclass_name );
string cfg_subclass_access = cfg_class_access + " " + cfg_subclass_name;
int cfg_subclass_count = g_Game.ConfigGetChildrenCount( cfg_subclass_access );
PlantMaterialHealth plantMaterialHealth = NULL;
if ( cfg_class_name == "Plants" )
{
plantMaterialHealth = new PlantMaterialHealth;
m_PlantMaterials.Set( cfg_subclass_name, plantMaterialHealth );
}
for ( int k = 0; k < cfg_subclass_count; k++ )
{
string cfg_variable_name = "";
g_Game.ConfigGetChildName( cfg_subclass_access, k, cfg_variable_name );
string cfg_variable_access = cfg_subclass_access + " " + cfg_variable_name;
if ( cfg_class_name == "Plants" )
{
string string_param = "";
g_Game.ConfigGetText( cfg_variable_access, string_param );
if ( cfg_variable_name == "infestedTex" )
{
plantMaterialHealth.m_InfestedTex = string_param;
}
else if ( cfg_variable_name == "infestedMat" )
{
plantMaterialHealth.m_InfestedMat = string_param;
}
else if ( cfg_variable_name == "healthyTex" )
{
plantMaterialHealth.m_HealthyTex = string_param;
}
else if ( cfg_variable_name == "healthyMat" )
{
plantMaterialHealth.m_HealthyMat = string_param;
}
}
}
}
}
}
string GetPlantType( Object obj )
{
string seed_type = obj.GetType();
string plant_type = "";
g_Game.ConfigGetText( "cfgVehicles " + seed_type + " Horticulture PlantType", plant_type );
return plant_type;
}
float GetSurfaceFertility( string surface_type )
{
float fertility = 0.8;
if ( surface_type == "hlina" || surface_type == "CRGrass1" || surface_type == "CRGrass2" || surface_type == "CRForest1" || surface_type == "CRForest2" || surface_type == "CRGrit1" )
{
fertility = 0.8;
}
return fertility;
}
bool GiveWormsToPlayer( PlayerBase player, float chance )
{
if ( Math.RandomFloat01() <= chance )
{
ItemBase item = ItemBase.Cast( player.GetHumanInventory().CreateInInventory("Food_Worm") );
item.SetQuantity( 1 );
return true;
}
return false;
}
PlantMaterialHealth GetPlantMaterial( string plant_type )
{
if ( m_PlantMaterials.Contains(plant_type) )
{
return m_PlantMaterials.Get(plant_type);
}
return NULL;
}
}