Changeset 304 for trunk


Ignore:
Timestamp:
Aug 11, 2019, 4:53:05 PM (5 years ago)
Author:
chronos
Message:
  • Fixed: First game system was rewritten by game system stored in game file.
  • Modified: Each TGame instance has own TGameSystem instance and different game systems are assigned.
Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Forms/UFormClient.pas

    r302 r304  
    146146  FormMove := TFormMove.Create(nil);
    147147  try
     148    // Set controls value maximum before value itself as the controls update their values mutually
    148149    if Update then FormMove.SpinEditOnce.MaxValue := CellFrom.GetAvialPower + CountOnce
    149150      else FormMove.SpinEditOnce.MaxValue := CellFrom.GetAvialPower;
  • trunk/Forms/UFormMain.lfm

    r295 r304  
    11object FormMain: TFormMain
    22  Left = 826
    3   Height = 621
     3  Height = 745
    44  Top = 419
    5   Width = 775
     5  Width = 930
    66  Caption = 'xTactics'
    7   ClientHeight = 596
    8   ClientWidth = 775
    9   DesignTimePPI = 120
     7  ClientHeight = 711
     8  ClientWidth = 930
     9  DesignTimePPI = 144
    1010  Menu = MainMenu1
    1111  OnActivate = FormActivate
     
    1515  OnKeyUp = FormKeyUp
    1616  OnShow = FormShow
    17   LCLVersion = '2.0.0.4'
     17  LCLVersion = '2.0.2.0'
    1818  WindowState = wsMaximized
    1919  object ToolBar1: TToolBar
    2020    Left = 0
    21     Height = 33
     21    Height = 40
    2222    Top = 0
    23     Width = 775
    24     ButtonHeight = 27
    25     ButtonWidth = 27
     23    Width = 930
     24    ButtonHeight = 32
     25    ButtonWidth = 32
    2626    Images = Core.ImageListSmall
    2727    ParentFont = False
     
    3636    end
    3737    object ToolButton3: TToolButton
    38       Left = 28
     38      Left = 33
    3939      Top = 2
    4040      Action = Core.AGameEnd
    4141    end
    4242    object ToolButton4: TToolButton
    43       Left = 55
     43      Left = 65
    4444      Top = 2
    4545      Action = Core.AGameRestart
    4646    end
    4747    object ToolButton5: TToolButton
    48       Left = 144
     48      Left = 173
    4949      Top = 2
    5050      Action = Core.ASettings
    5151    end
    5252    object ToolButton9: TToolButton
    53       Left = 140
    54       Height = 27
     53      Left = 167
     54      Height = 32
    5555      Top = 2
    5656      Style = tbsDivider
    5757    end
    5858    object ToolButton11: TToolButton
    59       Left = 86
     59      Left = 103
    6060      Top = 2
    6161      Action = Core.AGameLoad
    6262    end
    6363    object ToolButton12: TToolButton
    64       Left = 113
     64      Left = 135
    6565      Top = 2
    6666      Action = Core.AGameSave
    6767    end
    6868    object ToolButton13: TToolButton
    69       Left = 171
     69      Left = 205
    7070      Top = 2
    7171      Action = Core.AExit
    7272    end
    7373    object ToolButton2: TToolButton
    74       Left = 82
    75       Height = 27
     74      Left = 97
     75      Height = 32
    7676      Top = 2
    7777      Style = tbsDivider
     
    8080  object PanelMain: TPanel
    8181    Left = 0
    82     Height = 563
    83     Top = 33
    84     Width = 775
     82    Height = 671
     83    Top = 40
     84    Width = 930
    8585    Align = alClient
    8686    BevelOuter = bvNone
     
    9090  object MainMenu1: TMainMenu
    9191    Images = Core.ImageListSmall
    92     left = 187
    93     top = 40
     92    left = 224
     93    top = 48
    9494    object MenuItem1: TMenuItem
    9595      Caption = 'Game'
     
    210210    Interval = 20
    211211    OnTimer = Timer1Timer
    212     left = 107
    213     top = 219
     212    left = 128
     213    top = 263
    214214  end
    215215  object ActionList1: TActionList
    216216    Images = Core.ImageListSmall
    217     left = 233
    218     top = 127
     217    left = 280
     218    top = 152
    219219    object AToolBarBigIcons: TAction
    220220      Caption = 'Toolbar big icons'
     
    239239  end
    240240  object PopupMenuToolbar: TPopupMenu
    241     left = 377
    242     top = 82
     241    left = 452
     242    top = 98
    243243    object MenuItem18: TMenuItem
    244244      Action = AToolBarBigIcons
  • trunk/Forms/UFormNew.lfm

    r295 r304  
    11object FormNew: TFormNew
    22  Left = 478
    3   Height = 621
     3  Height = 745
    44  Top = 526
    5   Width = 1009
     5  Width = 1211
    66  Caption = 'New game'
    7   ClientHeight = 621
    8   ClientWidth = 1009
    9   Constraints.MinHeight = 418
    10   Constraints.MinWidth = 556
    11   DesignTimePPI = 120
     7  ClientHeight = 745
     8  ClientWidth = 1211
     9  Constraints.MinHeight = 502
     10  Constraints.MinWidth = 667
     11  DesignTimePPI = 144
    1212  OnClose = FormClose
    1313  OnCreate = FormCreate
     
    1515  OnShow = FormShow
    1616  Position = poMainFormCenter
    17   LCLVersion = '2.0.0.4'
     17  LCLVersion = '2.0.2.0'
    1818  object PageControl1: TPageControl
    19     Left = 3
    20     Height = 530
    21     Top = 50
    22     Width = 672
     19    Left = 4
     20    Height = 635
     21    Top = 60
     22    Width = 806
    2323    ActivePage = TabSheetRules
    2424    Align = alClient
    25     BorderSpacing.Around = 3
     25    BorderSpacing.Around = 4
    2626    ParentFont = False
    2727    TabIndex = 3
     
    3030    object TabSheetMode: TTabSheet
    3131      Caption = 'Mode'
    32       ClientHeight = 596
     32      ClientHeight = 595
    3333      ClientWidth = 796
    3434      ParentFont = False
     
    4545        TabOrder = 0
    4646        object RadioButtonModeLocal: TRadioButton
    47           Left = 8
     47          Left = 10
    4848          Height = 30
    49           Top = 12
     49          Top = 14
    5050          Width = 70
    5151          Caption = 'Local'
     
    5757        end
    5858        object RadioButtonModeNetworkServer: TRadioButton
    59           Left = 8
     59          Left = 10
    6060          Height = 30
    61           Top = 40
     61          Top = 48
    6262          Width = 156
    6363          Caption = 'Network server'
     
    6767        end
    6868        object RadioButtonModeNetworkClient: TRadioButton
    69           Left = 8
     69          Left = 10
    7070          Height = 30
    71           Top = 127
     71          Top = 152
    7272          Width = 151
    7373          Caption = 'Network client'
     
    7777        end
    7878        object EditServerAddress: TEdit
    79           Left = 20
     79          Left = 24
    8080          Height = 43
    81           Top = 93
    82           Width = 183
     81          Top = 112
     82          Width = 220
    8383          ParentFont = False
    8484          TabOrder = 3
    8585        end
    8686        object SpinEditServerPort: TSpinEdit
    87           Left = 213
     87          Left = 256
    8888          Height = 43
    89           Top = 93
    90           Width = 66
     89          Top = 112
     90          Width = 79
    9191          MaxValue = 65535
    9292          ParentFont = False
     
    9494        end
    9595        object Label11: TLabel
    96           Left = 213
    97           Height = 26
    98           Top = 73
     96          Left = 256
     97          Height = 26
     98          Top = 88
    9999          Width = 41
    100100          Caption = 'Port:'
     
    103103        end
    104104        object Label12: TLabel
    105           Left = 20
    106           Height = 26
    107           Top = 73
     105          Left = 24
     106          Height = 26
     107          Top = 88
    108108          Width = 74
    109109          Caption = 'Address:'
     
    112112        end
    113113        object ListViewServers: TListView
    114           Left = 22
    115           Height = 403
    116           Top = 151
    117           Width = 278
     114          Left = 26
     115          Height = 365
     116          Top = 181
     117          Width = 334
    118118          Anchors = [akTop, akLeft, akBottom]
    119119          Columns = <         
    120120            item
    121121              Caption = 'Name'
    122               Width = 83
     122              Width = 100
    123123            end         
    124124            item
    125125              Caption = 'Address'
    126               Width = 182
     126              Width = 219
    127127            end>
    128128          MultiSelect = True
     
    140140        end
    141141        object Button1: TButton
    142           Left = 22
    143           Height = 26
    144           Top = 563
    145           Width = 78
     142          Left = 26
     143          Height = 31
     144          Top = 557
     145          Width = 94
    146146          Action = AServerAdd
    147147          Anchors = [akLeft, akBottom]
     
    150150        end
    151151        object Button2: TButton
    152           Left = 200
    153           Height = 26
    154           Top = 563
    155           Width = 78
     152          Left = 240
     153          Height = 31
     154          Top = 557
     155          Width = 94
    156156          Action = AServerRemove
    157157          Anchors = [akLeft, akBottom]
     
    160160        end
    161161        object Button3: TButton
    162           Left = 113
    163           Height = 25
    164           Top = 563
    165           Width = 78
     162          Left = 136
     163          Height = 30
     164          Top = 556
     165          Width = 94
    166166          Action = AServerModify
    167167          Anchors = [akLeft, akBottom]
     
    173173    object TabSheetPlayers: TTabSheet
    174174      Caption = 'Players'
    175       ClientHeight = 596
     175      ClientHeight = 595
    176176      ClientWidth = 796
    177177      ParentFont = False
     
    189189    object TabSheetMap: TTabSheet
    190190      Caption = 'Map'
    191       ClientHeight = 596
     191      ClientHeight = 595
    192192      ClientWidth = 796
    193193      OnShow = TabSheetMapShow
     
    205205        TabOrder = 0
    206206        object Label1: TLabel
    207           Left = 7
    208           Height = 26
    209           Top = 8
     207          Left = 8
     208          Height = 26
     209          Top = 10
    210210          Width = 95
    211211          Caption = 'Map width:'
     
    214214        end
    215215        object Label2: TLabel
    216           Left = 7
    217           Height = 26
    218           Top = 48
     216          Left = 8
     217          Height = 26
     218          Top = 58
    219219          Width = 102
    220220          Caption = 'Map height:'
     
    223223        end
    224224        object SpinEditMapSizeX: TSpinEdit
    225           Left = 107
     225          Left = 128
    226226          Height = 43
    227           Top = 3
    228           Width = 82
     227          Top = 4
     228          Width = 98
    229229          MinValue = 2
    230230          OnChange = SpinEditMapSizeXChange
     
    234234        end
    235235        object SpinEditMapSizeY: TSpinEdit
    236           Left = 107
     236          Left = 128
    237237          Height = 43
    238           Top = 46
    239           Width = 82
     238          Top = 55
     239          Width = 98
    240240          MinValue = 2
    241241          OnChange = SpinEditMapSizeYChange
     
    245245        end
    246246        object TrackBarSizeX: TTrackBar
    247           Left = 200
    248           Height = 48
    249           Top = 7
    250           Width = 587
     247          Left = 240
     248          Height = 58
     249          Top = 8
     250          Width = 545
    251251          Max = 100
    252252          Min = 2
     
    259259        end
    260260        object TrackBarSizeY: TTrackBar
    261           Left = 200
    262           Height = 48
    263           Top = 41
    264           Width = 587
     261          Left = 240
     262          Height = 58
     263          Top = 49
     264          Width = 545
    265265          Max = 100
    266266          Min = 2
     
    273273        end
    274274        object Label5: TLabel
    275           Left = 7
    276           Height = 26
    277           Top = 87
     275          Left = 8
     276          Height = 26
     277          Top = 104
    278278          Width = 83
    279279          Caption = 'Grid type:'
     
    282282        end
    283283        object ComboBoxGridType: TComboBox
    284           Left = 122
     284          Left = 146
    285285          Height = 28
    286           Top = 87
    287           Width = 253
    288           ItemHeight = 20
     286          Top = 104
     287          Width = 304
     288          ItemHeight = 0
    289289          Items.Strings = (
    290290            'Hexagonal'
     
    300300        end
    301301        object ComboBoxMapShape: TComboBox
    302           Left = 122
     302          Left = 146
    303303          Height = 28
    304           Top = 120
    305           Width = 253
    306           ItemHeight = 20
     304          Top = 144
     305          Width = 304
     306          ItemHeight = 0
    307307          Items.Strings = (
    308308            'Hexagonal'
     
    316316        end
    317317        object Label8: TLabel
    318           Left = 7
    319           Height = 26
    320           Top = 120
     318          Left = 8
     319          Height = 26
     320          Top = 144
    321321          Width = 98
    322322          Caption = 'Map shape:'
     
    325325        end
    326326        object CheckBoxSymetricMap: TCheckBox
    327           Left = 7
    328           Height = 22
    329           Top = 207
    330           Width = 389
     327          Left = 8
     328          Height = 26
     329          Top = 248
     330          Width = 308
    331331          Anchors = [akTop, akLeft, akRight]
    332332          AutoSize = False
     
    337337        end
    338338        object SpinEditVoidPercent: TSpinEdit
    339           Left = 180
     339          Left = 216
    340340          Height = 43
    341           Top = 262
    342           Width = 88
     341          Top = 314
     342          Width = 106
    343343          MinValue = 1
    344344          OnChange = SpinEditVoidPercentChange
     
    348348        end
    349349        object CheckBoxVoid: TCheckBox
    350           Left = 7
     350          Left = 8
    351351          Height = 30
    352           Top = 270
     352          Top = 324
    353353          Width = 189
    354354          Caption = 'Inaccessible places'
     
    358358        end
    359359        object CheckBoxCity: TCheckBox
    360           Left = 7
     360          Left = 8
    361361          Height = 30
    362           Top = 307
     362          Top = 368
    363363          Width = 73
    364364          Caption = 'Cities'
     
    368368        end
    369369        object SpinEditCityPercent: TSpinEdit
    370           Left = 180
     370          Left = 216
    371371          Height = 43
    372           Top = 300
    373           Width = 88
     372          Top = 360
     373          Width = 106
    374374          MinValue = 1
    375375          OnChange = SpinEditCityPercentChange
     
    379379        end
    380380        object Label4: TLabel
    381           Left = 276
    382           Height = 26
    383           Top = 307
     381          Left = 331
     382          Height = 26
     383          Top = 368
    384384          Width = 15
    385385          Caption = '%'
     
    388388        end
    389389        object Label3: TLabel
    390           Left = 276
    391           Height = 26
    392           Top = 270
     390          Left = 331
     391          Height = 26
     392          Top = 324
    393393          Width = 15
    394394          Caption = '%'
     
    397397        end
    398398        object SpinEditNeutralUnits: TSpinEdit
    399           Left = 260
     399          Left = 312
    400400          Height = 43
    401           Top = 407
    402           Width = 82
     401          Top = 488
     402          Width = 98
    403403          MaxValue = 99
    404404          OnChange = SpinEditNeutralUnitsChange
     
    408408        end
    409409        object Label7: TLabel
    410           Left = 7
    411           Height = 26
    412           Top = 413
     410          Left = 8
     411          Height = 26
     412          Top = 496
    413413          Width = 227
    414414          Caption = 'Max random neutral units:'
     
    417417        end
    418418        object EditImageFile: TEdit
    419           Left = 120
     419          Left = 144
    420420          Height = 43
    421           Top = 153
    422           Width = 574
     421          Top = 184
     422          Width = 530
    423423          Anchors = [akTop, akLeft, akRight]
    424424          OnChange = EditImageFileChange
     
    427427        end
    428428        object ButtonImageBrowse: TButton
    429           Left = 700
    430           Height = 32
    431           Top = 158
    432           Width = 82
     429          Left = 681
     430          Height = 38
     431          Top = 190
     432          Width = 98
    433433          Anchors = [akTop, akRight]
    434434          Caption = 'Browse'
     
    438438        end
    439439        object Label9: TLabel
    440           Left = 7
    441           Height = 26
    442           Top = 159
     440          Left = 8
     441          Height = 26
     442          Top = 191
    443443          Width = 90
    444444          Caption = 'Image file:'
     
    447447        end
    448448        object CheckBoxBridges: TCheckBox
    449           Left = 7
     449          Left = 8
    450450          Height = 30
    451           Top = 340
     451          Top = 408
    452452          Width = 212
    453453          Caption = 'Bridges between cells'
     
    457457        end
    458458        object SpinEditMaxPower: TSpinEdit
    459           Left = 260
     459          Left = 312
    460460          Height = 43
    461           Top = 367
    462           Width = 82
     461          Top = 440
     462          Width = 98
    463463          MaxValue = 1000000
    464464          MinValue = 1
     
    469469        end
    470470        object Label10: TLabel
    471           Left = 7
    472           Height = 26
    473           Top = 373
     471          Left = 8
     472          Height = 26
     473          Top = 448
    474474          Width = 156
    475475          Caption = 'Max units per cell:'
     
    478478        end
    479479        object CheckBoxCyclicMap: TCheckBox
    480           Left = 7
    481           Height = 22
    482           Top = 236
    483           Width = 389
     480          Left = 8
     481          Height = 26
     482          Top = 283
     483          Width = 308
    484484          Anchors = [akTop, akLeft, akRight]
    485485          AutoSize = False
     
    490490        end
    491491        object Image1: TImage
    492           Left = 349
    493           Height = 263
    494           Top = 227
    495           Width = 432
     492          Left = 419
     493          Height = 316
     494          Top = 272
     495          Width = 359
    496496          Anchors = [akTop, akLeft, akRight]
    497497          OnResize = Image1Resize
    498498        end
    499499        object Label15: TLabel
    500           Left = 349
    501           Height = 26
    502           Top = 200
     500          Left = 419
     501          Height = 26
     502          Top = 240
    503503          Width = 71
    504504          Caption = 'Preview:'
     
    507507        end
    508508        object ButtonRandomize: TButton
    509           Left = 8
    510           Height = 32
    511           Top = 450
    512           Width = 128
     509          Left = 10
     510          Height = 38
     511          Top = 540
     512          Width = 154
    513513          Caption = 'Randomize'
    514514          OnClick = ButtonRandomizeClick
     
    520520    object TabSheetRules: TTabSheet
    521521      Caption = 'Rules'
    522       ClientHeight = 497
    523       ClientWidth = 664
     522      ClientHeight = 595
     523      ClientWidth = 796
    524524      ParentFont = False
    525525      object Panel4: TPanel
    526526        Left = 0
    527         Height = 497
     527        Height = 595
    528528        Top = 0
    529         Width = 664
     529        Width = 796
    530530        Align = alClient
    531531        BevelOuter = bvNone
    532         ClientHeight = 497
    533         ClientWidth = 664
     532        ClientHeight = 595
     533        ClientWidth = 796
    534534        ParentFont = False
    535535        TabOrder = 0
    536536        object RadioGroupGrowCells: TRadioGroup
    537           Left = 12
    538           Height = 88
    539           Top = 87
    540           Width = 260
     537          Left = 14
     538          Height = 106
     539          Top = 104
     540          Width = 312
    541541          AutoFill = True
    542542          Caption = 'Growing cells'
     
    548548          ChildSizing.Layout = cclLeftToRightThenTopToBottom
    549549          ChildSizing.ControlsPerLine = 1
    550           ClientHeight = 63
    551           ClientWidth = 256
     550          ClientHeight = 79
     551          ClientWidth = 310
    552552          Items.Strings = (
    553553            'None'
     
    559559        end
    560560        object Label6: TLabel
    561           Left = 7
    562           Height = 20
    563           Top = 207
    564           Width = 94
     561          Left = 8
     562          Height = 26
     563          Top = 248
     564          Width = 120
    565565          Caption = 'Win objective:'
    566566          ParentColor = False
     
    568568        end
    569569        object ComboBoxWinObjective: TComboBox
    570           Left = 187
    571           Height = 28
    572           Top = 203
    573           Width = 273
    574           ItemHeight = 20
     570          Left = 224
     571          Height = 38
     572          Top = 244
     573          Width = 328
     574          ItemHeight = 0
    575575          Items.Strings = (
    576576            'Defeat all oponents'
     
    585585        end
    586586        object RadioGroupGrowAmount: TRadioGroup
    587           Left = 12
    588           Height = 63
    589           Top = 13
    590           Width = 254
     587          Left = 14
     588          Height = 76
     589          Top = 16
     590          Width = 305
    591591          AutoFill = True
    592592          Caption = 'Per turn grow amount'
     
    598598          ChildSizing.Layout = cclLeftToRightThenTopToBottom
    599599          ChildSizing.ControlsPerLine = 1
    600           ClientHeight = 38
    601           ClientWidth = 250
     600          ClientHeight = 49
     601          ClientWidth = 303
    602602          Items.Strings = (
    603603            'By one'
     
    608608        end
    609609        object CheckBoxFogOfWar: TCheckBox
    610           Left = 280
    611           Height = 24
    612           Top = 20
    613           Width = 95
     610          Left = 336
     611          Height = 30
     612          Top = 24
     613          Width = 115
    614614          Caption = 'Fog of war'
    615615          ParentFont = False
     
    617617        end
    618618        object PageControlWinObjective: TPageControl
    619           Left = 10
    620           Height = 65
    621           Top = 242
    622           Width = 645
     619          Left = 12
     620          Height = 78
     621          Top = 290
     622          Width = 773
    623623          ActivePage = TabSheetCaptureEntireMap
    624624          Anchors = [akTop, akLeft, akRight]
     
    638638            ParentFont = False
    639639            object Label14: TLabel
    640               Left = 7
     640              Left = 8
    641641              Height = 20
    642               Top = 13
     642              Top = 16
    643643              Width = 125
    644644              Caption = 'Special cells count:'
     
    647647            end
    648648            object SpinEditSpecialCells: TSpinEdit
    649               Left = 197
     649              Left = 236
    650650              Height = 28
    651               Top = 7
    652               Width = 132
     651              Top = 8
     652              Width = 158
    653653              MaxValue = 1000
    654654              MinValue = 1
     
    663663            ParentFont = False
    664664            object Label13: TLabel
    665               Left = 7
     665              Left = 8
    666666              Height = 20
    667               Top = 13
     667              Top = 16
    668668              Width = 111
    669669              Caption = 'Number of turns:'
     
    672672            end
    673673            object SpinEditTurns: TSpinEdit
    674               Left = 197
     674              Left = 236
    675675              Height = 28
    676               Top = 7
    677               Width = 132
     676              Top = 8
     677              Width = 158
    678678              MaxValue = 1000
    679679              MinValue = 1
     
    695695  object PanelButtons: TPanel
    696696    Left = 0
    697     Height = 38
    698     Top = 583
    699     Width = 1009
     697    Height = 46
     698    Top = 699
     699    Width = 1211
    700700    Align = alBottom
    701701    BevelOuter = bvNone
    702     ClientHeight = 38
    703     ClientWidth = 1009
     702    ClientHeight = 46
     703    ClientWidth = 1211
    704704    ParentFont = False
    705705    TabOrder = 1
    706706    object ButtonOk: TButton
    707       Left = 853
    708       Height = 21
    709       Top = 5
    710       Width = 62
     707      Left = 1024
     708      Height = 25
     709      Top = 7
     710      Width = 74
    711711      Anchors = [akRight, akBottom]
    712712      Caption = 'Ok'
     
    717717    end
    718718    object ButtonCancel: TButton
    719       Left = 939
    720       Height = 21
    721       Top = 5
    722       Width = 62
     719      Left = 1127
     720      Height = 25
     721      Top = 7
     722      Width = 74
    723723      Anchors = [akRight, akBottom]
    724724      Caption = 'Cancel'
     
    729729  end
    730730  object PanelChat: TPanel
    731     Left = 683
    732     Height = 536
    733     Top = 47
    734     Width = 326
     731    Left = 820
     732    Height = 643
     733    Top = 56
     734    Width = 391
    735735    Align = alRight
    736736    BevelOuter = bvNone
     
    739739  end
    740740  object Splitter1: TSplitter
    741     Left = 678
    742     Height = 536
    743     Top = 47
    744     Width = 5
     741    Left = 814
     742    Height = 643
     743    Top = 56
     744    Width = 6
    745745    Align = alRight
    746746    ResizeAnchor = akRight
     
    748748  object Panel5: TPanel
    749749    Left = 0
    750     Height = 47
     750    Height = 56
    751751    Top = 0
    752     Width = 1009
     752    Width = 1211
    753753    Align = alTop
    754754    BevelOuter = bvNone
    755     ClientHeight = 47
    756     ClientWidth = 1009
     755    ClientHeight = 56
     756    ClientWidth = 1211
    757757    ParentFont = False
    758758    TabOrder = 4
    759759    object Label16: TLabel
    760       Left = 10
    761       Height = 20
    762       Top = 13
    763       Width = 91
     760      Left = 12
     761      Height = 26
     762      Top = 16
     763      Width = 121
    764764      Caption = 'Game system:'
    765765      ParentColor = False
     
    767767    end
    768768    object ComboBoxGameSystem: TComboBox
    769       Left = 147
    770       Height = 28
    771       Top = 8
    772       Width = 212
    773       ItemHeight = 20
     769      Left = 176
     770      Height = 42
     771      Top = 10
     772      Width = 254
     773      ItemHeight = 0
    774774      OnChange = ComboBoxGameSystemChange
    775775      ParentFont = False
     
    778778    end
    779779    object ButtonGameSystems: TButton
    780       Left = 369
    781       Height = 32
    782       Top = 10
    783       Width = 94
     780      Left = 443
     781      Height = 38
     782      Top = 12
     783      Width = 113
    784784      Caption = 'Manage'
    785785      OnClick = ButtonGameSystemsClick
     
    790790  object ActionList1: TActionList
    791791    Images = Core.ImageListSmall
    792     left = 720
    793     top = 180
     792    left = 864
     793    top = 216
    794794    object AServerAdd: TAction
    795795      Caption = 'Add'
     
    806806  end
    807807  object OpenPictureDialog1: TOpenPictureDialog
    808     left = 720
    809     top = 300
     808    left = 864
     809    top = 360
    810810  end
    811811  object PopupMenuServers: TPopupMenu
    812     left = 720
    813     top = 113
     812    left = 864
     813    top = 136
    814814    object MenuItem4: TMenuItem
    815815      Action = AServerAdd
     
    825825    Interval = 500
    826826    OnTimer = TimerMapPreviewTimer
    827     left = 720
    828     top = 372
     827    left = 864
     828    top = 446
    829829  end
    830830end
  • trunk/Forms/UFormNew.pas

    r298 r304  
    304304    SpinEditTurns.Value := StayAliveForDefinedTurns;
    305305    SpinEditSpecialCells.Value := SpecialCaptureCellCount;
    306     GameSystem := Game.GameSystem;
    307     ComboBoxGameSystem.ItemIndex := ComboBoxGameSystem.Items.IndexOf(GameSystemName);
     306    ComboBoxGameSystem.ItemIndex := ComboBoxGameSystem.Items.IndexOf(GameSystem.GetName);
    308307    if (ComboBoxGameSystem.ItemIndex = -1) and (ComboBoxGameSystem.Items.Count > 0) then
    309308      ComboBoxGameSystem.ItemIndex := 0;
     
    335334    StayAliveForDefinedTurns := SpinEditTurns.Value;
    336335    SpecialCaptureCellCount := SpinEditSpecialCells.Value;
    337     if ComboBoxGameSystem.ItemIndex <> -1 then begin
    338       GameSystem := TGameSystem(ComboBoxGameSystem.Items.Objects[ComboBoxGameSystem.ItemIndex]);
    339       GameSystemName := GameSystem.GetName;
    340     end else begin
    341       GameSystem := nil;
    342       GameSystemName := '';
    343     end;
    344336  end;
    345337end;
     
    397389begin
    398390  Image1.Height := Round(Image1.Width * SpinEditMapSizeY.Value / SpinEditMapSizeX.Value);
    399   GamePreview.GameSystem := Core.GameSystems.First;
     391  GamePreview.GameSystem.Assign(FServer.Game.GameSystem);
    400392  SaveGame(GamePreview);
    401393  GamePreview.PostConfig;
     
    567559procedure TFormNew.ComboBoxGameSystemChange(Sender: TObject);
    568560begin
    569   FServer.Game.GameSystem := TGameSystem(ComboBoxGameSystem.Items.Objects[ComboBoxGameSystem.ItemIndex]);
     561  FServer.Game.GameSystem.Assign(TGameSystem(ComboBoxGameSystem.Items.Objects[ComboBoxGameSystem.ItemIndex]));
    570562  UpdateInterface;
    571563  MapPreviewRedraw;
  • trunk/Systems/Dune 2.xts

    r292 r304  
    4646      <ViewRange>0</ViewRange>
    4747    </UnitKind>
     48    <UnitKind>
     49      <Id>0</Id>
     50      <Name>Harvester</Name>
     51      <Stack>0</Stack>
     52      <Cost>0</Cost>
     53      <Moves>1</Moves>
     54      <PowerAttack>0</PowerAttack>
     55      <PowerDefense>0</PowerDefense>
     56      <ViewRange>1</ViewRange>
     57    </UnitKind>
    4858  </UnitKinds>
    4959  <BuildingKinds/>
  • trunk/UCore.lfm

    r301 r304  
    28212821    AppName = 'xTactics'
    28222822    Description = 'Turn-based strategy game inspired by classic Risk board game. The game is highly configurable to allow to adjust battle field and game rules.'
    2823     ReleaseDate = 43656
     2823    ReleaseDate = 43688
    28242824    RegistryKey = '\Software\xTactics'
    28252825    RegistryRoot = rrKeyCurrentUser
  • trunk/UCore.pas

    r301 r304  
    616616  end;
    617617  if GameSystems.Count > 0 then begin
    618     GameSettings.GameSystem := GameSystems.First;
    619     Game.GameSystem := GameSystems.First;
     618    GameSettings.GameSystem.Assign(GameSystems.First);
     619    Game.GameSystem.Assign(GameSystems.First);
    620620  end;
    621621end;
     
    740740    // GameSystemName needs to be loaded before game systems config itself.
    741741    // Players reference Nations from game system.
    742     GameSettings.GameSystemName := string(XMLConfig1.GetValue(DOMString('Game/GameSystemName'), DOMString('HexWars')));
    743     GameSettings.GameSystem := GameSystems.SearchByName(GameSettings.GameSystemName);
    744 
     742    GameSettings.GameSystem.Assign(GameSystems.SearchByName(string(XMLConfig1.GetValue(DOMString('Game/GameSystemName'), DOMString('HexWars')))));
    745743    GameSettings.LoadConfig(XMLConfig1, 'Game');
    746     if not Assigned(GameSettings.GameSystem) then
    747       GameSettings.GameSystem := GameSystems.First;
    748744    Server.LoadConfig(XMLConfig1, 'Server');
    749745    ServerList.LoadConfig(XmlConfig1, 'ServerList');
  • trunk/UGame.pas

    r301 r304  
    3737  TGame = class
    3838  private
    39     FGameSystem: TGameSystem;
    4039    FMapType: TMapType;
    4140    FOnChange: TNotifyEvent;
     
    4948    ProbabilityMatrix: array of array of Single;
    5049    procedure RecordTurnStats;
    51     procedure SetGameSystem(AValue: TGameSystem);
    5250    procedure SetMapType(AValue: TMapType);
    5351    procedure SetRunning(AValue: Boolean);
     
    6159    procedure WinObjectiveMapPrepare;
    6260  public
     61    GameSystem: TGameSystem;
    6362    FileName: string;
    6463    DevelMode: Boolean;
     
    8786    StoredRandSeed: Cardinal;
    8887    GeneratePlayers: Boolean;
    89     GameSystemName: string;
    9088    procedure PostConfig;
    9189    procedure Assign(Source: TGame);
     
    105103    property Running: Boolean read FRunning write SetRunning;
    106104    property MapType: TMapType read FMapType write SetMapType;
    107     property GameSystem: TGameSystem read FGameSystem write SetGameSystem;
    108105  published
    109106    property OnMoveUpdated: TMoveUpdatedEvent read FOnMoveUpdated write FOnMoveUpdated;
     
    504501  BridgeEnabled := Source.BridgeEnabled;
    505502  MaxPower := Source.MaxPower;
    506   GameSystem := Source.GameSystem;
     503  GameSystem.Assign(Source.GameSystem);
    507504end;
    508505
     
    532529    SetValue(DOMString(Path + '/MaxPower'), MaxPower);
    533530    Players.SaveConfig(Config, Path + '/Players');
    534     SetValue(DOMString(Path + '/GameSystemName'), DOMString(GameSystemName));
     531    SetValue(DOMString(Path + '/GameSystemName'), DOMString(GameSystem.GetName));
    535532  end;
    536533end;
     
    733730end;
    734731
    735 procedure TGame.SetGameSystem(AValue: TGameSystem);
    736 begin
    737   if FGameSystem = AValue then Exit;
    738   FGameSystem := AValue;
    739   if Assigned(FGameSystem) then GameSystemName := FGameSystem.GetName
    740     else GameSystemName := '';
    741 end;
    742 
    743732procedure TGame.NextPlayer;
    744733var
     
    860849constructor TGame.Create;
    861850begin
     851  GameSystem := TGameSystem.Create;
    862852  Units := TUnits.Create;
    863853  Units.Game := Self;
     
    889879  FreeAndNil(Buildings);
    890880  FreeAndNil(Units);
     881  FreeAndNil(GameSystem);
    891882  inherited Destroy;
    892883end;
Note: See TracChangeset for help on using the changeset viewer.