Changeset 674
- Timestamp:
- Jul 26, 2025, 8:45:36 AM (12 hours ago)
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LocalPlayer/Nego.pas
r622 r674 392 392 if MainScreen.ModalSelectDlg.OnlyChoice(kChooseModel) <> mixAll then 393 393 MyAllowed := MyAllowed + [opAllModel shr 24]; 394 if MainScreen.ModalSelectDlg.OnlyChoice(kChooseE Model) <> mixAll then394 if MainScreen.ModalSelectDlg.OnlyChoice(kChooseEnemyModel) <> mixAll then 395 395 OppoAllowed := OppoAllowed + [opAllModel shr 24]; 396 396 end; … … 762 762 Exit; 763 763 end; 764 MainScreen.ModalSelectDlg.ShowNewContent(wmModal, kE ShipPart);764 MainScreen.ModalSelectDlg.ShowNewContent(wmModal, kEnemyShipPart); 765 765 if MainScreen.ModalSelectDlg.Result < 0 then 766 766 Exit; … … 784 784 opAllTech: 785 785 begin // choose technology 786 MainScreen.ModalSelectDlg.ShowNewContent(wmModal, kChooseE Tech);786 MainScreen.ModalSelectDlg.ShowNewContent(wmModal, kChooseEnemyTech); 787 787 if MainScreen.ModalSelectDlg.Result < 0 then 788 788 Exit; … … 794 794 opAllModel: 795 795 begin // choose model 796 MainScreen.ModalSelectDlg.ShowNewContent(wmModal, kChooseE Model);796 MainScreen.ModalSelectDlg.ShowNewContent(wmModal, kChooseEnemyModel); 797 797 if MainScreen.ModalSelectDlg.Result < 0 then 798 798 Exit; -
trunk/LocalPlayer/Select.pas
r672 r674 6 6 uses 7 7 Protocol, ClientTools, ScreenTools, PVSB, BaseWin, LCLIntf, LCLType, Messages, 8 SysUtils, Classes, ButtonB, ButtonBase, Types, Math, 8 SysUtils, Classes, ButtonB, ButtonBase, Types, Math, Generics.Collections, 9 9 {$IFDEF DPI}Dpi.Graphics, Dpi.Controls, Dpi.Forms, Dpi.ExtCtrls, Dpi.Menus, 10 10 Dpi.Common, System.UITypes{$ELSE} … … 13 13 type 14 14 TListKind = (kProject, kAdvance, kFarAdvance, kCities, kCityEvents, kModels, 15 kE Models, kAllEModels, kTribe, kScience, kShipPart, kEShipPart, kChooseTech,16 kChoose ETech, kChooseModel, kChooseEModel, kChooseCity, kChooseECity,17 k StealTech, kGov, kMission);15 kEnemyModels, kAllEnemyModels, kTribe, kScience, kShipPart, kEnemyShipPart, 16 kChooseTech, kChooseEnemyTech, kChooseModel, kChooseEnemyModel, kChooseCity, 17 kChooseEnemyCity, kStealTech, kGovernment, kMission); 18 18 19 19 TLayerIndex = (laImprovements, laWonders, laClasses); 20 21 { TLine } 22 23 TLine = class 24 Code: Integer; 25 Model: Integer; 26 ModelSortValue: Integer; 27 procedure Assign(Source: TLine); 28 end; 20 29 21 30 { TLayer } … … 23 32 TLayer = class 24 33 Index: TLayerIndex; 25 Lines: Integer;26 34 FirstShrinkedLine: Integer; 27 Code: array [0..4095] of Integer; 28 procedure SwapCode(I, J: Integer); 35 Lines: TObjectList<TLine>; 36 procedure AddLine(Code: Integer; Model: Integer = 0; ModelSortValue: Integer = 0); 37 procedure SwapLine(I, J: Integer); 38 procedure SortModels; 39 procedure SortCities; 40 procedure SortTechs; 29 41 constructor Create(AIndex: TLayerIndex); 30 procedure AddCode(Value: Integer);42 destructor Destroy; override; 31 43 end; 32 44 … … 62 74 MaxLines: Integer; 63 75 cixProject: Integer; 64 pView: Integer;76 PlayerView: Integer; 65 77 Selected: Integer; 66 78 DispLines: Integer; … … 78 90 procedure ScrollBarUpdate(Sender: TObject); 79 91 procedure InitLines; 80 procedure Line(ca: TCanvas; L: Integer; NonText, Lit: Boolean);92 procedure PaintLine(ca: TCanvas; L: Integer; NonText, Lit: Boolean); 81 93 function RenameModel(mix: Integer): Boolean; 82 94 procedure OnScroll(var Msg: TMessage); message WM_VSCROLL; … … 91 103 procedure ShowNewContent(NewMode: TWindowMode; ListKind: TListKind); 92 104 procedure ShowNewContent_CityProject(NewMode: TWindowMode; cix: Integer); 93 procedure ShowNewContent_MilReport(NewMode: TWindowMode; P : Integer);105 procedure ShowNewContent_MilReport(NewMode: TWindowMode; Player: Integer); 94 106 procedure EcoChange; 95 107 procedure TechChange; … … 116 128 CityNameSpace = 127; 117 129 118 MustChooseKind = [kTribe, kStealTech, kGov]; 130 MustChooseKind = [kTribe, kStealTech, kGovernment]; 131 132 { TLine } 133 134 procedure TLine.Assign(Source: TLine); 135 begin 136 Code := Source.Code; 137 Model := Source.Model; 138 ModelSortValue := Source.ModelSortValue; 139 end; 119 140 120 141 { TLayer } 121 142 122 procedure TLayer. SwapCode(I, J: Integer);143 procedure TLayer.AddLine(Code: Integer; Model: Integer = 0; ModelSortValue: Integer = 0); 123 144 var 124 Temp: Integer; 125 begin 126 Temp := Code[I]; 127 Code[I] := Code[J]; 128 Code[J] := Temp; 145 NewLine: TLine; 146 begin 147 NewLine := TLine.Create; 148 NewLine.Code := Code; 149 NewLine.Model := Model; 150 NewLine.ModelSortValue := ModelSortValue; 151 Lines.Add(NewLine); 152 end; 153 154 procedure TLayer.SwapLine(I, J: Integer); 155 var 156 Temp: TLine; 157 begin 158 Temp := TLine.Create; 159 Temp.Assign(Lines[I]); 160 Lines[I].Assign(Lines[J]); 161 Lines[J].Assign(Temp); 162 Temp.Free; 163 end; 164 165 procedure TLayer.SortModels; 166 var 167 I, J: Integer; 168 begin 169 for I := 0 to Lines.Count - 2 do 170 for J := I + 1 to Lines.Count - 1 do 171 if Lines[I].ModelSortValue > Lines[J].ModelSortValue then 172 begin 173 SwapLine(I, J); 174 end; 175 end; 176 177 procedure TLayer.SortTechs; 178 var 179 I, J: Integer; 180 begin // sort by advancedness 181 for I := 0 to Lines.Count - 2 do 182 if Lines[I].Code < adMilitary then 183 for J := I + 1 to Lines.Count - 1 do 184 if AdvValue[Lines[I].Code] * nAdv + Lines[I].Code < AdvValue[Lines[J].Code] * 185 nAdv + Lines[J].Code then 186 begin 187 SwapLine(I, J); 188 end; 189 end; 190 191 procedure TLayer.SortCities; 192 var 193 I, J: Integer; 194 begin 195 for I := 0 to Lines.Count - 2 do 196 for J := I + 1 to Lines.Count - 1 do 197 if CityName(MyCity[Lines[I].Code].ID) > CityName(MyCity[Lines[J].Code].ID) then 198 begin 199 SwapLine(I, J); 200 end; 129 201 end; 130 202 131 203 constructor TLayer.Create(AIndex: TLayerIndex); 132 204 begin 205 Lines := TObjectList<TLine>.Create; 133 206 Index := AIndex; 134 207 end; 135 208 136 procedure TLayer.AddCode(Value: Integer);137 begin 138 Code[Lines] := Value;139 Inc(Lines);209 destructor TLayer.Destroy; 210 begin 211 FreeAndNil(Lines); 212 inherited; 140 213 end; 141 214 … … 195 268 if not Closable and (Selected <> -2) then 196 269 begin 197 Line(Canvas, Selected, False, False);270 PaintLine(Canvas, Selected, False, False); 198 271 Selected := -2; 199 272 end; … … 207 280 Canvas.Font.Assign(UniFont[ftNormal]); 208 281 if Selected <> -2 then 209 Line(Canvas, Selected, False, True);282 PaintLine(Canvas, Selected, False, True); 210 283 S := ''; 211 284 if (Kind = kAdvance) and (MyData.FarTech <> adNone) then … … 214 287 else if Kind = kModels then 215 288 S := Tribe[Me].TPhrase('SHORTNAME') 216 else if Kind = kE Models then217 S := Tribe[ pView].TPhrase('SHORTNAME') + ' (' +218 TurnToString(MyRO.EnemyReport[ pView].TurnOfMilReport) + ')';289 else if Kind = kEnemyModels then 290 S := Tribe[PlayerView].TPhrase('SHORTNAME') + ' (' + 291 TurnToString(MyRO.EnemyReport[PlayerView].TurnOfMilReport) + ')'; 219 292 if S <> '' then 220 293 LoweredTextOut(Canvas, -1, MainTexture, … … 228 301 end; 229 302 230 procedure TListDlg. Line(ca: TCanvas; L: Integer; NonText, Lit: Boolean);303 procedure TListDlg.PaintLine(ca: TCanvas; L: Integer; NonText, Lit: Boolean); 231 304 // paint a line 232 305 … … 283 356 CanGrow: Boolean; 284 357 begin 285 lix := Layer. Code[ScrollBar.Position + L];358 lix := Layer.Lines[ScrollBar.Position + L].Code; 286 359 y0 := 2 + (L + 1) * LineDistance; 360 287 361 if ScrollBar.Position + L >= Layer.FirstShrinkedLine then 288 362 ofs := (ScrollBar.Position + L - Layer.FirstShrinkedLine) and 1 * 33 289 else { if FirstShrinkedLine[Layer] < Lines[Layer]then }363 else { if Layers[Layer].FirstShrinkedLine < Layers[Layer].Lines.Count then } 290 364 ofs := 33; 291 365 … … 408 482 else 409 483 begin 410 { s :=IntToStr(CityReport.FoodSurplus);411 ReplaceText(X +(CityNameSpace+4+48)-BiColorTextWidth(ca,S),Y,TextColor,S); }484 { s := IntToStr(CityReport.FoodSurplus); 485 ReplaceText(X + (CityNameSpace + 4 + 48) - BiColorTextWidth(ca, S), Y, TextColor, S); } 412 486 S := IntToStr(CityReport.Science); 413 487 ReplaceText(X + CityNameSpace + 4 + 370 + 48 - BiColorTextWidth(ca, … … 418 492 if NonText then 419 493 begin 420 // Sprite(offscreen, HGrSystem,x+CityNameSpace+4+333+1,y+6,10,10,66,115);494 // Sprite(offscreen, HGrSystem, x + CityNameSpace + 4 + 333 + 1, y + 6, 10, 10, 66, 115); 421 495 Sprite(Offscreen, HGrSystem, X + CityNameSpace + 4 + 370 + 48 + 1, 422 496 Y + 6, 10, 10, 77, 126); … … 428 502 ReplaceText(X + CityNameSpace + 4 + 370 - BiColorTextWidth(ca, S), Y, 429 503 TextColor, S); 430 // if Project and (cpImp +cpIndex)<>cpImp+imTrGoods then431 // ReplaceText(x +CityNameSpace+4+333+1,y,TextColor,Format('%d/%d',[TrueProd,CityReport.ProjectCost]));504 // if Project and (cpImp + cpIndex) <> cpImp + imTrGoods then 505 // ReplaceText(x + CityNameSpace + 4 + 333 + 1, y, TextColor, Format('%d/%d', [TrueProd,CityReport.ProjectCost])); 432 506 if NonText then 433 507 begin … … 463 537 end; 464 538 end 465 else if Kind in [kModels, kE Models] then539 else if Kind in [kModels, kEnemyModels] then 466 540 begin 467 541 X := 104; … … 491 565 else 492 566 begin 493 Available := MyRO.EnemyReport[ pView].UnCount[lix];567 Available := MyRO.EnemyReport[PlayerView].UnCount[lix]; 494 568 if MainScreen.mNames.Checked then 495 S := Tribe[ pView].ModelName[lix]569 S := Tribe[PlayerView].ModelName[lix] 496 570 else 497 S := Format(Tribe[ pView].TPhrase('GENMODEL'), [lix]);571 S := Format(Tribe[PlayerView].TPhrase('GENMODEL'), [lix]); 498 572 if NonText then 499 with Tribe[ pView].ModelPicture[lix] do573 with Tribe[PlayerView].ModelPicture[lix] do 500 574 Sprite(Offscreen, HGr, 8 + ofs, y0 - 15, 64, 48, pix mod 10 * 65 + 1, 501 575 pix div 10 * 49 + 1); … … 509 583 begin 510 584 case Kind of 511 kAllE Models, kChooseEModel:585 kAllEnemyModels, kChooseEnemyModel: 512 586 if lix = mixAll then 513 587 S := Phrases.Lookup('PRICECAT_ALLMODEL') … … 518 592 begin 519 593 S := Tribe[mox.Owner].ModelName[mox.mix]; 520 if (Kind = kAllE Models) and (Layers[laWonders].Code[ScrollBar.Position + L]= 0) then594 if (Kind = kAllEnemyModels) and (Layers[laImprovements].Lines[ScrollBar.Position + L].Model = 0) then 521 595 S := Format(Tribe[mox.Owner].TPhrase('OWNED'), [S]); 522 596 end … … 561 635 DisplayProject(8 + ofs, y0 - 15, lix); 562 636 end; 563 kAdvance, kFarAdvance, kScience, kChooseTech, kChooseE Tech, kStealTech:637 kAdvance, kFarAdvance, kScience, kChooseTech, kChooseEnemyTech, kStealTech: 564 638 begin 565 639 if lix = adAll then … … 706 780 DisplayProject(8 + ofs, y0 - 15, cpImp + imShipComp + lix); 707 781 end; 708 kE ShipPart:782 kEnemyShipPart: 709 783 begin 710 784 S := Phrases.Lookup('IMPROVEMENTS', imShipComp + lix) + ' (' + … … 713 787 DisplayProject(8 + ofs, y0 - 15, cpImp + imShipComp + lix); 714 788 end; 715 kGov :789 kGovernment: 716 790 begin 717 791 S := Phrases.Lookup('GOVERNMENT', lix); … … 730 804 case Kind of 731 805 kTribe, kMission: // center text 732 if Layers[laImprovements].Lines > MaxLines then806 if Layers[laImprovements].Lines.Count > MaxLines then 733 807 X := (InnerWidth - GetSystemMetrics(SM_CXVSCROLL)) div 2 - 734 808 BiColorTextWidth(ca, S) div 2 735 809 else 736 810 X := InnerWidth div 2 - BiColorTextWidth(ca, S) div 2; 737 kAdvance, kFarAdvance, kScience, kChooseTech, kChooseE Tech,738 kStealTech, kGov :811 kAdvance, kFarAdvance, kScience, kChooseTech, kChooseEnemyTech, 812 kStealTech, kGovernment: 739 813 X := 104 - 33; 740 kAllE Models:814 kAllEnemyModels: 741 815 X := 104; 742 816 else … … 753 827 else 754 828 TextColor := -1; 755 { if Kind =kTribe then ReplaceText_Tribe(x,y,TextColor,756 Integer(TribeNames.Objects[lix]), S)829 { if Kind = kTribe then ReplaceText_Tribe(X, Y, TextColor, 830 Integer(TribeNames.Objects[lix]), S) 757 831 else } ReplaceText(X, Y, TextColor, S); 758 832 end; … … 803 877 804 878 for I := -1 to DispLines do 805 if (I + ScrollBar.Position >= 0) and (I + ScrollBar.Position < Layer.Lines ) then806 Self.Line(Offscreen.Canvas, I, True, False);879 if (I + ScrollBar.Position >= 0) and (I + ScrollBar.Position < Layer.Lines.Count) then 880 PaintLine(Offscreen.Canvas, I, True, False); 807 881 end; 808 882 MarkUsedOffscreen(InnerWidth, 8 + 48 + DispLines * LineDistance); … … 825 899 Selected := -2; 826 900 if (Selected < -1) or (Selected > DispLines) or (Selected + i0 < 0) or 827 (Selected + i0 >= Layer.Lines ) then901 (Selected + i0 >= Layer.Lines.Count) then 828 902 Selected := -2; 829 903 if Selected <> Sel0 then begin 830 904 if Sel0 <> -2 then 831 Line(Canvas, Sel0, False, False);905 PaintLine(Canvas, Sel0, False, False); 832 906 if Selected <> -2 then 833 Line(Canvas, Selected, False, True);907 PaintLine(Canvas, Selected, False, True); 834 908 end; 835 909 … … 952 1026 begin 953 1027 if ScrollBar.Position + Selected >= 0 then 954 lix := Layer. Code[ScrollBar.Position + Selected];955 if Kind in [kScience, kCities, kCityEvents, kModels, kE Models, kAllEModels]1028 lix := Layer.Lines[ScrollBar.Position + Selected].Code; 1029 if Kind in [kScience, kCities, kCityEvents, kModels, kEnemyModels, kAllEnemyModels] 956 1030 then 957 1031 Include(Shift, ssShift); // don't close list window … … 977 1051 if lix <> mixAll then 978 1052 MainScreen.UnitStatDlg.ShowNewContent_OwnModel(wmPersistent, lix); 979 kE Models:1053 kEnemyModels: 980 1054 MainScreen.UnitStatDlg.ShowNewContent_EnemyModel(wmPersistent, 981 Layers[la Wonders].Code[ScrollBar.Position + Selected]);982 kAllE Models, kChooseEModel:1055 Layers[laImprovements].Lines[ScrollBar.Position + Selected].Code); 1056 kAllEnemyModels, kChooseEnemyModel: 983 1057 if lix <> mixAll then 984 1058 MainScreen.UnitStatDlg.ShowNewContent_EnemyModel(wmPersistent, lix); 985 kAdvance, kFarAdvance, kScience, kChooseTech, kChooseE Tech, kStealTech:1059 kAdvance, kFarAdvance, kScience, kChooseTech, kChooseEnemyTech, kStealTech: 986 1060 if lix = adMilitary then 987 1061 MainScreen.HelpDlg.ShowNewContent(wmPersistent, hkText, … … 999 1073 MainScreen.HelpDlg.ShowNewContent(wmPersistent, hkImp, 1000 1074 lix and cpIndex); 1001 kGov :1075 kGovernment: 1002 1076 MainScreen.HelpDlg.ShowNewContent(wmPersistent, hkMisc, 1003 1077 Integer(miscGovList)); 1004 kShipPart, kE ShipPart:1078 kShipPart, kEnemyShipPart: 1005 1079 ; 1006 1080 end; … … 1033 1107 then 1034 1108 begin 1035 Layer.Code[Layer.Lines] := Project; 1036 Inc(Layer.Lines); 1109 Layer.AddLine(Project); 1037 1110 end; 1038 1111 end; 1039 1112 1040 procedure SortTechs; 1041 var 1042 I, J: Integer; 1043 begin // sort by advancedness 1044 for I := 0 to Layers[laImprovements].Lines - 2 do 1045 if Layers[laImprovements].Code[I] < adMilitary then 1046 for J := I + 1 to Layers[laImprovements].Lines - 1 do 1047 if AdvValue[Layers[laImprovements].Code[I]] * nAdv + Layers[laImprovements].Code[I] < AdvValue[Layers[laImprovements].Code[J]] * 1048 nAdv + Layers[laImprovements].Code[J] then 1049 begin 1050 Layers[laImprovements].SwapCode(I, J); 1051 end; 1052 end; 1053 1054 procedure SortCities; 1055 var 1056 I, J: Integer; 1057 begin 1058 for I := 0 to Layers[laImprovements].Lines - 2 do 1059 for J := I + 1 to Layers[laImprovements].Lines - 1 do 1060 if CityName(MyCity[Layers[laImprovements].Code[I]].ID) > CityName(MyCity[Layers[laImprovements].Code[J]].ID) 1061 then 1062 Layers[laImprovements].SwapCode(I, J); 1063 end; 1064 1065 function ModelSortValue(const mi: TModelInfo; 1113 function ModelSortValue(const ModelInfo: TModelInfo; 1066 1114 MixPlayers: Boolean = False): Integer; 1067 1115 begin 1068 Result := ( mi.Domain + 1) shl 28 - mi.mix;1116 Result := (ModelInfo.Domain + 1) shl 28 - ModelInfo.mix; 1069 1117 if MixPlayers then 1070 Dec(Result, ModelCode(mi) shl 16); 1071 end; 1072 1073 procedure SortModels; 1074 var 1075 I, J, Swap: Integer; 1076 begin // sort by code[2] 1077 for I := 0 to Layers[laImprovements].Lines - 2 do 1078 for J := I + 1 to Layers[laImprovements].Lines - 1 do 1079 if Layers[laClasses].Code[I] > Layers[laClasses].Code[J] then 1080 begin 1081 Layers[laImprovements].SwapCode(I, J); 1082 Layers[laWonders].SwapCode(I, J); 1083 Layers[laClasses].SwapCode(I, J); 1084 end; 1118 Dec(Result, ModelCode(ModelInfo) shl 16); 1085 1119 end; 1086 1120 … … 1100 1134 L: TLayerIndex; 1101 1135 Loc1, I, J, p1, dx, dy, mix, emix, EnemyType, TestEnemyType: Integer; 1102 mi: TModelInfo;1136 ModelInfo: TModelInfo; 1103 1137 PPicture, PTestPicture: ^TModelPicture; 1104 1138 ModelOk: array [0 .. 4095] of Boolean; 1139 Model: Integer; 1105 1140 Ok: Boolean; 1106 1141 begin 1107 1142 for L := Low(TLayerIndex) to High(TLayerIndex) do 1108 1143 begin 1109 Layers[L].Lines := 0;1144 Layers[L].Lines.Clear; 1110 1145 Layers[L].FirstShrinkedLine := MaxInt; 1111 1146 end; … … 1115 1150 begin 1116 1151 // improvements 1117 Layers[laImprovements].Add Code(cpImp + imTrGoods);1152 Layers[laImprovements].AddLine(cpImp + imTrGoods); 1118 1153 for I := nWonder to nImp - 1 do 1119 1154 if Imp[I].Kind = ikCommon then … … 1125 1160 for I := 0 to nCityType - 1 do 1126 1161 if MyData.ImpOrder[I, 0] >= 0 then 1127 Layers[laImprovements].Add Code(cpType + I);1162 Layers[laImprovements].AddLine(cpType + I); 1128 1163 1129 1164 // wonders … … 1134 1169 for I := 0 to MyRO.nModel - 1 do 1135 1170 begin 1136 { if MyModel[i].Kind =mkSlaves then1137 Ok := MyRO.Wonder[woPyramids].EffectiveOwner=Me1171 { if MyModel[i].Kind = mkSlaves then 1172 Ok := MyRO.Wonder[woPyramids].EffectiveOwner = Me 1138 1173 else } if MyModel[I].Domain = dSea then 1139 1174 begin … … 1158 1193 if MyModel[I].Status and msObsolete = 0 then 1159 1194 begin 1160 Layers[laClasses].Add Code(I);1195 Layers[laClasses].AddLine(I); 1161 1196 end; 1162 1197 if MyModel[I].Status and msAllowConscripts <> 0 then 1163 1198 begin 1164 Layers[laClasses].Add Code(I + cpConscripts);1199 Layers[laClasses].AddLine(I + cpConscripts); 1165 1200 end; 1166 1201 end; … … 1181 1216 ((MyData.FarTech = adNone) or (Required[I] > 0)) then 1182 1217 begin 1183 Layers[laImprovements].Add Code(I);1184 end; 1185 SortTechs;1186 if Layers[laImprovements].Lines = 0 then // no more techs -- offer nexus1187 Layers[laImprovements].Add Code(adNexus);1218 Layers[laImprovements].AddLine(I); 1219 end; 1220 Layers[laImprovements].SortTechs; 1221 if Layers[laImprovements].Lines.Count = 0 then // no more techs -- offer nexus 1222 Layers[laImprovements].AddLine(adNexus); 1188 1223 Ok := False; 1189 1224 for I := 0 to nDomains - 1 do … … 1194 1229 end; 1195 1230 if Ok then { new unit class } 1196 Layers[laImprovements].Add Code(adMilitary);1231 Layers[laImprovements].AddLine(adMilitary); 1197 1232 end; 1198 1233 kFarAdvance: 1199 1234 begin 1200 Layers[laImprovements].Add Code(adNone);1235 Layers[laImprovements].AddLine(adNone); 1201 1236 for I := 0 to nAdv - 1 do 1202 1237 if not (I in FutureTech) and (MyRO.Tech[I] < tsApplicable) and … … 1204 1239 ((AdvValue[I] < 1000) or (MyRO.Tech[adScience] > tsNA)) then 1205 1240 begin 1206 Layers[laImprovements].Add Code(I);1207 end; 1208 SortTechs;1241 Layers[laImprovements].AddLine(I); 1242 end; 1243 Layers[laImprovements].SortTechs; 1209 1244 end; 1210 1245 kChooseTech: … … 1214 1249 (MyRO.EnemyReport[DipMem[Me].pContact].Tech[I] < tsSeen) then 1215 1250 begin 1216 Layers[laImprovements].Add Code(I);1217 end; 1218 SortTechs;1219 // if L ines[0]> 1 then1220 begin 1221 Layers[laImprovements].Add Code(adAll);1222 end; 1223 end; 1224 kChooseE Tech:1251 Layers[laImprovements].AddLine(I); 1252 end; 1253 Layers[laImprovements].SortTechs; 1254 // if Layers[0].Lines.Count > 1 then 1255 begin 1256 Layers[laImprovements].AddLine(adAll); 1257 end; 1258 end; 1259 kChooseEnemyTech: 1225 1260 begin 1226 1261 for I := 0 to nAdv - 1 do … … 1228 1263 (MyRO.EnemyReport[DipMem[Me].pContact].Tech[I] >= tsApplicable) then 1229 1264 begin 1230 Layers[laImprovements].Add Code(I);1231 end; 1232 SortTechs;1233 // if L ines[0]> 1 then1234 begin 1235 Layers[laImprovements].Add Code(adAll);1265 Layers[laImprovements].AddLine(I); 1266 end; 1267 Layers[laImprovements].SortTechs; 1268 // if LAyers[0].Lines.Count > 1 then 1269 begin 1270 Layers[laImprovements].AddLine(adAll); 1236 1271 end; 1237 1272 end; … … 1241 1276 if Server(sStealTech - sExecute, Me, I, nil^) >= rExecuted then 1242 1277 begin 1243 Layers[laImprovements].Add Code(I);1244 end; 1245 SortTechs;1278 Layers[laImprovements].AddLine(I); 1279 end; 1280 Layers[laImprovements].SortTechs; 1246 1281 end; 1247 1282 kScience: … … 1277 1312 Ok := True; 1278 1313 if Ok then 1279 Layers[laImprovements].Add Code(I);1280 end; 1281 SortTechs;1314 Layers[laImprovements].AddLine(I); 1315 end; 1316 Layers[laImprovements].SortTechs; 1282 1317 1283 1318 Ok := MyRO.ResearchTech = adMilitary; … … 1290 1325 end; 1291 1326 if Ok then 1292 Layers[laImprovements].Add Code(adMilitary);1327 Layers[laImprovements].AddLine(adMilitary); 1293 1328 end; 1294 1329 kCities { , kChooseCity } : … … 1298 1333 if MyCity[I].Loc >= 0 then 1299 1334 begin 1300 Layers[laImprovements].Add Code(I);1335 Layers[laImprovements].AddLine(I); 1301 1336 end; 1302 SortCities;1337 Layers[laImprovements].SortCities; 1303 1338 Layers[laImprovements].FirstShrinkedLine := 0; 1304 1339 end; … … 1308 1343 if (MyCity[I].Loc >= 0) and (MyCity[I].Flags and CityRepMask <> 0) 1309 1344 then begin 1310 Layers[laImprovements].Add Code(I);1311 end; 1312 SortCities;1345 Layers[laImprovements].AddLine(I); 1346 end; 1347 Layers[laImprovements].SortCities; 1313 1348 Layers[laImprovements].FirstShrinkedLine := 0; 1314 1349 end; 1315 { kChooseE City:1350 { kChooseEnemyCity: 1316 1351 begin 1317 1352 for I := 0 to MyRO.nEnemyCity - 1 do … … 1327 1362 for mix := 0 to MyRO.nModel - 1 do 1328 1363 begin 1329 Layers[laImprovements].Code[mix] := mix; 1330 MakeModelInfo(Me, mix, MyModel[mix], mi); 1331 Layers[laClasses].Code[mix] := ModelSortValue(mi); 1332 end; 1333 Layers[laImprovements].Lines := MyRO.nModel; 1334 SortModels; 1364 MakeModelInfo(Me, mix, MyModel[mix], ModelInfo); 1365 Layers[laImprovements].AddLine(mix, 0, ModelSortValue(ModelInfo)); 1366 end; 1367 Layers[laImprovements].SortModels; 1335 1368 Layers[laImprovements].FirstShrinkedLine := 0; 1336 1369 end; … … 1339 1372 for mix := 3 to MyRO.nModel - 1 do 1340 1373 begin // check if opponent already has this model 1341 MakeModelInfo(Me, mix, MyModel[mix], mi);1374 MakeModelInfo(Me, mix, MyModel[mix], ModelInfo); 1342 1375 Ok := True; 1343 1376 for emix := 0 to MyRO.nEnemyModel - 1 do 1344 1377 if (MyRO.EnemyModel[emix].Owner = DipMem[Me].pContact) and 1345 IsSameModel(MyRO.EnemyModel[emix], mi) then begin1378 IsSameModel(MyRO.EnemyModel[emix], ModelInfo) then begin 1346 1379 Ok := False; 1347 1380 Break; … … 1349 1382 if Ok then 1350 1383 begin 1351 Layers[laImprovements].Code[Layers[laImprovements].Lines] := mix; 1352 MakeModelInfo(Me, mix, MyModel[mix], mi); 1353 Layers[laClasses].Code[Layers[laImprovements].Lines] := ModelSortValue(mi); 1354 Inc(Layers[laImprovements].Lines); 1355 end; 1356 end; 1357 SortModels; 1358 Layers[laImprovements].AddCode(mixAll); 1359 Layers[laImprovements].FirstShrinkedLine := 0; 1360 end; 1361 kChooseEModel: 1384 MakeModelInfo(Me, mix, MyModel[mix], ModelInfo); 1385 Layers[laImprovements].AddLine(mix, 0, ModelSortValue(ModelInfo)); 1386 end; 1387 end; 1388 Layers[laImprovements].SortModels; 1389 Layers[laImprovements].AddLine(mixAll); 1390 Layers[laImprovements].FirstShrinkedLine := 0; 1391 end; 1392 kChooseEnemyModel: 1362 1393 begin 1363 1394 if MyRO.TestFlags and tfUncover <> 0 then … … 1367 1398 for mix := 0 to MyRO.nModel - 1 do 1368 1399 begin // don't list models I already have 1369 MakeModelInfo(Me, mix, MyModel[mix], mi);1400 MakeModelInfo(Me, mix, MyModel[mix], ModelInfo); 1370 1401 for emix := 0 to MyRO.nEnemyModel - 1 do 1371 1402 ModelOk[emix] := ModelOk[emix] and 1372 not IsSameModel(MyRO.EnemyModel[emix], mi);1403 not IsSameModel(MyRO.EnemyModel[emix], ModelInfo); 1373 1404 end; 1374 1405 for emix := 0 to MyRO.nEnemyModel - 1 do … … 1378 1409 [MyRO.EnemyModel[emix].mix].HGr) then 1379 1410 InitEnemyModel(emix); 1380 Layers[laImprovements].Code[Layers[laImprovements].Lines] := emix; 1381 Layers[laClasses].Code[Layers[laImprovements].Lines] := ModelSortValue(MyRO.EnemyModel[emix]); 1382 Inc(Layers[laImprovements].Lines); 1383 end; 1384 SortModels; 1411 Layers[laImprovements].AddLine(emix, 0, ModelSortValue(MyRO.EnemyModel[emix])); 1412 end; 1413 Layers[laImprovements].SortModels; 1385 1414 // if not IsMilReportNew(DipMem[me].pContact) or (Layers[laImprovements].Lines > 1) then 1386 1415 begin 1387 Layers[laImprovements].Add Code(mixAll);1416 Layers[laImprovements].AddLine(mixAll); 1388 1417 end; 1389 1418 Layers[laImprovements].FirstShrinkedLine := 0; 1390 1419 end; 1391 kE Models:1392 begin 1393 for I := 0 to MyRO.EnemyReport[ pView].nModelCounted - 1 do1394 begin 1395 Layers[laWonders].Code[Layers[laImprovements].Lines]:= MyRO.nEnemyModel - 1;1396 while (Layers[laWonders].Code[Layers[laImprovements].Lines] >= 0) and 1397 not ((MyRO.EnemyModel[Layers[laWonders].Code[Layers[laImprovements].Lines]].Owner = pView) and1398 (MyRO.EnemyModel[Layers[laWonders].Code[Layers[laImprovements].Lines]].mix = I)) do1399 Dec(Layers[laWonders].Code[Layers[laImprovements].Lines]);1400 if not Assigned(Tribe[pView].ModelPicture[I].HGr) then1401 InitEnemyModel(Layers[laWonders].Code[Layers[laImprovements].Lines]); 1402 Layers[laImprovements].Code[Layers[laImprovements].Lines] := I;1403 Layers[laClasses].Code[Layers[laImprovements].Lines] :=1404 ModelSortValue(MyRO.EnemyModel[Layers[laWonders].Code[Layers[laImprovements].Lines]]); 1405 Inc(Layers[laImprovements].Lines);1406 end; 1407 SortModels;1420 kEnemyModels: 1421 begin 1422 for I := 0 to MyRO.EnemyReport[PlayerView].nModelCounted - 1 do 1423 begin 1424 Model := MyRO.nEnemyModel - 1; 1425 1426 while (Model >= 0) and 1427 not ((MyRO.EnemyModel[Model].Owner = PlayerView) and 1428 (MyRO.EnemyModel[Model].mix = I)) do 1429 Dec(Model); 1430 1431 if not Assigned(Tribe[PlayerView].ModelPicture[I].HGr) then 1432 InitEnemyModel(Model); 1433 1434 Layers[laImprovements].AddLine(I, Model, ModelSortValue(MyRO.EnemyModel[Model])); 1435 end; 1436 Layers[laImprovements].SortModels; 1408 1437 Layers[laImprovements].FirstShrinkedLine := 0; 1409 1438 end; 1410 kAllE Models:1439 kAllEnemyModels: 1411 1440 begin 1412 1441 if (MyRO.TestFlags and tfUncover <> 0) or (G.Difficulty[Me] = 0) then … … 1423 1452 Ok := True; 1424 1453 if MainScreen.mNames.Checked then 1425 for J := 0 to Layers[laImprovements].Lines - 1 do1454 for J := 0 to Layers[laImprovements].Lines.Count - 1 do 1426 1455 begin 1427 PTestPicture := @Tribe[MyRO.EnemyModel[Layers[laImprovements].Code[J]].Owner] 1428 .ModelPicture[MyRO.EnemyModel[Layers[laImprovements].Code[J]].mix]; 1456 Model := Layers[laImprovements].Lines[J].Code; 1457 PTestPicture := @Tribe[MyRO.EnemyModel[Model].Owner] 1458 .ModelPicture[MyRO.EnemyModel[Model].mix]; 1429 1459 if (PPicture.HGr = PTestPicture.HGr) and 1430 1460 (PPicture.pix = PTestPicture.pix) and 1431 1461 (ModelHash(MyRO.EnemyModel[emix]) 1432 = ModelHash(MyRO.EnemyModel[ Layers[laImprovements].Code[J]])) then1462 = ModelHash(MyRO.EnemyModel[Model])) then 1433 1463 begin 1434 Layers[la Wonders].Code[J]:= 1;1464 Layers[laImprovements].Lines[J].Model := 1; 1435 1465 Ok := False; 1436 1466 Break; 1437 1467 end; 1438 1468 end; 1439 if Ok then 1440 begin 1441 Layers[laImprovements].Code[Layers[laImprovements].Lines] := emix; 1442 Layers[laWonders].Code[Layers[laImprovements].Lines] := 0; 1443 Layers[laClasses].Code[Layers[laImprovements].Lines] := ModelSortValue(MyRO.EnemyModel[emix], True); 1444 Inc(Layers[laImprovements].Lines); 1469 if Ok then begin 1470 Layers[laImprovements].AddLine(emix, 0, ModelSortValue(MyRO.EnemyModel[emix], True)); 1445 1471 end; 1446 1472 end; 1447 SortModels;1473 Layers[laImprovements].SortModels; 1448 1474 Layers[laImprovements].FirstShrinkedLine := 0; 1449 1475 end; … … 1451 1477 for I := 0 to TribeNames.Count - 1 do 1452 1478 begin 1453 Layers[laImprovements].Add Code(I);1479 Layers[laImprovements].AddLine(I); 1454 1480 end; 1455 1481 (* kDeliver: 1456 if MyRO.Treaty[DipMem[Me].pContact] <trAlliance then1482 if MyRO.Treaty[DipMem[Me].pContact] < trAlliance then 1457 1483 begin // suggest next treaty level 1458 Code[0,Lines[0]]:=opTreaty+MyRO.Treaty[DipMem[Me].pContact]+1; 1459 Inc(Lines[0]); 1460 end; 1461 if MyRO.Treaty[DipMem[Me].pContact]=trNone then 1484 Layers[laImprovements].AddLine(opTreaty + MyRO.Treaty[DipMem[Me].pContact] + 1); 1485 end; 1486 if MyRO.Treaty[DipMem[Me].pContact] = trNone then 1462 1487 begin // suggest peace 1463 Code[0,Lines[0]]:=opTreaty+trPeace; 1464 Inc(Lines[0]); 1465 end; 1466 if MyRO.Treaty[DipMem[Me].pContact]>trNone then 1488 Layers[laImprovements].AddLine(opTreaty + trPeace); 1489 end; 1490 if MyRO.Treaty[DipMem[Me].pContact] > trNone then 1467 1491 begin // suggest next treaty level 1468 Code[0,Lines[0]]:=opTreaty+MyRO.Treaty[DipMem[Me].pContact]-1; 1469 Inc(Lines[0]); 1492 Layers[laImprovements].AddLine(opTreaty + MyRO.Treaty[DipMem[Me].pContact] - 1); 1470 1493 end; *) 1471 1494 kShipPart: 1472 1495 begin 1473 Layers[laImprovements].Lines := 0;1496 Layers[laImprovements].Lines.Clear; 1474 1497 for I := 0 to nShipPart - 1 do 1475 1498 if MyRO.Ship[Me].Parts[I] > 0 then 1476 1499 begin 1477 Layers[laImprovements].Add Code(I);1478 end; 1479 end; 1480 kE ShipPart:1481 begin 1482 Layers[laImprovements].Lines := 0;1500 Layers[laImprovements].AddLine(I); 1501 end; 1502 end; 1503 kEnemyShipPart: 1504 begin 1505 Layers[laImprovements].Lines.Clear; 1483 1506 for I := 0 to nShipPart - 1 do 1484 1507 if MyRO.Ship[DipMem[Me].pContact].Parts[I] > 0 then 1485 1508 begin 1486 Layers[laImprovements].Add Code(I);1487 end; 1488 end; 1489 kGov :1509 Layers[laImprovements].AddLine(I); 1510 end; 1511 end; 1512 kGovernment: 1490 1513 for I := 1 to nGov - 1 do 1491 1514 if (GovPreq[I] <> preNA) and … … 1493 1516 then 1494 1517 begin 1495 Layers[laImprovements].Add Code(I);1518 Layers[laImprovements].AddLine(I); 1496 1519 end; 1497 1520 kMission: 1498 1521 for I := 0 to nSpyMission - 1 do 1499 1522 begin 1500 Layers[laImprovements].Add Code(I);1523 Layers[laImprovements].AddLine(I); 1501 1524 end; 1502 1525 end; … … 1504 1527 // Test if choice fitting to one screen 1505 1528 if Kind = kProject then 1506 if Layers[laImprovements].Lines + Layers[laWonders].Lines + Layers[laClasses].Lines<= MaxLines then1529 if Layers[laImprovements].Lines.Count + Layers[laWonders].Lines.Count + Layers[laClasses].Lines.Count <= MaxLines then 1507 1530 begin 1508 1531 // Add wonders to first page 1509 for I := 0 to Layers[laWonders].Lines - 1 do1510 Layers[laImprovements].Add Code(Layers[laWonders].Code[I]);1511 Layers[laWonders].Lines := 0;1512 1513 Layers[laImprovements].FirstShrinkedLine := Layers[laImprovements].Lines ;1532 for I := 0 to Layers[laWonders].Lines.Count - 1 do 1533 Layers[laImprovements].AddLine(Layers[laWonders].Lines[I].Code, Layers[laWonders].Lines[I].Model, Layers[laWonders].Lines[I].ModelSortValue); 1534 Layers[laWonders].Lines.Clear; 1535 1536 Layers[laImprovements].FirstShrinkedLine := Layers[laImprovements].Lines.Count; 1514 1537 1515 1538 // Add models to first page 1516 for I := 0 to Layers[laClasses].Lines - 1 do1517 Layers[laImprovements].Add Code(Layers[laClasses].Code[I]);1518 Layers[laClasses].Lines := 0;1539 for I := 0 to Layers[laClasses].Lines.Count - 1 do 1540 Layers[laImprovements].AddLine(Layers[laClasses].Lines[I].Code, Layers[laClasses].Lines[I].Model, Layers[laClasses].Lines[I].ModelSortValue); 1541 Layers[laClasses].Lines.Clear; 1519 1542 end; 1520 1543 end; … … 1524 1547 Kind := TestKind; 1525 1548 InitLines; 1526 if Layers[laImprovements].Lines = 0 then1549 if Layers[laImprovements].Lines.Count = 0 then 1527 1550 Result := -2 1528 else if Layers[laImprovements].Lines > 1 then1551 else if Layers[laImprovements].Lines.Count > 1 then 1529 1552 Result := -1 1530 1553 else 1531 Result := Layers[laImprovements]. Code[0];1554 Result := Layers[laImprovements].Lines[0].Code; 1532 1555 end; 1533 1556 … … 1556 1579 MultiPage := False; 1557 1580 for L := laWonders to High(TLayerIndex) do 1558 if Layers[L].Lines > 0 then begin1581 if Layers[L].Lines.Count > 0 then begin 1559 1582 MultiPage := True; 1560 1583 Break; … … 1565 1588 (Kind in [kProject, kAdvance, kFarAdvance]); 1566 1589 if (Kind = kAdvance) and (MyData.FarTech <> adNone) or (Kind = kModels) or 1567 (Kind = kE Models) then begin1590 (Kind = kEnemyModels) then begin 1568 1591 ScrollBar.SetBorderSpacing(56, 10, 10); 1569 1592 TitleHeight := WideFrame + 20; … … 1573 1596 end; 1574 1597 1575 DispLines := Layers[laImprovements].Lines ;1598 DispLines := Layers[laImprovements].Lines.Count; 1576 1599 for L := Low(TLayerIndex) to High(TLayerIndex) do 1577 if Layers[L].Lines > DispLines then1578 DispLines := Layers[L].Lines ;1600 if Layers[L].Lines.Count > DispLines then 1601 DispLines := Layers[L].Lines.Count; 1579 1602 if WideBottom then 1580 1603 begin … … 1595 1618 TechNameSpace := 224; 1596 1619 case Kind of 1597 kGov :1620 kGovernment: 1598 1621 InnerWidth := 272; 1599 1622 kCities, kCityEvents: 1600 1623 InnerWidth := 640 - 18; 1601 1624 kTribe: 1602 if Layers[laImprovements].Lines > MaxLines then1625 if Layers[laImprovements].Lines.Count > MaxLines then 1603 1626 InnerWidth := 280 + GetSystemMetrics(SM_CXVSCROLL) 1604 1627 else … … 1617 1640 InnerWidth := 104 - 33 + 15 + 8 + TechNameSpace + 24 + 1618 1641 GetSystemMetrics(SM_CXVSCROLL); 1619 kChooseTech, kChooseE Tech, kStealTech:1642 kChooseTech, kChooseEnemyTech, kStealTech: 1620 1643 InnerWidth := 104 - 33 + 15 + 8 + TechNameSpace + 1621 1644 GetSystemMetrics(SM_CXVSCROLL); … … 1644 1667 end; 1645 1668 1646 LayerImprovementsButton.Visible := MultiPage and (Layers[laImprovements].Lines > 0);1647 LayerWondersButton.Visible := MultiPage and (Layers[laWonders].Lines > 0);1648 LayerClassesButton.Visible := MultiPage and (Layers[laClasses].Lines > 0);1669 LayerImprovementsButton.Visible := MultiPage and (Layers[laImprovements].Lines.Count > 0); 1670 LayerWondersButton.Visible := MultiPage and (Layers[laWonders].Lines.Count > 0); 1671 LayerClassesButton.Visible := MultiPage and (Layers[laClasses].Lines.Count > 0); 1649 1672 1650 1673 if Kind = kProject then … … 1664 1687 Selected := -2; 1665 1688 ScienceNation := -1; 1666 ScrollBar.Init(Layer.Lines - 1, DispLines);1689 ScrollBar.Init(Layer.Lines.Count - 1, DispLines); 1667 1690 1668 1691 OffscreenPaint; … … 1677 1700 not ((Kind = kCities) and (ListKind = kCityEvents)) and 1678 1701 not ((Kind = kCityEvents) and (ListKind = kCities)) and 1679 not ((Kind = kModels) and (ListKind = kE Models)) and1680 not ((Kind = kE Models) and (ListKind = kModels));1702 not ((Kind = kModels) and (ListKind = kEnemyModels)) and 1703 not ((Kind = kEnemyModels) and (ListKind = kModels)); 1681 1704 1682 1705 Kind := ListKind; … … 1689 1712 kFarAdvance: 1690 1713 Caption := Phrases.Lookup('TITLE_FARTECH'); 1691 kModels, kE Models:1714 kModels, kEnemyModels: 1692 1715 Caption := Phrases.Lookup('FRMILREP'); 1693 kAllE Models:1716 kAllEnemyModels: 1694 1717 Caption := Phrases.Lookup('TITLE_EMODELS'); 1695 1718 kTribe: … … 1697 1720 kScience: 1698 1721 Caption := Phrases.Lookup('TITLE_SCIENCE'); 1699 kShipPart, kE ShipPart:1722 kShipPart, kEnemyShipPart: 1700 1723 Caption := Phrases.Lookup('TITLE_CHOOSESHIPPART'); 1701 kChooseTech, kChooseE Tech:1724 kChooseTech, kChooseEnemyTech: 1702 1725 Caption := Phrases.Lookup('TITLE_CHOOSETECH'); 1703 kChooseModel, kChooseE Model:1726 kChooseModel, kChooseEnemyModel: 1704 1727 Caption := Phrases.Lookup('TITLE_CHOOSEMODEL'); 1705 1728 kStealTech: 1706 1729 Caption := Phrases.Lookup('TITLE_CHOOSETECH'); 1707 kGov :1730 kGovernment: 1708 1731 Caption := Phrases.Lookup('TITLE_GOV'); 1709 1732 kMission: … … 1750 1773 end; 1751 1774 ToggleBtn.Visible := (Kind = kCities) and not Supervising or (Kind = kAdvance) 1752 and ShowFocus or (Kind = kModels) or (Kind = kE Models);1775 and ShowFocus or (Kind = kModels) or (Kind = kEnemyModels); 1753 1776 CloseBtn.Visible := not (Kind in MustChooseKind); 1754 1777 … … 1762 1785 end; 1763 1786 1764 procedure TListDlg.ShowNewContent_MilReport(NewMode: TWindowMode; P : Integer);1765 begin 1766 pView := P;1767 if P = Me then1787 procedure TListDlg.ShowNewContent_MilReport(NewMode: TWindowMode; Player: Integer); 1788 begin 1789 PlayerView := Player; 1790 if Player = Me then 1768 1791 ShowNewContent(NewMode, kModels) 1769 1792 else 1770 ShowNewContent(NewMode, kE Models);1793 ShowNewContent(NewMode, kEnemyModels); 1771 1794 end; 1772 1795 … … 1777 1800 else 1778 1801 begin 1779 Kind := kE Models;1780 pView := TComponent(Sender).Tag;1802 Kind := kEnemyModels; 1803 PlayerView := TComponent(Sender).Tag; 1781 1804 end; 1782 1805 InitLines; 1783 1806 Selected := -2; 1784 ScrollBar.Init(Layer.Lines - 1, DispLines);1807 ScrollBar.Init(Layer.Lines.Count - 1, DispLines); 1785 1808 OffscreenPaint; 1786 1809 Invalidate; … … 1795 1818 1796 1819 Selected := -2; 1797 ScrollBar.Init(Layer.Lines - 1, DispLines);1820 ScrollBar.Init(Layer.Lines.Count - 1, DispLines); 1798 1821 SmartUpdateContent; 1799 1822 end; … … 1820 1843 Invalidate; 1821 1844 end; 1822 kModels, kE Models:1845 kModels, kEnemyModels: 1823 1846 begin 1824 1847 EmptyMenu(Popup.Items); … … 1843 1866 M.Tag := p1; 1844 1867 M.OnClick := PlayerClick; 1845 if (Kind = kE Models) and (p1 = pView) then1868 if (Kind = kEnemyModels) and (p1 = PlayerView) then 1846 1869 M.Checked := True; 1847 1870 Popup.Items.Add(M); … … 1867 1890 begin 1868 1891 if Index < 0 then Index := 0; 1869 if Index > Layer.Lines - 1 then Index := Layer.Lines- 1;1892 if Index > Layer.Lines.Count - 1 then Index := Layer.Lines.Count - 1; 1870 1893 1871 1894 NewSelected := Index - ScrollBar.Position; 1872 1895 NewScrollBarPos := ScrollBar.Position; 1873 1896 1874 Over := NewSelected - Min(DispLines, Layer.Lines - NewScrollBarPos);1897 Over := NewSelected - Min(DispLines, Layer.Lines.Count - NewScrollBarPos); 1875 1898 if Over > 0 then begin 1876 1899 Inc(NewScrollBarPos, Over); … … 1885 1908 1886 1909 if (NewSelected <> Selected) or (NewScrollBarPos <> ScrollBar.Position) then begin 1887 if Selected >= 0 then Line(Canvas, Selected, False, False);1910 if Selected >= 0 then PaintLine(Canvas, Selected, False, False); 1888 1911 1889 1912 ScrollBar.Position := NewScrollBarPos; 1890 1913 Selected := NewSelected; 1891 1914 1892 Line(Canvas, Selected, False, True);1915 PaintLine(Canvas, Selected, False, True); 1893 1916 end; 1894 1917 end; … … 1904 1927 if Layer = Layers[laImprovements] then Layer := Layers[laClasses] 1905 1928 else if Layer = Layers[laClasses] then Layer := Layers[laWonders]; 1906 if Layer.Lines = 0 then Layer := Layers[laWonders];1929 if Layer.Lines.Count = 0 then Layer := Layers[laWonders]; 1907 1930 LayerImprovementsButton.Down := Layer = Layers[laImprovements]; 1908 1931 LayerWondersButton.Down := Layer = Layers[laWonders]; 1909 1932 LayerClassesButton.Down := Layer = Layers[laClasses]; 1910 ScrollBar.Init(Layer.Lines - 1, DispLines);1933 ScrollBar.Init(Layer.Lines.Count - 1, DispLines); 1911 1934 SetSelectionIndex(LastSelectionIndex); 1912 1935 SmartUpdateContent; … … 1918 1941 if Layer = Layers[laWonders] then Layer := Layers[laClasses] 1919 1942 else if Layer = Layers[laClasses] then Layer := Layers[laImprovements]; 1920 if Layer.Lines = 0 then Layer := Layers[laImprovements];1943 if Layer.Lines.Count = 0 then Layer := Layers[laImprovements]; 1921 1944 LayerImprovementsButton.Down := Layer = Layers[laImprovements]; 1922 1945 LayerWondersButton.Down := Layer = Layers[laWonders]; 1923 1946 LayerClassesButton.Down := Layer = Layers[laClasses]; 1924 ScrollBar.Init(Layer.Lines - 1, DispLines);1947 ScrollBar.Init(Layer.Lines.Count - 1, DispLines); 1925 1948 SetSelectionIndex(LastSelectionIndex); 1926 1949 SmartUpdateContent; … … 1937 1960 end else 1938 1961 if (Key = VK_END) or (Key = VK_NUMPAD1) then begin 1939 SetSelectionIndex(Layer.Lines );1962 SetSelectionIndex(Layer.Lines.Count); 1940 1963 end else 1941 1964 if (Key = VK_PRIOR) or (Key = VK_NUMPAD9) then begin … … 1948 1971 PaintBox1MouseDown(Self, TMouseButton.mbLeft, [ssLeft], 0, 0); 1949 1972 end else 1950 if (Key = VK_F2) and (Kind in [kModels, kE Models]) then // my key1973 if (Key = VK_F2) and (Kind in [kModels, kEnemyModels]) then // my key 1951 1974 // !!! toggle 1952 1975 else if (Key = VK_F3) and (Kind in [kCities, kCityEvents]) then // my key -
trunk/LocalPlayer/Term.pas
r670 r674 2300 2300 if MyRO.Happened and phChangeGov <> 0 then 2301 2301 begin 2302 ModalSelectDlg.ShowNewContent(wmModal, kGov );2302 ModalSelectDlg.ShowNewContent(wmModal, kGovernment); 2303 2303 Play('NEWGOV'); 2304 2304 Server(sSetGovernment, Me, ModalSelectDlg.Result, nil^); … … 3806 3806 begin 3807 3807 if MyRO.nEnemyModel > 0 then 3808 ListDlg.ShowNewContent(wmPersistent, kAllE Models);3808 ListDlg.ShowNewContent(wmPersistent, kAllEnemyModels); 3809 3809 end; 3810 3810 … … 4042 4042 if MyRO.Happened and phChangeGov <> 0 then 4043 4043 begin 4044 ModalSelectDlg.ShowNewContent(wmModal, kGov );4044 ModalSelectDlg.ShowNewContent(wmModal, kGovernment); 4045 4045 if ModalSelectDlg.Result >= 0 then 4046 4046 begin -
trunk/Protocol.pas
r614 r674 1829 1829 1830 1830 procedure MakeUnitInfo(P: Integer; const U: TUn; var ui: TUnitInfo); 1831 procedure MakeModelInfo(P, mix: Integer; const M: TModel; varmi: TModelInfo);1831 procedure MakeModelInfo(P, mix: Integer; const M: TModel; out mi: TModelInfo); 1832 1832 function IsSameModel(const mi1, mi2: TModelInfo): Boolean; 1833 1833 function SpecialTile(Loc, TerrType, lx: Integer): Integer; … … 1853 1853 end; 1854 1854 1855 procedure MakeModelInfo(P, mix: Integer; const M: TModel; varmi: TModelInfo);1855 procedure MakeModelInfo(P, mix: Integer; const M: TModel; out mi: TModelInfo); 1856 1856 var 1857 1857 I: Integer; -
trunk/Settings.lfm
r666 r674 115 115 TabStop = False 116 116 TopIndex = -1 117 OnKeyDown = ListKeyBindingsKeyDown 117 118 OnSelectionChange = ListKeyBindingsSelectionChange 118 119 end -
trunk/Settings.pas
r666 r674 7 7 Directories, DrawDlg, ButtonC, KeyBindings, Languages, ListBoxEx, 8 8 {$IFDEF DPI}Dpi.Forms, Dpi.Controls, Dpi.Graphics, Dpi.StdCtrls, System.UITypes{$ELSE} 9 Forms, Controls, Graphics, StdCtrls{$ENDIF} ;9 Forms, Controls, Graphics, StdCtrls{$ENDIF}, Controls; 10 10 11 11 type … … 46 46 procedure FormPaint(Sender: TObject); 47 47 procedure FormShow(Sender: TObject); 48 procedure ListKeyBindingsKeyDown(Sender: TObject; var Key: Word; 49 Shift: TShiftState); 48 50 procedure ListKeyBindingsSelectionChange(Sender: TObject; User: Boolean); 49 51 procedure ButtonOkClick(Sender: TObject); … … 298 300 end; 299 301 302 procedure TSettingsDlg.ListKeyBindingsKeyDown(Sender: TObject; var Key: Word; 303 Shift: TShiftState); 304 begin 305 KeyDown(Key, Shift); 306 end; 307 300 308 procedure TSettingsDlg.ListKeyBindingsSelectionChange(Sender: TObject; 301 309 User: Boolean);
Note:
See TracChangeset
for help on using the changeset viewer.