[[http://www.siedler-games.de|{{:sg-link.jpg|}}]]
====== Beschreibung ======
Ich habe als Naturliebhaber immer einen inneren Konflikt, wenn ich zur Holzgewinnung ganze Wälder roden muss. Da muss eine eine Alternative her, dachte ich mir, und hier ist sie nun! :-)\\
\\
Mit der Funktion...
CreateWoodPile( _posEntity, _resources )
...kann ein abbaubares Signalfeuer erstellt werden, das die angegebenen Rohstoffe enthält. Dieses ist sozusagen als "Holz-Schacht" zu verstehen, nur mit dem Unterschied, dass der Spieler (wie bei Bäumen) die verbleibenden Rohstoffe nicht sehen kann.
--Beispiel:
CreateWoodPile( "Holzhaufen1", 1000 )
**Vorsicht**: Die angegebene Entität dient nicht nur als Platzhalter, sondern wird "replaced"!
===== Code =====
function CreateWoodPile( _posEntity, _resources )
assert( type( _posEntity ) == "string" );
assert( type( _resources ) == "number" );
gvWoodPiles = gvWoodPiles or {
JobID = StartSimpleJob("ControlWoodPiles"),
};
local pos = GetPosition( _posEntity );
local pile_id = Logic.CreateEntity( Entities.XD_SingnalFireOff, pos.X, pos.Y, 0, 0 );
SetEntityName( pile_id, _posEntity.."_WoodPile" );
ReplaceEntity( _posEntity, Entities.XD_ResourceTree );
Logic.SetResourceDoodadGoodAmount( GetEntityId( _posEntity ), _resources*10 );
table.insert( gvWoodPiles, { ResourceEntity = _posEntity, PileEntity = _posEntity.."_WoodPile", ResourceLimit = _resources*9 } );
end
function ControlWoodPiles()
for i = table.getn( gvWoodPiles ),1,-1 do
if Logic.GetResourceDoodadGoodAmount( GetEntityId( gvWoodPiles[i].ResourceEntity ) ) <= gvWoodPiles[i].ResourceLimit then
DestroyWoodPile( gvWoodPiles[i], i );
end
end
end
function DestroyWoodPile( _piletable, _index )
local pos = GetPosition( _piletable.ResourceEntity );
DestroyEntity( _piletable.ResourceEntity );
DestroyEntity( _piletable.PileEntity );
Logic.CreateEffect( GGL_Effects.FXCrushBuilding, pos.X, pos.Y, 0 );
table.remove( gvWoodPiles, _index )
end