Ignore:
Timestamp:
Mar 17, 2021, 11:11:55 AM (3 years ago)
Author:
chronos
Message:
  • Modified: LoadGraphicSet now returns TGrExtDescr reference. Replaced integer index references to GrExt with with direct class reference to TGrExtDescr.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LocalPlayer/Tribes.pas

    r312 r313  
    1414
    1515  TModelPicture = record
    16     HGr: Integer;
     16    HGr: TGrExtDescr;
    1717    pix: Integer;
    1818    xShield: Integer;
     
    2929
    3030  TTribe = class
    31     symHGr: Integer;
     31    symHGr: TGrExtDescr;
    3232    sympix: Integer;
    33     faceHGr: Integer;
     33    faceHGr: TGrExtDescr;
    3434    facepix: Integer;
    35     cHGr: Integer;
     35    cHGr: TGrExtDescr;
    3636    cpix: Integer;
    3737    // symbol and city graphics
     
    6262var
    6363  Tribe: array [0 .. nPl - 1] of TTribe;
    64   HGrStdUnits: Integer;
     64  HGrStdUnits: TGrExtDescr;
    6565
    6666procedure Init;
     
    7070procedure FindStdModelPicture(Code: Integer; var pix: Integer; var Name: string);
    7171function GetTribeInfo(FileName: string; var Name: string; var Color: TColor): Boolean;
    72 procedure FindPosition(HGr, x, y, xmax, ymax: Integer; Mark: TColor;
     72procedure FindPosition(HGr: TGrExtDescr; x, y, xmax, ymax: Integer; Mark: TColor;
    7373  var xp, yp: Integer);
    7474
     
    8282  TChosenModelPictureInfo = record
    8383    Hash: Integer;
    84     HGr: Integer;
     84    HGr: TGrExtDescr;
    8585    pix: Integer;
    8686    ModelName: ShortString;
     
    328328end;
    329329
    330 procedure FindPosition(HGr, x, y, xmax, ymax: Integer; Mark: TColor;
     330procedure FindPosition(HGr: TGrExtDescr; x, y, xmax, ymax: Integer; Mark: TColor;
    331331  var xp, yp: Integer);
    332332begin
    333333  xp := 0;
    334   while (xp < xmax) and (GrExt[HGr].Data.Canvas.Pixels[x + 1 + xp, y] <> Mark) do
     334  while (xp < xmax) and (HGr.Data.Canvas.Pixels[x + 1 + xp, y] <> Mark) do
    335335    Inc(xp);
    336336  yp := 0;
    337   while (yp < ymax) and (GrExt[HGr].Data.Canvas.Pixels[x, y + 1 + yp] <> Mark) do
     337  while (yp < ymax) and (HGr.Data.Canvas.Pixels[x, y + 1 + yp] <> Mark) do
    338338    Inc(yp);
    339339end;
     
    447447      end
    448448      else
    449         cHGr := -1;
     449        cHGr := nil;
    450450
    451451{$IFNDEF SCR}
     
    454454      Item := Get;
    455455      if Item = '' then
    456         faceHGr := -1
     456        faceHGr := nil
    457457      else
    458458      begin
    459459        faceHGr := LoadGraphicSet(Item + '.png');
    460460        facepix := GetNum;
    461         if GrExt[faceHGr].Data.Canvas.Pixels[facepix mod 10 * 65,
     461        if faceHGr.Data.Canvas.Pixels[facepix mod 10 * 65,
    462462          facepix div 10 * 49 + 48] = $00FFFF then
    463463        begin // generate shield picture
    464           GrExt[faceHGr].Data.Canvas.Pixels[facepix mod 10 * 65,
     464          faceHGr.Data.Canvas.Pixels[facepix mod 10 * 65,
    465465            facepix div 10 * 49 + 48] := $000000;
    466466          Gray := $B8B8B8;
    467           ImageOp_BCC(GrExt[faceHGr].Data, Templates,
     467          ImageOp_BCC(faceHGr.Data, Templates,
    468468            facepix mod 10 * 65 + 1, facepix div 10 * 49 + 1, 1, 25, 64, 48,
    469469            Gray, Color);
     
    500500        HGr := LoadGraphicSet(GrName);
    501501        pix := Info.pix;
    502         Inc(GrExt[HGr].pixUsed[pix]);
     502        Inc(HGr.pixUsed[pix]);
    503503      end;
    504504      ModelName[mix] := '';
     
    558558  Code, Turn: Integer; ForceNew: Boolean): Boolean;
    559559var
    560   i, Cnt, HGr, Used, LeastUsed: Integer;
     560  i: Integer;
     561  Cnt: Integer;
     562  HGr: TGrExtDescr;
     563  Used: Integer;
     564  LeastUsed: Integer;
    561565  TestPic: TModelPictureInfo;
    562566  ok: Boolean;
     
    567571    if Code = GetNum then
    568572    begin
    569       if ForceNew or (HGr < 0) then
     573      if ForceNew or (not Assigned(HGr)) then
    570574        Used := 0
    571575      else
    572576      begin
    573         Used := 4 * GrExt[HGr].pixUsed[TestPic.pix];
     577        Used := 4 * HGr.pixUsed[TestPic.pix];
    574578        if HGr = HGrStdUnits then
    575579          Inc(Used, 2); // prefer units not from StdUnits
     
    596600      if PictureList[i].Hash = Picture.Hash then
    597601      begin
    598         Picture.GrName := GrExt[PictureList[i].HGr].Name;
     602        Picture.GrName := PictureList[i].HGr.Name;
    599603        Picture.pix := PictureList[i].pix;
    600604        Result := False;
     
    623627      ok := True;
    624628      TestPic.GrName := Copy(Input, 8, 255) + '.png';
    625       HGr := GrExt.Count - 1;
    626       while (HGr >= 0) and (GrExt[HGr].Name <> TestPic.GrName) do
    627         Dec(HGr);
     629      HGr := GrExt.SearchByName(TestPic.GrName);
    628630    end
    629631    else if (Input <> '') and (Input[1] = '#') then
Note: See TracChangeset for help on using the changeset viewer.