Subversion Repositories AndroidProjects

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
35 chris 1
unit app_glscene_flash;
2
 
3
interface
4
 
5
uses OpenGL, GLaux, glExt, sux_constant, sux_object, app_constant,
6
     resource_texture, resource_shader;
7
 
8
type
9
  TSScore=record
10
    texture:SRTexture;
11
    owngoaltexture:SRTexture;
12
    intensity:SXFloat;
13
    typeofscore:SXState;
14
  end;
15
  TSettings=record
16
    score:TSScore;
17
    newballintensity:SXFloat;
18
    menuintensity:SXFloat;
19
  end;
20
  SAGLSFlash=class(SUXObject)
21
    settings:TSettings;
22
 
23
    procedure displayNewBall;
24
    procedure renderNewBall;
25
    procedure displayGainScore(scoretype:SXState);
26
    procedure renderScore;
27
    procedure displayMenuFlash;
28
    procedure renderMenu;
29
    procedure onTimer;
30
 
31
    procedure initialize;
32
    constructor Create(parent:TObject);
33
    destructor Destroy; override;
34
  end;
35
 
36
implementation
37
 
38
uses sux_main, gl_main, main;
39
 
40
 
41
// --- SAGLSFlash
42
 
43
 
44
procedure SAGLSFlash.displayNewBall;
45
begin
46
  settings.newballintensity:=1;
47
  app.sound.playSample2D('sounds\newball');
48
end;
49
 
50
 
51
procedure SAGLSFlash.renderNewBall;
52
begin
53
  with settings do
54
  begin
55
    if (newballintensity<=0) then exit;
56
 
57
    gl.gl2D.renderRectangle(0,0,640,480,SX_GL_BLEND_ADDITIVE,sx.convert.ColorRGBOf(1,1,1),newballintensity*0.5);
58
 
59
    sx.timer.decTimer(newballintensity,3);
60
  end;
61
end;
62
 
63
 
64
procedure SAGLSFlash.displayGainScore(scoretype:SXState);
65
begin
66
  settings.score.intensity:=1.5;
67
  settings.score.typeofscore:=scoretype;
68
  app.sound.playSample2D('sounds\score');
69
end;
70
 
71
 
72
procedure SAGLSFlash.renderScore;
73
var size,intensity:SXFloat;
74
    texture:SRTexture;  
75
begin
76
  with settings do
77
  begin
78
    if (score.intensity<=0) then exit;
79
 
80
    intensity:=(score.intensity-1.3)*20;
81
    gl.gl2D.renderRectangle(0,0,640,480,SX_GL_BLEND_ADDITIVE,sx.convert.ColorRGBOf(1,1,1),intensity);
82
 
83
    case score.typeofscore of
84
      SX_SCORE_TYPE_NORMAL    : texture:=score.texture;
85
      SX_SCORE_TYPE_OWNGOAL   : texture:=score.owngoaltexture;
86
    else
87
      exit;
88
    end;
89
 
90
    size:=(score.intensity-1.2)*300;
91
    if (size<0) then size:=0;
92
    gl.gl2D.renderPatternQuad(texture,SX_GL_BLEND_AVERAGE,
93
      sx.convert.ColorRGBOf(1,1,1),score.intensity,0,0,1,1,320,240,260+size);
94
    sx.timer.decTimer(score.intensity,2);
95
  end;
96
end;
97
 
98
 
99
procedure SAGLSFlash.displayMenuFlash;
100
begin
101
  settings.menuintensity:=1;
102
end;
103
 
104
 
105
procedure SAGLSFlash.renderMenu;
106
begin
107
  with settings do
108
  begin
109
    if (menuintensity<=0) then exit;
110
 
111
    gl.gl2D.renderRectangle(0,0,640,480,SX_GL_BLEND_NEGATIVEINVERT,sx.convert.ColorRGBOf(1,1,1),1-menuintensity);
112
    sx.timer.decTimer(menuintensity,4);
113
  end;
114
end;
115
 
116
 
117
procedure SAGLSFlash.onTimer;
118
begin
119
  renderScore;
120
  renderNewBall;
121
  renderMenu;
122
end;
123
 
124
 
125
 
126
 
127
procedure SAGLSFlash.initialize;
128
begin
129
  settings.score.texture:=SRTexture.Create('textures\menu\score',self);
130
  settings.score.owngoaltexture:=SRTexture.Create('textures\menu\owngoal',self);
131
end;
132
 
133
 
134
constructor SAGLSFlash.Create(parent:TObject);
135
begin
136
  inherited Create(parent,'GL Flash');
137
 
138
  settings.score.intensity:=0;
139
  settings.newballintensity:=0;
140
  settings.menuintensity:=0;
141
end;
142
 
143
 
144
destructor SAGLSFlash.Destroy;
145
begin
146
  settings.score.texture.Free;
147
  settings.score.owngoaltexture.Free;
148
 
149
  inherited;
150
end;
151
 
152
 
153
end.