Changeset 670
- Timestamp:
- Jul 16, 2025, 9:56:00 AM (29 hours ago)
- Location:
- trunk/LocalPlayer
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LocalPlayer/Select.lfm
r456 r670 35 35 ButtonIndex = 0 36 36 end 37 object Layer 2Btn: TButtonB37 object LayerClassesButton: TButtonB 38 38 Tag = 2 39 39 Left = 344 … … 46 46 ButtonIndex = 9 47 47 end 48 object Layer 1Btn: TButtonB48 object LayerWondersButton: TButtonB 49 49 Tag = 1 50 50 Left = 312 … … 57 57 ButtonIndex = 14 58 58 end 59 object Layer 0Btn: TButtonB59 object LayerImprovementsButton: TButtonB 60 60 Left = 280 61 61 Height = 25 -
trunk/LocalPlayer/Select.pas
r662 r670 11 11 Graphics, Controls, Forms, ExtCtrls, Menus{$ENDIF}; 12 12 13 const14 MaxLayer = 3;15 16 13 type 17 14 TListKind = (kProject, kAdvance, kFarAdvance, kCities, kCityEvents, kModels, … … 20 17 kStealTech, kGov, kMission); 21 18 19 TLayer = (laImprovements, laWonders, laClasses); 20 22 21 { TListDlg } 23 22 24 23 TListDlg = class(TFramedDlg) 25 24 CloseBtn: TButtonB; 26 Layer 2Btn: TButtonB;27 Layer 1Btn: TButtonB;28 Layer 0Btn: TButtonB;25 LayerClassesButton: TButtonB; 26 LayerWondersButton: TButtonB; 27 LayerImprovementsButton: TButtonB; 29 28 ToggleBtn: TButtonB; 30 29 Popup: TPopupMenu; … … 54 53 Selected: Integer; 55 54 DispLines: Integer; 56 Layer: Integer;55 Layer: TLayer; 57 56 nColumn: Integer; 58 57 TechNameSpace: Integer; 59 58 ScienceNation: Integer; 60 59 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; 64 63 Column: array [0 .. nPl - 1] of Integer; 65 64 Closable: Boolean; … … 118 117 InitButtons; 119 118 Kind := kMission; 120 Layer 0Btn.Hint := Phrases.Lookup('BTN_IMPRS');121 Layer 1Btn.Hint := Phrases.Lookup('BTN_WONDERS');122 Layer 2Btn.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'); 123 122 ScienceNationDotBuffer := TBitmap.Create; 124 123 ScienceNationDotBuffer.PixelFormat := TPixelFormat.pf24bit; … … 481 480 begin 482 481 S := Tribe[mox.Owner].ModelName[mox.mix]; 483 if (Kind = kAllEModels) and (Code[ 1, ScrollBar.Position + L] = 0) then482 if (Kind = kAllEModels) and (Code[laWonders, ScrollBar.Position + L] = 0) then 484 483 S := Format(Tribe[mox.Owner].TPhrase('OWNED'), [S]); 485 484 end … … 693 692 case Kind of 694 693 kTribe, kMission: // center text 695 if Lines[ 0] > MaxLines then694 if Lines[laImprovements] > MaxLines then 696 695 X := (InnerWidth - GetSystemMetrics(SM_CXVSCROLL)) div 2 - 697 696 BiColorTextWidth(ca, S) div 2 … … 942 941 kEModels: 943 942 MainScreen.UnitStatDlg.ShowNewContent_EnemyModel(wmPersistent, 944 Code[ 1, ScrollBar.Position + Selected]);943 Code[laWonders, ScrollBar.Position + Selected]); 945 944 kAllEModels, kChooseEModel: 946 945 if lix <> mixAll then … … 991 990 Required: array [0 .. nAdv - 1] of Integer; 992 991 993 procedure TryAddImpLine(Layer ,Project: Integer);992 procedure TryAddImpLine(Layer: TLayer; Project: Integer); 994 993 begin 995 994 if Server(sSetCityProject - sExecute, Me, cixProject, Project) >= rExecuted … … 1005 1004 I, J, Swap: Integer; 1006 1005 begin // sort by advancedness 1007 for I := 0 to Lines[ 0] - 2 do1008 if Code[ 0, I] < adMilitary then1009 for J := I + 1 to Lines[ 0] - 1 do1010 if AdvValue[Code[ 0, I]] * nAdv + Code[0, I] < AdvValue[Code[0, J]] *1011 nAdv + Code[ 0, J] then1012 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; 1016 1015 end; 1017 1016 end; … … 1021 1020 I, J, Swap: Integer; 1022 1021 begin 1023 for I := 0 to Lines[ 0] - 2 do1024 for J := I + 1 to Lines[ 0] - 1 do1025 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) 1026 1025 then 1027 1026 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; 1031 1030 end; 1032 1031 end; … … 1044 1043 I, J, Swap: Integer; 1045 1044 begin // sort by code[2] 1046 for I := 0 to Lines[ 0] - 2 do1047 for J := I + 1 to Lines[ 0] - 1 do1048 if Code[ 2, I] > Code[2, J] then1049 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; 1059 1058 end; 1060 1059 end; … … 1073 1072 1074 1073 var 1074 L: TLayer; 1075 1075 Loc1, I, J, p1, dx, dy, mix, emix, EnemyType, TestEnemyType: Integer; 1076 1076 mi: TModelInfo; … … 1079 1079 Ok: Boolean; 1080 1080 begin 1081 for I := 0 to MaxLayer - 1do1082 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; 1085 1085 end; 1086 1086 case Kind of … … 1088 1088 begin 1089 1089 // improvements 1090 Code[ 0, 0] := cpImp + imTrGoods;1091 Lines[ 0] := 1;1090 Code[laImprovements, 0] := cpImp + imTrGoods; 1091 Lines[laImprovements] := 1; 1092 1092 for I := nWonder to nImp - 1 do 1093 1093 if Imp[I].Kind = ikCommon then 1094 TryAddImpLine( 0, I + cpImp);1094 TryAddImpLine(laImprovements, I + cpImp); 1095 1095 for I := nWonder to nImp - 1 do 1096 1096 if not (Imp[I].Kind in [ikCommon, ikTrGoods]) and 1097 1097 ((MyRO.NatBuilt[I] = 0) or (Imp[I].Kind = ikNatLocal)) then 1098 TryAddImpLine( 0, I + cpImp);1098 TryAddImpLine(laImprovements, I + cpImp); 1099 1099 for I := 0 to nCityType - 1 do 1100 1100 if MyData.ImpOrder[I, 0] >= 0 then 1101 1101 begin 1102 Code[ 0, Lines[0]] := cpType + I;1103 Inc(Lines[ 0]);1102 Code[laImprovements, Lines[laImprovements]] := cpType + I; 1103 Inc(Lines[laImprovements]); 1104 1104 end; 1105 1105 1106 1106 // wonders 1107 1107 for I := 0 to nWonder - 1 do 1108 TryAddImpLine( 1, I + cpImp);1108 TryAddImpLine(laWonders, I + cpImp); 1109 1109 1110 1110 // units … … 1135 1135 if MyModel[I].Status and msObsolete = 0 then 1136 1136 begin 1137 Code[ 2, Lines[2]] := I;1138 Inc(Lines[ 2]);1137 Code[laClasses, Lines[laClasses]] := I; 1138 Inc(Lines[laClasses]); 1139 1139 end; 1140 1140 if MyModel[I].Status and msAllowConscripts <> 0 then 1141 1141 begin 1142 Code[ 2, Lines[2]] := I + cpConscripts;1143 Inc(Lines[ 2]);1142 Code[laClasses, Lines[laClasses]] := I + cpConscripts; 1143 Inc(Lines[laClasses]); 1144 1144 end; 1145 1145 end; 1146 1146 end; 1147 FirstShrinkedLine[ 2] := 0;1147 FirstShrinkedLine[laClasses] := 0; 1148 1148 end; 1149 1149 kAdvance: … … 1160 1160 ((MyData.FarTech = adNone) or (Required[I] > 0)) then 1161 1161 begin 1162 Code[ 0, Lines[0]] := I;1163 Inc(Lines[ 0]);1162 Code[laImprovements, Lines[laImprovements]] := I; 1163 Inc(Lines[laImprovements]); 1164 1164 end; 1165 1165 SortTechs; 1166 if Lines[ 0] = 0 then // no more techs -- offer nexus1167 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]); 1170 1170 end; 1171 1171 Ok := False; … … 1178 1178 if Ok then { new unit class } 1179 1179 begin 1180 Code[ 0, Lines[0]] := adMilitary;1181 Inc(Lines[ 0]);1180 Code[laImprovements, Lines[laImprovements]] := adMilitary; 1181 Inc(Lines[laImprovements]); 1182 1182 end; 1183 1183 end; 1184 1184 kFarAdvance: 1185 1185 begin 1186 Code[ 0, Lines[0]] := adNone;1187 Inc(Lines[ 0]);1186 Code[laImprovements, Lines[laImprovements]] := adNone; 1187 Inc(Lines[laImprovements]); 1188 1188 for I := 0 to nAdv - 1 do 1189 1189 if not (I in FutureTech) and (MyRO.Tech[I] < tsApplicable) and … … 1191 1191 ((AdvValue[I] < 1000) or (MyRO.Tech[adScience] > tsNA)) then 1192 1192 begin 1193 Code[ 0, Lines[0]] := I;1194 Inc(Lines[ 0]);1193 Code[laImprovements, Lines[laImprovements]] := I; 1194 Inc(Lines[laImprovements]); 1195 1195 end; 1196 1196 SortTechs; … … 1202 1202 (MyRO.EnemyReport[DipMem[Me].pContact].Tech[I] < tsSeen) then 1203 1203 begin 1204 Code[ 0, Lines[0]] := I;1205 Inc(Lines[ 0]);1204 Code[laImprovements, Lines[laImprovements]] := I; 1205 Inc(Lines[laImprovements]); 1206 1206 end; 1207 1207 SortTechs; 1208 1208 // if Lines[0]>1 then 1209 1209 begin 1210 Code[ 0, Lines[0]] := adAll;1211 Inc(Lines[ 0]);1210 Code[laImprovements, Lines[laImprovements]] := adAll; 1211 Inc(Lines[laImprovements]); 1212 1212 end; 1213 1213 end; … … 1218 1218 (MyRO.EnemyReport[DipMem[Me].pContact].Tech[I] >= tsApplicable) then 1219 1219 begin 1220 Code[ 0, Lines[0]] := I;1221 Inc(Lines[ 0]);1220 Code[laImprovements, Lines[laImprovements]] := I; 1221 Inc(Lines[laImprovements]); 1222 1222 end; 1223 1223 SortTechs; 1224 // if Lines[0] >1 then1225 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]); 1228 1228 end; 1229 1229 end; … … 1233 1233 if Server(sStealTech - sExecute, Me, I, nil^) >= rExecuted then 1234 1234 begin 1235 Code[ 0, Lines[0]] := I;1236 Inc(Lines[ 0]);1235 Code[laImprovements, Lines[laImprovements]] := I; 1236 Inc(Lines[laImprovements]); 1237 1237 end; 1238 1238 SortTechs; … … 1271 1271 if Ok then 1272 1272 begin 1273 Code[ 0, Lines[0]] := I;1274 Inc(Lines[ 0]);1273 Code[laImprovements, Lines[laImprovements]] := I; 1274 Inc(Lines[laImprovements]); 1275 1275 end; 1276 1276 end; … … 1287 1287 if Ok then 1288 1288 begin 1289 Code[ 0, Lines[0]] := adMilitary;1290 Inc(Lines[ 0]);1289 Code[laImprovements, Lines[laImprovements]] := adMilitary; 1290 Inc(Lines[laImprovements]); 1291 1291 end 1292 1292 end; … … 1297 1297 if MyCity[I].Loc >= 0 then 1298 1298 begin 1299 Code[ 0, Lines[0]] := I;1300 Inc(Lines[ 0]);1299 Code[laImprovements, Lines[laImprovements]] := I; 1300 Inc(Lines[laImprovements]); 1301 1301 end; 1302 1302 SortCities; 1303 FirstShrinkedLine[ 0] := 01303 FirstShrinkedLine[laImprovements] := 0; 1304 1304 end; 1305 1305 kCityEvents: … … 1309 1309 then 1310 1310 begin 1311 Code[ 0, Lines[0]] := I;1312 Inc(Lines[ 0]);1311 Code[laImprovements, Lines[laImprovements]] := I; 1312 Inc(Lines[laImprovements]); 1313 1313 end; 1314 1314 SortCities; 1315 FirstShrinkedLine[ 0] := 0;1315 FirstShrinkedLine[laImprovements] := 0; 1316 1316 end; 1317 1317 { kChooseECity: 1318 1318 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; 1324 1327 end; } 1325 1328 kModels: … … 1327 1330 for mix := 0 to MyRO.nModel - 1 do 1328 1331 begin 1329 Code[ 0, mix] := mix;1332 Code[laImprovements, mix] := mix; 1330 1333 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; 1334 1337 SortModels; 1335 FirstShrinkedLine[ 0] := 0;1338 FirstShrinkedLine[laImprovements] := 0; 1336 1339 end; 1337 1340 kChooseModel: … … 1349 1352 if Ok then 1350 1353 begin 1351 Code[ 0, Lines[0]] := mix;1354 Code[laImprovements, Lines[laImprovements]] := mix; 1352 1355 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]); 1355 1358 end; 1356 1359 end; … … 1358 1361 // if Lines[0]>1 then 1359 1362 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; 1364 1367 end; 1365 1368 kChooseEModel: … … 1382 1385 [MyRO.EnemyModel[emix].mix].HGr) then 1383 1386 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]); 1387 1390 end; 1388 1391 SortModels; 1389 // if not IsMilReportNew(DipMem[me].pContact) or (Lines[ 0]>1) then1390 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; 1395 1398 end; 1396 1399 kEModels: … … 1398 1401 for I := 0 to MyRO.EnemyReport[pView].nModelCounted - 1 do 1399 1402 begin 1400 Code[ 1, Lines[0]] := MyRO.nEnemyModel - 1;1401 while (Code[ 1, Lines[0]] >= 0) and1402 not ((MyRO.EnemyModel[Code[ 1, Lines[0]]].Owner = pView) and1403 (MyRO.EnemyModel[Code[ 1, Lines[0]]].mix = I)) do1404 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]]); 1405 1408 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]); 1411 1414 end; 1412 1415 SortModels; 1413 FirstShrinkedLine[ 0] := 0;1416 FirstShrinkedLine[laImprovements] := 0; 1414 1417 end; 1415 1418 kAllEModels: … … 1428 1431 Ok := True; 1429 1432 if MainScreen.mNames.Checked then 1430 for J := 0 to Lines[ 0] - 1 do1433 for J := 0 to Lines[laImprovements] - 1 do 1431 1434 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]; 1434 1437 if (PPicture.HGr = PTestPicture.HGr) and 1435 1438 (PPicture.pix = PTestPicture.pix) and 1436 1439 (ModelHash(MyRO.EnemyModel[emix]) 1437 = ModelHash(MyRO.EnemyModel[Code[ 0, J]])) then1440 = ModelHash(MyRO.EnemyModel[Code[laImprovements, J]])) then 1438 1441 begin 1439 Code[ 1, J] := 1;1442 Code[laWonders, J] := 1; 1440 1443 Ok := False; 1441 1444 Break; … … 1444 1447 if Ok then 1445 1448 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]); 1450 1453 end; 1451 1454 end; 1452 1455 SortModels; 1453 FirstShrinkedLine[ 0] := 0;1456 FirstShrinkedLine[laImprovements] := 0; 1454 1457 end; 1455 1458 kTribe: 1456 1459 for I := 0 to TribeNames.Count - 1 do 1457 1460 begin 1458 Code[ 0, Lines[0]] := I;1459 Inc(Lines[ 0]);1461 Code[laImprovements, Lines[laImprovements]] := I; 1462 Inc(Lines[laImprovements]); 1460 1463 end; 1461 1464 (* kDeliver: … … 1477 1480 kShipPart: 1478 1481 begin 1479 Lines[ 0] := 0;1482 Lines[laImprovements] := 0; 1480 1483 for I := 0 to nShipPart - 1 do 1481 1484 if MyRO.Ship[Me].Parts[I] > 0 then 1482 1485 begin 1483 Code[ 0, Lines[0]] := I;1484 Inc(Lines[ 0]);1486 Code[laImprovements, Lines[laImprovements]] := I; 1487 Inc(Lines[laImprovements]); 1485 1488 end; 1486 1489 end; 1487 1490 kEShipPart: 1488 1491 begin 1489 Lines[ 0] := 0;1492 Lines[laImprovements] := 0; 1490 1493 for I := 0 to nShipPart - 1 do 1491 1494 if MyRO.Ship[DipMem[Me].pContact].Parts[I] > 0 then 1492 1495 begin 1493 Code[ 0, Lines[0]] := I;1494 Inc(Lines[ 0]);1496 Code[laImprovements, Lines[laImprovements]] := I; 1497 Inc(Lines[laImprovements]); 1495 1498 end; 1496 1499 end; … … 1501 1504 then 1502 1505 begin 1503 Code[ 0, Lines[0]] := I;1504 Inc(Lines[ 0]);1506 Code[laImprovements, Lines[laImprovements]] := I; 1507 Inc(Lines[laImprovements]); 1505 1508 end; 1506 1509 kMission: 1507 1510 for I := 0 to nSpyMission - 1 do 1508 1511 begin 1509 Code[ 0, Lines[0]] := I;1510 Inc(Lines[ 0]);1512 Code[laImprovements, Lines[laImprovements]] := I; 1513 Inc(Lines[laImprovements]); 1511 1514 end; 1512 1515 end; 1513 1516 1514 1517 if Kind = kProject then // test if choice fitting to one screen 1515 if Lines[ 0] + Lines[1] + Lines[2] <= MaxLines then1518 if Lines[laImprovements] + Lines[laWonders] + Lines[laClasses] <= MaxLines then 1516 1519 begin 1517 for I := 0 to Lines[ 1] - 1 do // add wonders to first page1518 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 page1525 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; 1530 1533 end; 1531 1534 end; … … 1535 1538 Kind := TestKind; 1536 1539 InitLines; 1537 if Lines[ 0] = 0 then1540 if Lines[laImprovements] = 0 then 1538 1541 Result := -2 1539 else if Lines[ 0] > 1 then1542 else if Lines[laImprovements] > 1 then 1540 1543 Result := -1 1541 1544 else 1542 Result := Code[ 0, 0];1545 Result := Code[laImprovements, 0]; 1543 1546 end; 1544 1547 1545 1548 procedure TListDlg.FormShow(Sender: TObject); 1546 1549 var 1547 I: Integer;1550 L: TLayer; 1548 1551 NewTop, NewLeft: Integer; 1549 1552 begin … … 1566 1569 1567 1570 MultiPage := False; 1568 for I := 1 to MaxLayer - 1do1569 if Lines[ I] > 0 then begin1571 for L := Low(Layer) to High(Layer) do 1572 if Lines[L] > 0 then begin 1570 1573 MultiPage := True; 1571 1574 Break; … … 1583 1586 end; 1584 1587 1585 DispLines := Lines[ 0];1586 for I := 0 to MaxLayer - 1do1587 if Lines[ I] > DispLines then1588 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]; 1589 1592 if WideBottom then 1590 1593 begin … … 1610 1613 InnerWidth := 640 - 18; 1611 1614 kTribe: 1612 if Lines[ 0] > MaxLines then1615 if Lines[laImprovements] > MaxLines then 1613 1616 InnerWidth := 280 + GetSystemMetrics(SM_CXVSCROLL) 1614 1617 else … … 1654 1657 end; 1655 1658 1656 Layer 0Btn.Visible := MultiPage and (Lines[0] > 0);1657 Layer 1Btn.Visible := MultiPage and (Lines[1] > 0);1658 Layer 2Btn.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); 1659 1662 if Kind = kProject then 1660 1663 begin 1661 Layer 0Btn.Top := Height - 31;1662 Layer 0Btn.Left := Width div 2 - (12 + 29);1663 Layer 0Btn.Down := True;1664 Layer 1Btn.Top := Height - 31;1665 Layer 1Btn.Left := Width div 2 - (12 - 29);1666 Layer 1Btn.Down := False;1667 Layer 2Btn.Top := Height - 31;1668 Layer 2Btn.Left := Width div 2 - 12;1669 Layer 2Btn.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; 1673 1676 Selected := -2; 1674 1677 ScienceNation := -1; … … 1798 1801 procedure TListDlg.ModeBtnClick(Sender: TObject); 1799 1802 begin 1800 Layer 0Btn.Down := Sender = Layer0Btn;1801 Layer 1Btn.Down := Sender = Layer1Btn;1802 Layer 2Btn.Down := Sender = Layer2Btn;1803 Layer := T Component(Sender).Tag;1803 LayerImprovementsButton.Down := Sender = LayerImprovementsButton; 1804 LayerWondersButton.Down := Sender = LayerWondersButton; 1805 LayerClassesButton.Down := Sender = LayerClassesButton; 1806 Layer := TLayer(TComponent(Sender).Tag); 1804 1807 1805 1808 Selected := -2; … … 1909 1912 begin 1910 1913 if (Key = VK_RIGHT) or (Key = VK_NUMPAD6) then begin 1911 if MultiPage and (Layer < MaxLayer - 1) then begin1914 if MultiPage and (Layer <= High(Layer)) then begin 1912 1915 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; 1915 1922 ScrollBar.Init(Lines[Layer] - 1, DispLines); 1916 1923 SetSelectionIndex(LastSelectionIndex); … … 1919 1926 end else 1920 1927 if (Key = VK_LEFT) or (Key = VK_NUMPAD4) then begin 1921 if MultiPage and (Layer > 0) then begin1928 if MultiPage and (Layer > laImprovements) then begin 1922 1929 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; 1925 1936 ScrollBar.Init(Lines[Layer] - 1, DispLines); 1926 1937 SetSelectionIndex(LastSelectionIndex); -
trunk/LocalPlayer/Term.pas
r666 r670 2574 2574 Supervising := G.Difficulty[NewPlayer] = 0; 2575 2575 ArrangeMidPanel; 2576 end 2576 end; 2577 2577 end; 2578 2578 case Command of
Note:
See TracChangeset
for help on using the changeset viewer.