Commit 22bbfa99 authored by rarnu's avatar rarnu

add: 修复override引起的内存问题

parent 44d4a1ce
......@@ -44,6 +44,7 @@ var
json: TJSONObject;
arr: TJSONArray;
jsub: TJSONObject;
co: ICardOverride;
i: Integer;
begin
if ACard = nil then Exit(TJSONNull.Create);
......@@ -75,20 +76,22 @@ begin
json.AddPair('workAs', CardWorkAsToStr(ACard.GetWorkAs));
jsub := TJSONObject.Create;
jsub.AddPair('useLevel', ACard.GetOverride.GetUseLevel);
jsub.AddPair('useRank', ACard.GetOverride.GetUseRank);
jsub.AddPair('useAttr', ACard.GetOverride.GetUseAttr);
jsub.AddPair('useRace', ACard.GetOverride.GetUseRace);
jsub.AddPair('useAtk', ACard.GetOverride.GetUseAtk);
jsub.AddPair('useDef', ACard.GetOverride.GetUseDef);
jsub.AddPair('level', ACard.GetOverride.GetLevel);
jsub.AddPair('rank', ACard.GetOverride.GetRank);
jsub.AddPair('attr', ACard.GetOverride.GetAttr);
jsub.AddPair('race', ACard.GetOverride.GetRace);
jsub.AddPair('atk', ACard.GetOverride.GetAtk);
jsub.AddPair('def', ACard.GetOverride.GetDef);
co := ACard.GetOverride;
if co <> nil then begin
jsub.AddPair('useLevel', co.GetUseLevel);
jsub.AddPair('useRank', co.GetUseRank);
jsub.AddPair('useAttr', co.GetUseAttr);
jsub.AddPair('useRace', co.GetUseRace);
jsub.AddPair('useAtk', co.GetUseAtk);
jsub.AddPair('useDef', co.GetUseDef);
jsub.AddPair('level', co.GetLevel);
jsub.AddPair('rank', co.GetRank);
jsub.AddPair('attr', co.GetAttr);
jsub.AddPair('race', co.GetRace);
jsub.AddPair('atk', co.GetAtk);
jsub.AddPair('def', co.GetDef);
json.AddPair('override', jsub);
end;
Exit(json);
end;
......@@ -139,8 +142,13 @@ begin
c.SetWorkAs(StrToCardWorkAs(jobj.GetValue<String>('workAs')));
try
jsub := jobj.GetValue<TJSONObject>('override');
except
jsub := nil;
end;
if jsub <> nil then begin
co := TCardOverride.Create;
co.SetUseLevel(jsub.GetValue<Boolean>('useLevel'));
co.SetUseRank(jsub.GetValue<Boolean>('useRank'));
......@@ -154,8 +162,8 @@ begin
co.SetRace(jsub.GetValue<Int64>('race'));
co.SetAtk(jsub.GetValue<Integer>('atk'));
co.SetDef(jsub.GetValue<Integer>('def'));
c.SetOverride(co);
end;
Exit(c);
end;
......
......@@ -462,9 +462,12 @@ end;
class function TScriptGenerator.GenerateOverride(ACard: ICard): string;
var
list: TStringList;
co: ICardOverride;
begin
list := TStringList.Create;
co := ACard.GetOverride;
if co <> nil then begin
if ACard.GetOverride.GetUseLevel then begin
list.Add(Format('Card.AssumeProperty(%s,ASSUME_LEVEL,%d)', [
CardToVarName(ACard),
......@@ -501,6 +504,7 @@ begin
ACard.GetOverride.GetDef
]));
end;
end;
Result := list.Text;
list.Free;
......
......@@ -5,10 +5,11 @@
<FrameworkType>FMX</FrameworkType>
<Base>True</Base>
<Config Condition="'$(Config)'==''">Debug</Config>
<Platform Condition="'$(Platform)'==''">OSXARM64</Platform>
<Platform Condition="'$(Platform)'==''">Win64</Platform>
<TargetedPlatforms>163842</TargetedPlatforms>
<AppType>Application</AppType>
<MainSource>puzzle2.dpr</MainSource>
<ProjectName Condition="'$(ProjectName)'==''">puzzle2</ProjectName>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
<Base>true</Base>
......
No preview for this file type
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment