Changeset 22 for trunk/UFormMain.pas


Ignore:
Timestamp:
Mar 1, 2014, 5:56:14 PM (11 years ago)
Author:
chronos
Message:
  • Added: New Core unit which is responsible for non-visual functionality. FormMain will handle main form related stuff.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/UFormMain.pas

    r21 r22  
    1717
    1818  TFormMain = class(TForm)
    19     AGameRestart: TAction;
    20     AGameEndTurn: TAction;
    21     AGameEnd: TAction;
    22     AExit: TAction;
    23     AGameNew: TAction;
    24     ActionList1: TActionList;
    2519    MainMenu1: TMainMenu;
    2620    MenuItem1: TMenuItem;
     
    3327    PaintBox1: TPaintBox;
    3428    Timer1: TTimer;
    35     procedure AExitExecute(Sender: TObject);
    36     procedure AGameEndExecute(Sender: TObject);
    37     procedure AGameEndTurnExecute(Sender: TObject);
    38     procedure AGameNewExecute(Sender: TObject);
    39     procedure AGameRestartExecute(Sender: TObject);
     29    procedure FormActivate(Sender: TObject);
    4030    procedure FormCreate(Sender: TObject);
    4131    procedure FormDestroy(Sender: TObject);
     
    6151    MoveActive: Boolean;
    6252    RedrawPending: Boolean;
    63     procedure DoOnMove(CellFrom, CellTo: TCell; var CountOnce, CountRepeat: Integer);
    64     procedure DoOnWin(Player: TPlayer);
    6553  public
    66     Game: TGame;
    6754    procedure Redraw;
    6855  end;
     
    7461
    7562uses
    76   UFormNew, UFormMove;
    77 
    78 resourcestring
    79   SPlayerWins = 'Player %s wins';
     63  UFormNew, UFormMove, UCore;
    8064
    8165{$R *.lfm}
     
    8569procedure TFormMain.PaintBox1Paint(Sender: TObject);
    8670begin
    87   if Game.Running then
    88   with Game.CurrentPlayer do begin
     71  if Core.Game.Running then
     72  with Core.Game.CurrentPlayer do begin
    8973    ViewSize := Point(PaintBox1.Width, PaintBox1.Height);
    9074    Paint(PaintBox1);
     
    9882procedure TFormMain.PaintBox1Resize(Sender: TObject);
    9983begin
    100   if Assigned(Game.CurrentPlayer) then
    101   with Game.CurrentPlayer do
     84  if Assigned(Core.Game.CurrentPlayer) then
     85  with Core.Game.CurrentPlayer do
    10286    ViewSize := Point(PaintBox1.Width, PaintBox1.Height);
    10387  Redraw;
     
    11397
    11498    NewCaption := 'xTactics';
    115     if Assigned(Game.CurrentPlayer) then
    116       NewCaption := Game.CurrentPlayer.Name + ' - turn ' + IntToStr(Game.TurnCounter) + ' - ' + NewCaption;
     99    if Assigned(Core.Game.CurrentPlayer) then
     100      NewCaption := Core.Game.CurrentPlayer.Name + ' - turn ' + IntToStr(Core.Game.TurnCounter) + ' - ' + NewCaption;
    117101    Caption := NewCaption;
    118102  end;
    119 end;
    120 
    121 procedure TFormMain.DoOnMove(CellFrom, CellTo: TCell; var CountOnce,
    122   CountRepeat: Integer);
    123 begin
    124   FormMove.SpinEditOnce.Value := CountOnce;
    125   FormMove.SpinEditOnce.MaxValue := CellFrom.GetAvialPower;
    126   FormMove.SpinEditRepeat.Value := CountRepeat;
    127   FormMove.SpinEditRepeat.MaxValue := Game.Map.MaxPower;
    128   if FormMove.ShowModal = mrOk then begin
    129     CountOnce := FormMove.SpinEditOnce.Value;
    130     CountRepeat := FormMove.SpinEditRepeat.Value;
    131   end;
    132 end;
    133 
    134 procedure TFormMain.DoOnWin(Player: TPlayer);
    135 begin
    136   ShowMessage(Format(SPlayerWins, [Player.Name]));
    137103end;
    138104
     
    144110procedure TFormMain.FormCreate(Sender: TObject);
    145111begin
    146   Game := TGame.Create;
    147   Game.OnMove := DoOnMove;
    148   Game.OnWin := DoOnWin;
    149112end;
    150113
    151 procedure TFormMain.AExitExecute(Sender: TObject);
     114procedure TFormMain.FormActivate(Sender: TObject);
    152115begin
    153   Application.Terminate;
    154 end;
    155 
    156 procedure TFormMain.AGameEndExecute(Sender: TObject);
    157 begin
    158   Game.Running := False;
    159   Redraw;
    160 end;
    161 
    162 procedure TFormMain.AGameEndTurnExecute(Sender: TObject);
    163 begin
    164   Game.NextTurn;
    165   Redraw;
    166   while Game.Running and (Game.CurrentPlayer.Mode <> pmHuman) do begin
    167     Game.NextTurn;
    168     Redraw;
     116  if not Core.Initialized then begin
     117    Core.Init;
    169118  end;
    170 end;
    171 
    172 procedure TFormMain.AGameNewExecute(Sender: TObject);
    173 begin
    174   FormNew.Load(Game);
    175   if FormNew.ShowModal = mrOk then begin
    176     FormNew.Save(Game);
    177     Game.New;
    178     Game.Running := True;
    179     Redraw;
    180   end;
    181 end;
    182 
    183 procedure TFormMain.AGameRestartExecute(Sender: TObject);
    184 begin
    185   Game.New;
    186   Game.Running := True;
    187   Redraw;
    188119end;
    189120
    190121procedure TFormMain.FormDestroy(Sender: TObject);
    191122begin
    192   FreeAndNil(Game);
    193123end;
    194124
    195125procedure TFormMain.FormShow(Sender: TObject);
    196 var
    197   I: Integer;
    198126begin
    199   for I := 0 to Game.Players.Count - 1 do
    200     TPlayer(Game.Players[I]).ViewSize := Point(PaintBox1.Canvas.Width, PaintBox1.Canvas.Height);
    201   Game.New;
    202   Game.Running := True;
    203127  Redraw;
    204128end;
     
    208132begin
    209133  if Button = mbLeft then begin
    210     if Game.CurrentPlayer.Mode = pmHuman then begin
     134    if Core.Game.CurrentPlayer.Mode = pmHuman then begin
    211135      StartMousePoint := Point(X, Y);
    212       StartViewPoint := Game.CurrentPlayer.CellPos;
     136      StartViewPoint := Core.Game.CurrentPlayer.CellPos;
    213137      MoveActive := True;
    214138    end;
     
    225149begin
    226150  if MoveActive then begin
    227     if Game.CurrentPlayer.Mode = pmHuman then begin
    228       Game.CurrentPlayer.CellPos := Point(Trunc(StartViewPoint.X + (StartMousePoint.X - X) / Game.CurrentPlayer.ViewZoom),
    229         Trunc(StartViewPoint.Y + (StartMousePoint.Y - Y) / Game.CurrentPlayer.ViewZoom));
     151    if Core.Game.CurrentPlayer.Mode = pmHuman then begin
     152      Core.Game.CurrentPlayer.CellPos := Point(Trunc(StartViewPoint.X + (StartMousePoint.X - X) / Core.Game.CurrentPlayer.ViewZoom),
     153        Trunc(StartViewPoint.Y + (StartMousePoint.Y - Y) / Core.Game.CurrentPlayer.ViewZoom));
    230154      Redraw;
    231155    end;
     
    237161begin
    238162  if (Abs(StartMousePoint.X - X) < 5) and (Abs(StartMousePoint.Y - Y) < 5) then begin
    239     if Game.Running and (Game.CurrentPlayer.Mode = pmHuman) then begin
    240       Game.CurrentPlayer.SelectCell(Point(X, Y));
     163    if Core.Game.Running and (Core.Game.CurrentPlayer.Mode = pmHuman) then begin
     164      Core.Game.CurrentPlayer.SelectCell(Point(X, Y));
    241165      Redraw;
    242166    end;
     
    250174  D: TPoint;
    251175begin
    252   with Game.CurrentPlayer do begin
     176  with Core.Game.CurrentPlayer do begin
    253177    //D := Point(Trunc(MousePos.X - View.Left / ViewZoom),
    254178    //  Trunc(MousePos.Y - View.Top / ViewZoom));
     
    265189  MousePos: TPoint; var Handled: Boolean);
    266190begin
    267   with Game.CurrentPlayer do
     191  with Core.Game.CurrentPlayer do
    268192    ViewZoom := ViewZoom * ZoomFactor;
    269193  Redraw;
Note: See TracChangeset for help on using the changeset viewer.