Subversion Repositories AndroidProjects

Rev

Blame | Last modification | View Log | RSS feed

unit app_entity_impact;

interface

uses sux_constant, sux_object, app_constant, app_entity_main,
     app_game_player;

type
  TImpact=record
    inverse: SXBool;
    mode:SXState;
  end;
  SAEImpact=class(SAEntity)
    impact:TImpact;

    procedure setInverseMovement(inverse: SXBool);
    procedure setMode(mode:SXState);

    procedure onTimer; override;

    procedure initialize; override;
    constructor Create(parent:TObject);
    destructor Destroy; override;
  end;

implementation

uses main;


// --- SAEImpact


procedure SAEImpact.setInverseMovement(inverse: SXBool);
begin
  impact.inverse := inverse;
end;


procedure SAEImpact.setMode(mode:SXState);
begin
  impact.mode:=mode;

  case mode of
    SX_EIMPACT_MODE_WALL      : setupAppearance(app.scene.board.settings.wallimpact,30);
    SX_EIMPACT_MODE_PADDLE    : setupAppearance(app.scene.board.settings.paddleimpact,40);
  end;
end;




procedure SAEImpact.onTimer;
begin
  if (impact.mode=SX_EIMPACT_MODE_PADDLE) then
  begin
    if ((settings.rot=0) and (not impact.inverse))
    or ((settings.rot=180) and (impact.inverse)) then sx.timer.incTimer(settings.pos.x,10)
      else sx.timer.incTimer(settings.pos.x,-10);
  end;

  sx.timer.decTimer(settings.density,3);
  sx.timer.incTimer(settings.size,20);
  if (settings.density<=0) then delete;
end;




procedure SAEImpact.initialize;
begin
end;


constructor SAEImpact.Create(parent:TObject);
begin
  inherited Create(parent);

  setupAppearance(app.scene.board.settings.wallimpact,30);
  setBlending(SX_GL_BLEND_AVERAGE,1);

  setMode(SX_EIMPACT_MODE_WALL);
  impact.inverse := false;
end;


destructor SAEImpact.Destroy;
begin
  inherited;
end;


end.