procedure TBSPMap.ProcessEntity(Block : TStringList);
var
i,s,e,s2,e2 : integer;
Name,Value,ValueUC,SS : string;
Angle : Boolean;
begin
if not (block.count > 0) then exit;
inc(Data.numOfBSPEntitys);
Setlength(Data.Entitys,Data.numOfBSPEntitys);
Angle := False;
Data.Entitys[Data.numOfBSPEntitys-1].NewtonIndex := -1;
Data.Entitys[Data.numOfBSPEntitys-1].Mid := -1;
Data.Entitys[Data.numOfBSPEntitys-1].TargetId := -1;
Data.Entitys[Data.numOfBSPEntitys-1].TargetedById := -1;
Data.Entitys[Data.numOfBSPEntitys-1].HintId := -1;
Data.Entitys[Data.numOfBSPEntitys-1].Model2Id := -1;
Data.Entitys[Data.numOfBSPEntitys-1].MoveableID := -1;
// Process data and place in Entitys
try
for i := 0 to block.Count-1 do
begin
s := Pos('"',block.Strings[i]);
e := Pos('"',copy(block.Strings[i],s+1,length(block.Strings[i])));
Name := ansilowercase(copy(block.Strings[i],s+1,e-s));
SS := copy(block.Strings[i],e+2,length(block.Strings[i]));
s2 := Pos('"',SS);
e2 := Pos('"',copy(SS,s2+1,length(SS)));
ValueUC := copy(SS,s2+1,e2+1-s2);
Value := ansilowercase(ValueUC);
if name = 'classname' then
Data.Entitys[Data.numOfBSPEntitys-1].Classname := Value
else
if name = 'target' then
Data.Entitys[Data.numOfBSPEntitys-1].Target := Value
else
if name = 'targetname' then
Data.Entitys[Data.numOfBSPEntitys-1].Targetname := Value
else
if name = 'cursorhint' then
Data.Entitys[Data.numOfBSPEntitys-1].Hint := PChar(Value)
else
if name = 'team' then
Data.Entitys[Data.numOfBSPEntitys-1].Team := Value
else
if (name = 'filename') or(name = 'scriptname') or (name = 'ainame') then
Data.Entitys[Data.numOfBSPEntitys-1].ScriptName := Value
else
if name = 'model' then
begin
Data.Entitys[Data.numOfBSPEntitys-1].model := PChar(Value);
if Copy(Value,1,1) = '*' then
Data.Entitys[Data.numOfBSPEntitys-1].mid := Strtoint(Copy(Value,2,length(Value)))
else
Data.Entitys[Data.numOfBSPEntitys-1].mid := -1;
end
else
if name = 'model2' then
Data.Entitys[Data.numOfBSPEntitys-1].model2 := Value
else
if name = 'origin' then
begin
Data.Entitys[Data.numOfBSPEntitys-1].Origin := ParseEntityVector3f(Value);
Data.Entitys[Data.numOfBSPEntitys-1].OriginUsed := True;
end
else
if name = 'mass' then
Data.Entitys[Data.numOfBSPEntitys-1].mass := StrtoInt(Value)
else
if name = 'spawnflags' then
Data.Entitys[Data.numOfBSPEntitys-1].spawnflags := StrtoInt(Value)
else
if name = 'degrees' then
Data.Entitys[Data.numOfBSPEntitys-1].Degrees := StrtoInt(Value)
else
if name = 'angle' then
Data.Entitys[Data.numOfBSPEntitys-1].Angle := StrtoInt(Value)
else
if name = 'lip' then
Data.Entitys[Data.numOfBSPEntitys-1].Lip := StrtoInt(Value)
else
if name = 'speed' then
Data.Entitys[Data.numOfBSPEntitys-1].Speed := StrtoInt(Value)
else
if name = 'closespeed' then
Data.Entitys[Data.numOfBSPEntitys-1].Closespeed := StrtoInt(Value)
else
if name = 'frames' then
Data.Entitys[Data.numOfBSPEntitys-1].Frames := StrtoInt(Value)
else
if name = 'loop' then
Data.Entitys[Data.numOfBSPEntitys-1].LoopFrame := StrtoInt(Value)
else
if name = 'startonframe' then
Data.Entitys[Data.numOfBSPEntitys-1].StartFrame := StrtoInt(Value)
else
if name = 'wait' then
Data.Entitys[Data.numOfBSPEntitys-1].Wait := StrtoFloat(Value)
else
if name = 'random' then
Data.Entitys[Data.numOfBSPEntitys-1].Random := StrtoFloat(Value)
else
begin
if (name <> '') and (value <> '') then
begin
// Need to add support for unknowns sometime (used in func_multipul)
{inc(Entitys[numOfBSPEntitys-1].Unknown_No);
SetLength(Entitys[numOfBSPEntitys-1].Unknowns,Entitys[numOfBSPEntitys-1].Unknown_No);
Entitys[numOfBSPEntitys-1].Unknowns[Entitys[numOfBSPEntitys-1].Unknown_No-1].Name := Name;
Entitys[numOfBSPEntitys-1].Unknowns[Entitys[numOfBSPEntitys-1].Unknown_No-1].Value := Value; }
end;
end;
end
except
// Add Error Message Here!
end;
end;