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.