Commit 22bbfa99 authored by rarnu's avatar rarnu

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

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