Changeset 670


Ignore:
Timestamp:
Jul 16, 2025, 9:56:00 AM (29 hours ago)
Author:
chronos
Message:
  • Fixed: Make selected layer button down on layers switching by keys.
  • Fixed: Wrong order of selected layer buttons on switching by keys.
Location:
trunk/LocalPlayer
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LocalPlayer/Select.lfm

    r456 r670  
    3535    ButtonIndex = 0
    3636  end
    37   object Layer2Btn: TButtonB
     37  object LayerClassesButton: TButtonB
    3838    Tag = 2
    3939    Left = 344
     
    4646    ButtonIndex = 9
    4747  end
    48   object Layer1Btn: TButtonB
     48  object LayerWondersButton: TButtonB
    4949    Tag = 1
    5050    Left = 312
     
    5757    ButtonIndex = 14
    5858  end
    59   object Layer0Btn: TButtonB
     59  object LayerImprovementsButton: TButtonB
    6060    Left = 280
    6161    Height = 25
  • trunk/LocalPlayer/Select.pas

    r662 r670  
    1111  Graphics, Controls, Forms, ExtCtrls, Menus{$ENDIF};
    1212
    13 const
    14   MaxLayer = 3;
    15 
    1613type
    1714  TListKind = (kProject, kAdvance, kFarAdvance, kCities, kCityEvents, kModels,
     
    2017    kStealTech, kGov, kMission);
    2118
     19  TLayer = (laImprovements, laWonders, laClasses);
     20
    2221  { TListDlg }
    2322
    2423  TListDlg = class(TFramedDlg)
    2524    CloseBtn: TButtonB;
    26     Layer2Btn: TButtonB;
    27     Layer1Btn: TButtonB;
    28     Layer0Btn: TButtonB;
     25    LayerClassesButton: TButtonB;
     26    LayerWondersButton: TButtonB;
     27    LayerImprovementsButton: TButtonB;
    2928    ToggleBtn: TButtonB;
    3029    Popup: TPopupMenu;
     
    5453    Selected: Integer;
    5554    DispLines: Integer;
    56     Layer: Integer;
     55    Layer: TLayer;
    5756    nColumn: Integer;
    5857    TechNameSpace: Integer;
    5958    ScienceNation: Integer;
    6059    ScrollBar: TPVScrollbar;
    61     Lines: array [0 .. MaxLayer - 1] of Integer;
    62     FirstShrinkedLine: array [0 .. MaxLayer - 1] of Integer;
    63     Code: array [0 .. MaxLayer - 1, 0 .. 4095] of Integer;
     60    Lines: array [TLayer] of Integer;
     61    FirstShrinkedLine: array [TLayer] of Integer;
     62    Code: array [TLayer, 0 .. 4095] of Integer;
    6463    Column: array [0 .. nPl - 1] of Integer;
    6564    Closable: Boolean;
     
    118117  InitButtons;
    119118  Kind := kMission;
    120   Layer0Btn.Hint := Phrases.Lookup('BTN_IMPRS');
    121   Layer1Btn.Hint := Phrases.Lookup('BTN_WONDERS');
    122   Layer2Btn.Hint := Phrases.Lookup('BTN_CLASSES');
     119  LayerImprovementsButton.Hint := Phrases.Lookup('BTN_IMPRS');
     120  LayerWondersButton.Hint := Phrases.Lookup('BTN_WONDERS');
     121  LayerClassesButton.Hint := Phrases.Lookup('BTN_CLASSES');
    123122  ScienceNationDotBuffer := TBitmap.Create;
    124123  ScienceNationDotBuffer.PixelFormat := TPixelFormat.pf24bit;
     
    481480          begin
    482481            S := Tribe[mox.Owner].ModelName[mox.mix];
    483             if (Kind = kAllEModels) and (Code[1, ScrollBar.Position + L] = 0) then
     482            if (Kind = kAllEModels) and (Code[laWonders, ScrollBar.Position + L] = 0) then
    484483              S := Format(Tribe[mox.Owner].TPhrase('OWNED'), [S]);
    485484          end
     
    693692    case Kind of
    694693      kTribe, kMission: // center text
    695         if Lines[0] > MaxLines then
     694        if Lines[laImprovements] > MaxLines then
    696695          X := (InnerWidth - GetSystemMetrics(SM_CXVSCROLL)) div 2 -
    697696            BiColorTextWidth(ca, S) div 2
     
    942941        kEModels:
    943942          MainScreen.UnitStatDlg.ShowNewContent_EnemyModel(wmPersistent,
    944             Code[1, ScrollBar.Position + Selected]);
     943            Code[laWonders, ScrollBar.Position + Selected]);
    945944        kAllEModels, kChooseEModel:
    946945          if lix <> mixAll then
     
    991990  Required: array [0 .. nAdv - 1] of Integer;
    992991
    993   procedure TryAddImpLine(Layer, Project: Integer);
     992  procedure TryAddImpLine(Layer: TLayer; Project: Integer);
    994993  begin
    995994    if Server(sSetCityProject - sExecute, Me, cixProject, Project) >= rExecuted
     
    10051004    I, J, Swap: Integer;
    10061005  begin // sort by advancedness
    1007     for I := 0 to Lines[0] - 2 do
    1008       if Code[0, I] < adMilitary then
    1009         for J := I + 1 to Lines[0] - 1 do
    1010           if AdvValue[Code[0, I]] * nAdv + Code[0, I] < AdvValue[Code[0, J]] *
    1011             nAdv + Code[0, J] then
    1012           begin
    1013             Swap := Code[0, I];
    1014             Code[0, I] := Code[0, J];
    1015             Code[0, J] := Swap;
     1006    for I := 0 to Lines[laImprovements] - 2 do
     1007      if Code[laImprovements, I] < adMilitary then
     1008        for J := I + 1 to Lines[laImprovements] - 1 do
     1009          if AdvValue[Code[laImprovements, I]] * nAdv + Code[laImprovements, I] < AdvValue[Code[laImprovements, J]] *
     1010            nAdv + Code[laImprovements, J] then
     1011          begin
     1012            Swap := Code[laImprovements, I];
     1013            Code[laImprovements, I] := Code[laImprovements, J];
     1014            Code[laImprovements, J] := Swap;
    10161015          end;
    10171016  end;
     
    10211020    I, J, Swap: Integer;
    10221021  begin
    1023     for I := 0 to Lines[0] - 2 do
    1024       for J := I + 1 to Lines[0] - 1 do
    1025         if CityName(MyCity[Code[0, I]].ID) > CityName(MyCity[Code[0, J]].ID)
     1022    for I := 0 to Lines[laImprovements] - 2 do
     1023      for J := I + 1 to Lines[laImprovements] - 1 do
     1024        if CityName(MyCity[Code[laImprovements, I]].ID) > CityName(MyCity[Code[laImprovements, J]].ID)
    10261025        then
    10271026        begin
    1028           Swap := Code[0, I];
    1029           Code[0, I] := Code[0, J];
    1030           Code[0, J] := Swap;
     1027          Swap := Code[laImprovements, I];
     1028          Code[laImprovements, I] := Code[laImprovements, J];
     1029          Code[laImprovements, J] := Swap;
    10311030        end;
    10321031  end;
     
    10441043    I, J, Swap: Integer;
    10451044  begin // sort by code[2]
    1046     for I := 0 to Lines[0] - 2 do
    1047       for J := I + 1 to Lines[0] - 1 do
    1048         if Code[2, I] > Code[2, J] then
    1049         begin
    1050           Swap := Code[0, I];
    1051           Code[0, I] := Code[0, J];
    1052           Code[0, J] := Swap;
    1053           Swap := Code[1, I];
    1054           Code[1, I] := Code[1, J];
    1055           Code[1, J] := Swap;
    1056           Swap := Code[2, I];
    1057           Code[2, I] := Code[2, J];
    1058           Code[2, J] := Swap;
     1045    for I := 0 to Lines[laImprovements] - 2 do
     1046      for J := I + 1 to Lines[laImprovements] - 1 do
     1047        if Code[laClasses, I] > Code[laClasses, J] then
     1048        begin
     1049          Swap := Code[laImprovements, I];
     1050          Code[laImprovements, I] := Code[laImprovements, J];
     1051          Code[laImprovements, J] := Swap;
     1052          Swap := Code[laWonders, I];
     1053          Code[laWonders, I] := Code[laWonders, J];
     1054          Code[laWonders, J] := Swap;
     1055          Swap := Code[laClasses, I];
     1056          Code[laClasses, I] := Code[laClasses, J];
     1057          Code[laClasses, J] := Swap;
    10591058        end;
    10601059  end;
     
    10731072
    10741073var
     1074  L: TLayer;
    10751075  Loc1, I, J, p1, dx, dy, mix, emix, EnemyType, TestEnemyType: Integer;
    10761076  mi: TModelInfo;
     
    10791079  Ok: Boolean;
    10801080begin
    1081   for I := 0 to MaxLayer - 1 do
    1082   begin
    1083     Lines[I] := 0;
    1084     FirstShrinkedLine[I] := MaxInt;
     1081  for L := Low(TLayer) to High(TLayer) do
     1082  begin
     1083    Lines[L] := 0;
     1084    FirstShrinkedLine[L] := MaxInt;
    10851085  end;
    10861086  case Kind of
     
    10881088      begin
    10891089        // improvements
    1090         Code[0, 0] := cpImp + imTrGoods;
    1091         Lines[0] := 1;
     1090        Code[laImprovements, 0] := cpImp + imTrGoods;
     1091        Lines[laImprovements] := 1;
    10921092        for I := nWonder to nImp - 1 do
    10931093          if Imp[I].Kind = ikCommon then
    1094             TryAddImpLine(0, I + cpImp);
     1094            TryAddImpLine(laImprovements, I + cpImp);
    10951095        for I := nWonder to nImp - 1 do
    10961096          if not (Imp[I].Kind in [ikCommon, ikTrGoods]) and
    10971097            ((MyRO.NatBuilt[I] = 0) or (Imp[I].Kind = ikNatLocal)) then
    1098             TryAddImpLine(0, I + cpImp);
     1098            TryAddImpLine(laImprovements, I + cpImp);
    10991099        for I := 0 to nCityType - 1 do
    11001100          if MyData.ImpOrder[I, 0] >= 0 then
    11011101          begin
    1102             Code[0, Lines[0]] := cpType + I;
    1103             Inc(Lines[0]);
     1102            Code[laImprovements, Lines[laImprovements]] := cpType + I;
     1103            Inc(Lines[laImprovements]);
    11041104          end;
    11051105
    11061106        // wonders
    11071107        for I := 0 to nWonder - 1 do
    1108           TryAddImpLine(1, I + cpImp);
     1108          TryAddImpLine(laWonders, I + cpImp);
    11091109
    11101110        // units
     
    11351135            if MyModel[I].Status and msObsolete = 0 then
    11361136            begin
    1137               Code[2, Lines[2]] := I;
    1138               Inc(Lines[2]);
     1137              Code[laClasses, Lines[laClasses]] := I;
     1138              Inc(Lines[laClasses]);
    11391139            end;
    11401140            if MyModel[I].Status and msAllowConscripts <> 0 then
    11411141            begin
    1142               Code[2, Lines[2]] := I + cpConscripts;
    1143               Inc(Lines[2]);
     1142              Code[laClasses, Lines[laClasses]] := I + cpConscripts;
     1143              Inc(Lines[laClasses]);
    11441144            end;
    11451145          end;
    11461146        end;
    1147         FirstShrinkedLine[2] := 0;
     1147        FirstShrinkedLine[laClasses] := 0;
    11481148      end;
    11491149    kAdvance:
     
    11601160            ((MyData.FarTech = adNone) or (Required[I] > 0)) then
    11611161          begin
    1162             Code[0, Lines[0]] := I;
    1163             Inc(Lines[0]);
     1162            Code[laImprovements, Lines[laImprovements]] := I;
     1163            Inc(Lines[laImprovements]);
    11641164          end;
    11651165        SortTechs;
    1166         if Lines[0] = 0 then // no more techs -- offer nexus
    1167         begin
    1168           Code[0, Lines[0]] := adNexus;
    1169           Inc(Lines[0]);
     1166        if Lines[laImprovements] = 0 then // no more techs -- offer nexus
     1167        begin
     1168          Code[laImprovements, Lines[laImprovements]] := adNexus;
     1169          Inc(Lines[laImprovements]);
    11701170        end;
    11711171        Ok := False;
     
    11781178        if Ok then { new unit class }
    11791179        begin
    1180           Code[0, Lines[0]] := adMilitary;
    1181           Inc(Lines[0]);
     1180          Code[laImprovements, Lines[laImprovements]] := adMilitary;
     1181          Inc(Lines[laImprovements]);
    11821182        end;
    11831183      end;
    11841184    kFarAdvance:
    11851185      begin
    1186         Code[0, Lines[0]] := adNone;
    1187         Inc(Lines[0]);
     1186        Code[laImprovements, Lines[laImprovements]] := adNone;
     1187        Inc(Lines[laImprovements]);
    11881188        for I := 0 to nAdv - 1 do
    11891189          if not (I in FutureTech) and (MyRO.Tech[I] < tsApplicable) and
     
    11911191            ((AdvValue[I] < 1000) or (MyRO.Tech[adScience] > tsNA)) then
    11921192          begin
    1193             Code[0, Lines[0]] := I;
    1194             Inc(Lines[0]);
     1193            Code[laImprovements, Lines[laImprovements]] := I;
     1194            Inc(Lines[laImprovements]);
    11951195          end;
    11961196        SortTechs;
     
    12021202            (MyRO.EnemyReport[DipMem[Me].pContact].Tech[I] < tsSeen) then
    12031203          begin
    1204             Code[0, Lines[0]] := I;
    1205             Inc(Lines[0]);
     1204            Code[laImprovements, Lines[laImprovements]] := I;
     1205            Inc(Lines[laImprovements]);
    12061206          end;
    12071207        SortTechs;
    12081208        // if Lines[0]>1 then
    12091209        begin
    1210           Code[0, Lines[0]] := adAll;
    1211           Inc(Lines[0]);
     1210          Code[laImprovements, Lines[laImprovements]] := adAll;
     1211          Inc(Lines[laImprovements]);
    12121212        end;
    12131213      end;
     
    12181218            (MyRO.EnemyReport[DipMem[Me].pContact].Tech[I] >= tsApplicable) then
    12191219          begin
    1220             Code[0, Lines[0]] := I;
    1221             Inc(Lines[0]);
     1220            Code[laImprovements, Lines[laImprovements]] := I;
     1221            Inc(Lines[laImprovements]);
    12221222          end;
    12231223        SortTechs;
    1224         // if Lines[0]>1 then
    1225         begin
    1226           Code[0, Lines[0]] := adAll;
    1227           Inc(Lines[0]);
     1224        // if Lines[0] > 1 then
     1225        begin
     1226          Code[laImprovements, Lines[laImprovements]] := adAll;
     1227          Inc(Lines[laImprovements]);
    12281228        end;
    12291229      end;
     
    12331233          if Server(sStealTech - sExecute, Me, I, nil^) >= rExecuted then
    12341234          begin
    1235             Code[0, Lines[0]] := I;
    1236             Inc(Lines[0]);
     1235            Code[laImprovements, Lines[laImprovements]] := I;
     1236            Inc(Lines[laImprovements]);
    12371237          end;
    12381238        SortTechs;
     
    12711271          if Ok then
    12721272          begin
    1273             Code[0, Lines[0]] := I;
    1274             Inc(Lines[0]);
     1273            Code[laImprovements, Lines[laImprovements]] := I;
     1274            Inc(Lines[laImprovements]);
    12751275          end;
    12761276        end;
     
    12871287        if Ok then
    12881288        begin
    1289           Code[0, Lines[0]] := adMilitary;
    1290           Inc(Lines[0]);
     1289          Code[laImprovements, Lines[laImprovements]] := adMilitary;
     1290          Inc(Lines[laImprovements]);
    12911291        end
    12921292      end;
     
    12971297            if MyCity[I].Loc >= 0 then
    12981298            begin
    1299               Code[0, Lines[0]] := I;
    1300               Inc(Lines[0]);
     1299              Code[laImprovements, Lines[laImprovements]] := I;
     1300              Inc(Lines[laImprovements]);
    13011301            end;
    13021302        SortCities;
    1303         FirstShrinkedLine[0] := 0
     1303        FirstShrinkedLine[laImprovements] := 0;
    13041304      end;
    13051305    kCityEvents:
     
    13091309          then
    13101310          begin
    1311             Code[0, Lines[0]] := I;
    1312             Inc(Lines[0]);
     1311            Code[laImprovements, Lines[laImprovements]] := I;
     1312            Inc(Lines[laImprovements]);
    13131313          end;
    13141314        SortCities;
    1315         FirstShrinkedLine[0] := 0;
     1315        FirstShrinkedLine[laImprovements] := 0;
    13161316      end;
    13171317    { kChooseECity:
    13181318      begin
    1319       for I:=0 to MyRO.nEnemyCity-1 do
    1320       if (MyRO.EnemyCity[I].Loc>=0)
    1321       and (MyRO.EnemyCity[I].owner=DipMem[Me].pContact) then
    1322       begin Code[0,Lines[0]]:=I; Inc(Lines[0]); end;
    1323       FirstShrinkedLine:=0
     1319      for I := 0 to MyRO.nEnemyCity - 1 do
     1320        if (MyRO.EnemyCity[I].Loc >= 0)
     1321        and (MyRO.EnemyCity[I].Owner = DipMem[Me].pContact) then
     1322        begin
     1323          Code[laImprovements, Lines[laImprovements]] := I;
     1324          Inc(Lines[laImprovements]);
     1325        end;
     1326        FirstShrinkedLine := 0;
    13241327      end; }
    13251328    kModels:
     
    13271330        for mix := 0 to MyRO.nModel - 1 do
    13281331        begin
    1329           Code[0, mix] := mix;
     1332          Code[laImprovements, mix] := mix;
    13301333          MakeModelInfo(Me, mix, MyModel[mix], mi);
    1331           Code[2, mix] := ModelSortValue(mi);
    1332         end;
    1333         Lines[0] := MyRO.nModel;
     1334          Code[laClasses, mix] := ModelSortValue(mi);
     1335        end;
     1336        Lines[laImprovements] := MyRO.nModel;
    13341337        SortModels;
    1335         FirstShrinkedLine[0] := 0;
     1338        FirstShrinkedLine[laImprovements] := 0;
    13361339      end;
    13371340    kChooseModel:
     
    13491352          if Ok then
    13501353          begin
    1351             Code[0, Lines[0]] := mix;
     1354            Code[laImprovements, Lines[laImprovements]] := mix;
    13521355            MakeModelInfo(Me, mix, MyModel[mix], mi);
    1353             Code[2, Lines[0]] := ModelSortValue(mi);
    1354             Inc(Lines[0]);
     1356            Code[laClasses, Lines[laImprovements]] := ModelSortValue(mi);
     1357            Inc(Lines[laImprovements]);
    13551358          end;
    13561359        end;
     
    13581361        // if Lines[0]>1 then
    13591362        begin
    1360           Code[0, Lines[0]] := mixAll;
    1361           Inc(Lines[0]);;
    1362         end;
    1363         FirstShrinkedLine[0] := 0;
     1363          Code[laImprovements, Lines[laImprovements]] := mixAll;
     1364          Inc(Lines[laImprovements]);
     1365        end;
     1366        FirstShrinkedLine[laImprovements] := 0;
    13641367      end;
    13651368    kChooseEModel:
     
    13821385              [MyRO.EnemyModel[emix].mix].HGr) then
    13831386              InitEnemyModel(emix);
    1384             Code[0, Lines[0]] := emix;
    1385             Code[2, Lines[0]] := ModelSortValue(MyRO.EnemyModel[emix]);
    1386             Inc(Lines[0]);
     1387            Code[laImprovements, Lines[laImprovements]] := emix;
     1388            Code[laClasses, Lines[laImprovements]] := ModelSortValue(MyRO.EnemyModel[emix]);
     1389            Inc(Lines[laImprovements]);
    13871390          end;
    13881391        SortModels;
    1389         // if not IsMilReportNew(DipMem[me].pContact) or (Lines[0]>1) then
    1390         begin
    1391           Code[0, Lines[0]] := mixAll;
    1392           Inc(Lines[0]);
    1393         end;
    1394         FirstShrinkedLine[0] := 0;
     1392        // if not IsMilReportNew(DipMem[me].pContact) or (Lines[laImprovements] > 1) then
     1393        begin
     1394          Code[laImprovements, Lines[laImprovements]] := mixAll;
     1395          Inc(Lines[laImprovements]);
     1396        end;
     1397        FirstShrinkedLine[laImprovements] := 0;
    13951398      end;
    13961399    kEModels:
     
    13981401        for I := 0 to MyRO.EnemyReport[pView].nModelCounted - 1 do
    13991402        begin
    1400           Code[1, Lines[0]] := MyRO.nEnemyModel - 1;
    1401           while (Code[1, Lines[0]] >= 0) and
    1402             not ((MyRO.EnemyModel[Code[1, Lines[0]]].Owner = pView) and
    1403             (MyRO.EnemyModel[Code[1, Lines[0]]].mix = I)) do
    1404             Dec(Code[1, Lines[0]]);
     1403          Code[laWonders, Lines[laImprovements]] := MyRO.nEnemyModel - 1;
     1404          while (Code[laWonders, Lines[laImprovements]] >= 0) and
     1405            not ((MyRO.EnemyModel[Code[laWonders, Lines[laImprovements]]].Owner = pView) and
     1406            (MyRO.EnemyModel[Code[laWonders, Lines[laImprovements]]].mix = I)) do
     1407            Dec(Code[laWonders, Lines[laImprovements]]);
    14051408          if not Assigned(Tribe[pView].ModelPicture[I].HGr) then
    1406             InitEnemyModel(Code[1, Lines[0]]);
    1407           Code[0, Lines[0]] := I;
    1408           Code[2, Lines[0]] :=
    1409             ModelSortValue(MyRO.EnemyModel[Code[1, Lines[0]]]);
    1410           Inc(Lines[0]);
     1409            InitEnemyModel(Code[laWonders, Lines[laImprovements]]);
     1410          Code[laImprovements, Lines[laImprovements]] := I;
     1411          Code[laClasses, Lines[laImprovements]] :=
     1412            ModelSortValue(MyRO.EnemyModel[Code[laWonders, Lines[laImprovements]]]);
     1413          Inc(Lines[laImprovements]);
    14111414        end;
    14121415        SortModels;
    1413         FirstShrinkedLine[0] := 0;
     1416        FirstShrinkedLine[laImprovements] := 0;
    14141417      end;
    14151418    kAllEModels:
     
    14281431            Ok := True;
    14291432            if MainScreen.mNames.Checked then
    1430               for J := 0 to Lines[0] - 1 do
     1433              for J := 0 to Lines[laImprovements] - 1 do
    14311434              begin
    1432                 PTestPicture := @Tribe[MyRO.EnemyModel[Code[0, J]].Owner]
    1433                   .ModelPicture[MyRO.EnemyModel[Code[0, J]].mix];
     1435                PTestPicture := @Tribe[MyRO.EnemyModel[Code[laImprovements, J]].Owner]
     1436                  .ModelPicture[MyRO.EnemyModel[Code[laImprovements, J]].mix];
    14341437                if (PPicture.HGr = PTestPicture.HGr) and
    14351438                  (PPicture.pix = PTestPicture.pix) and
    14361439                  (ModelHash(MyRO.EnemyModel[emix])
    1437                   = ModelHash(MyRO.EnemyModel[Code[0, J]])) then
     1440                  = ModelHash(MyRO.EnemyModel[Code[laImprovements, J]])) then
    14381441                begin
    1439                   Code[1, J] := 1;
     1442                  Code[laWonders, J] := 1;
    14401443                  Ok := False;
    14411444                  Break;
     
    14441447            if Ok then
    14451448            begin
    1446               Code[0, Lines[0]] := emix;
    1447               Code[1, Lines[0]] := 0;
    1448               Code[2, Lines[0]] := ModelSortValue(MyRO.EnemyModel[emix], True);
    1449               Inc(Lines[0]);
     1449              Code[laImprovements, Lines[laImprovements]] := emix;
     1450              Code[laWonders, Lines[laImprovements]] := 0;
     1451              Code[laClasses, Lines[laImprovements]] := ModelSortValue(MyRO.EnemyModel[emix], True);
     1452              Inc(Lines[laImprovements]);
    14501453            end;
    14511454          end;
    14521455        SortModels;
    1453         FirstShrinkedLine[0] := 0;
     1456        FirstShrinkedLine[laImprovements] := 0;
    14541457      end;
    14551458    kTribe:
    14561459      for I := 0 to TribeNames.Count - 1 do
    14571460      begin
    1458         Code[0, Lines[0]] := I;
    1459         Inc(Lines[0]);
     1461        Code[laImprovements, Lines[laImprovements]] := I;
     1462        Inc(Lines[laImprovements]);
    14601463      end;
    14611464    (* kDeliver:
     
    14771480    kShipPart:
    14781481      begin
    1479         Lines[0] := 0;
     1482        Lines[laImprovements] := 0;
    14801483        for I := 0 to nShipPart - 1 do
    14811484          if MyRO.Ship[Me].Parts[I] > 0 then
    14821485          begin
    1483             Code[0, Lines[0]] := I;
    1484             Inc(Lines[0]);
     1486            Code[laImprovements, Lines[laImprovements]] := I;
     1487            Inc(Lines[laImprovements]);
    14851488          end;
    14861489      end;
    14871490    kEShipPart:
    14881491      begin
    1489         Lines[0] := 0;
     1492        Lines[laImprovements] := 0;
    14901493        for I := 0 to nShipPart - 1 do
    14911494          if MyRO.Ship[DipMem[Me].pContact].Parts[I] > 0 then
    14921495          begin
    1493             Code[0, Lines[0]] := I;
    1494             Inc(Lines[0]);
     1496            Code[laImprovements, Lines[laImprovements]] := I;
     1497            Inc(Lines[laImprovements]);
    14951498          end;
    14961499      end;
     
    15011504        then
    15021505        begin
    1503           Code[0, Lines[0]] := I;
    1504           Inc(Lines[0]);
     1506          Code[laImprovements, Lines[laImprovements]] := I;
     1507          Inc(Lines[laImprovements]);
    15051508        end;
    15061509    kMission:
    15071510      for I := 0 to nSpyMission - 1 do
    15081511      begin
    1509         Code[0, Lines[0]] := I;
    1510         Inc(Lines[0]);
     1512        Code[laImprovements, Lines[laImprovements]] := I;
     1513        Inc(Lines[laImprovements]);
    15111514      end;
    15121515  end;
    15131516
    15141517  if Kind = kProject then // test if choice fitting to one screen
    1515     if Lines[0] + Lines[1] + Lines[2] <= MaxLines then
     1518    if Lines[laImprovements] + Lines[laWonders] + Lines[laClasses] <= MaxLines then
    15161519    begin
    1517       for I := 0 to Lines[1] - 1 do // add wonders to first page
    1518       begin
    1519         Code[0, Lines[0]] := Code[1, I];
    1520         Inc(Lines[0]);
    1521       end;
    1522       Lines[1] := 0;
    1523       FirstShrinkedLine[0] := Lines[0];
    1524       for I := 0 to Lines[2] - 1 do // add models to first page
    1525       begin
    1526         Code[0, Lines[0]] := Code[2, I];
    1527         Inc(Lines[0]);
    1528       end;
    1529       Lines[2] := 0;
     1520      for I := 0 to Lines[laWonders] - 1 do // add wonders to first page
     1521      begin
     1522        Code[laImprovements, Lines[laImprovements]] := Code[laWonders, I];
     1523        Inc(Lines[laImprovements]);
     1524      end;
     1525      Lines[laWonders] := 0;
     1526      FirstShrinkedLine[laImprovements] := Lines[laImprovements];
     1527      for I := 0 to Lines[laClasses] - 1 do // add models to first page
     1528      begin
     1529        Code[laImprovements, Lines[laImprovements]] := Code[laClasses, I];
     1530        Inc(Lines[laImprovements]);
     1531      end;
     1532      Lines[laClasses] := 0;
    15301533    end;
    15311534end;
     
    15351538  Kind := TestKind;
    15361539  InitLines;
    1537   if Lines[0] = 0 then
     1540  if Lines[laImprovements] = 0 then
    15381541    Result := -2
    1539   else if Lines[0] > 1 then
     1542  else if Lines[laImprovements] > 1 then
    15401543    Result := -1
    15411544  else
    1542     Result := Code[0, 0];
     1545    Result := Code[laImprovements, 0];
    15431546end;
    15441547
    15451548procedure TListDlg.FormShow(Sender: TObject);
    15461549var
    1547   I: Integer;
     1550  L: TLayer;
    15481551  NewTop, NewLeft: Integer;
    15491552begin
     
    15661569
    15671570  MultiPage := False;
    1568   for I := 1 to MaxLayer - 1 do
    1569     if Lines[I] > 0 then begin
     1571  for L := Low(Layer) to High(Layer) do
     1572    if Lines[L] > 0 then begin
    15701573      MultiPage := True;
    15711574      Break;
     
    15831586  end;
    15841587
    1585   DispLines := Lines[0];
    1586   for I := 0 to MaxLayer - 1 do
    1587     if Lines[I] > DispLines then
    1588       DispLines := Lines[I];
     1588  DispLines := Lines[laImprovements];
     1589  for L := Low(Layer) to High(Layer) do
     1590    if Lines[L] > DispLines then
     1591      DispLines := Lines[L];
    15891592  if WideBottom then
    15901593  begin
     
    16101613      InnerWidth := 640 - 18;
    16111614    kTribe:
    1612       if Lines[0] > MaxLines then
     1615      if Lines[laImprovements] > MaxLines then
    16131616        InnerWidth := 280 + GetSystemMetrics(SM_CXVSCROLL)
    16141617      else
     
    16541657  end;
    16551658
    1656   Layer0Btn.Visible := MultiPage and (Lines[0] > 0);
    1657   Layer1Btn.Visible := MultiPage and (Lines[1] > 0);
    1658   Layer2Btn.Visible := MultiPage and (Lines[2] > 0);
     1659  LayerImprovementsButton.Visible := MultiPage and (Lines[laImprovements] > 0);
     1660  LayerWondersButton.Visible := MultiPage and (Lines[laWonders] > 0);
     1661  LayerClassesButton.Visible := MultiPage and (Lines[laClasses] > 0);
    16591662  if Kind = kProject then
    16601663  begin
    1661     Layer0Btn.Top := Height - 31;
    1662     Layer0Btn.Left := Width div 2 - (12 + 29);
    1663     Layer0Btn.Down := True;
    1664     Layer1Btn.Top := Height - 31;
    1665     Layer1Btn.Left := Width div 2 - (12 - 29);
    1666     Layer1Btn.Down := False;
    1667     Layer2Btn.Top := Height - 31;
    1668     Layer2Btn.Left := Width div 2 - 12;
    1669     Layer2Btn.Down := False;
    1670   end;
    1671 
    1672   Layer := 0;
     1664    LayerImprovementsButton.Top := Height - 31;
     1665    LayerImprovementsButton.Left := Width div 2 - (12 + 29);
     1666    LayerImprovementsButton.Down := True;
     1667    LayerWondersButton.Top := Height - 31;
     1668    LayerWondersButton.Left := Width div 2 - (12 - 29);
     1669    LayerWondersButton.Down := False;
     1670    LayerClassesButton.Top := Height - 31;
     1671    LayerClassesButton.Left := Width div 2 - 12;
     1672    LayerClassesButton.Down := False;
     1673  end;
     1674
     1675  Layer := laImprovements;
    16731676  Selected := -2;
    16741677  ScienceNation := -1;
     
    17981801procedure TListDlg.ModeBtnClick(Sender: TObject);
    17991802begin
    1800   Layer0Btn.Down := Sender = Layer0Btn;
    1801   Layer1Btn.Down := Sender = Layer1Btn;
    1802   Layer2Btn.Down := Sender = Layer2Btn;
    1803   Layer := TComponent(Sender).Tag;
     1803  LayerImprovementsButton.Down := Sender = LayerImprovementsButton;
     1804  LayerWondersButton.Down := Sender = LayerWondersButton;
     1805  LayerClassesButton.Down := Sender = LayerClassesButton;
     1806  Layer := TLayer(TComponent(Sender).Tag);
    18041807
    18051808  Selected := -2;
     
    19091912begin
    19101913  if (Key = VK_RIGHT) or (Key = VK_NUMPAD6) then begin
    1911     if MultiPage and (Layer < MaxLayer - 1) then begin
     1914    if MultiPage and (Layer <= High(Layer)) then begin
    19121915      LastSelectionIndex := GetSelectionIndex;
    1913       Inc(Layer);
    1914       if Lines[Layer] = 0 then Inc(Layer);
     1916      if Layer = laImprovements then Layer := laClasses
     1917      else if Layer = laClasses then Layer := laWonders;
     1918      if Lines[Layer] = 0 then Layer := laWonders;
     1919      LayerImprovementsButton.Down := Layer = laImprovements;
     1920      LayerWondersButton.Down := Layer = laWonders;
     1921      LayerClassesButton.Down := Layer = laClasses;
    19151922      ScrollBar.Init(Lines[Layer] - 1, DispLines);
    19161923      SetSelectionIndex(LastSelectionIndex);
     
    19191926  end else
    19201927  if (Key = VK_LEFT) or (Key = VK_NUMPAD4) then begin
    1921     if MultiPage and (Layer > 0) then begin
     1928    if MultiPage and (Layer > laImprovements) then begin
    19221929      LastSelectionIndex := GetSelectionIndex;
    1923       Dec(Layer);
    1924       if Lines[Layer] = 0 then Dec(Layer);
     1930      if Layer = laWonders then Layer := laClasses
     1931      else if Layer = laClasses then Layer := laImprovements;
     1932      if Lines[Layer] = 0 then Layer := laImprovements;
     1933      LayerImprovementsButton.Down := Layer = laImprovements;
     1934      LayerWondersButton.Down := Layer = laWonders;
     1935      LayerClassesButton.Down := Layer = laClasses;
    19251936      ScrollBar.Init(Lines[Layer] - 1, DispLines);
    19261937      SetSelectionIndex(LastSelectionIndex);
  • trunk/LocalPlayer/Term.pas

    r666 r670  
    25742574        Supervising := G.Difficulty[NewPlayer] = 0;
    25752575        ArrangeMidPanel;
    2576       end
     2576      end;
    25772577  end;
    25782578  case Command of
Note: See TracChangeset for help on using the changeset viewer.