X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_gfx.pas;h=e4c46f199d17a9bf74a2180be95d1ff5e4fc0c4c;hb=d8cb72ed4297af2d519c52270f8f32ddfd7fc58b;hp=01ada5245edcbb7606cfd4ffdd3f12af364719b6;hpb=385f70688f69aba255d1cdb9b7f0717bfe1b6945;p=d2df-sdl.git diff --git a/src/game/g_gfx.pas b/src/game/g_gfx.pas index 01ada52..e4c46f1 100644 --- a/src/game/g_gfx.pas +++ b/src/game/g_gfx.pas @@ -26,6 +26,8 @@ uses const BLOOD_NORMAL = 0; BLOOD_SPARKS = 1; + BLOOD_CSPARKS = 2; + BLOOD_COMBINE = 3; ONCEANIM_NONE = 0; ONCEANIM_SMOKE = 1; @@ -78,11 +80,7 @@ function awmIsSetHolmes (x, y: Integer): Boolean; inline; implementation uses -{$IFDEF USE_NANOGL} - nanoGL, -{$ELSE} - GL, GLExt, -{$ENDIF} + {$INCLUDE ../nogl/noGLuses.inc} g_map, g_panel, g_basic, Math, e_graphics, g_options, g_console, SysUtils, g_triggers, MAPDEF, g_game, g_language, g_net, utils, xprofiler; @@ -925,6 +923,11 @@ begin begin g_GFX_SparkVel(fX, fY, 2+Random(2), -vx div 2, -vy div 2, devX, devY); exit; + end + else if (kind = BLOOD_CSPARKS) OR (kind = BLOOD_COMBINE) then + begin + g_GFX_SparkVel(fX, fY, count, -vx div 2, -vy div 2, devX, devY); + if kind <> BLOOD_COMBINE then exit end; l := Length(Particles); @@ -1628,14 +1631,13 @@ procedure g_GFX_Draw (); a, len: Integer; {$IFDEF USE_NANOGL} type - PVertex = ^Vertex; Vertex = record x, y: GLfloat; r, g, b, a: GLfloat; end; var count: Integer; - v: PVertex; + v: array of Vertex; {$ENDIF} begin if not gpart_dbg_enabled then exit; @@ -1652,10 +1654,9 @@ begin glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); {$IFDEF USE_NANOGL} - len := High(Particles); - v := GetMem(len * SizeOf(Vertex) + 1); count := 0; - for a := 0 to len do + SetLength(v, Length(Particles)); + for a := 0 to High(Particles) do begin with Particles[a] do begin @@ -1672,15 +1673,13 @@ begin end; end; - glVertexPointer(2, GL_FLOAT, SizeOf(Vertex), @v.x); - glColorPointer(4, GL_FLOAT, SizeOf(Vertex), @v.r); + glVertexPointer(2, GL_FLOAT, SizeOf(Vertex), @v[0].x); + glColorPointer(4, GL_FLOAT, SizeOf(Vertex), @v[0].r); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_COLOR_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); glDisableClientState(GL_TEXTURE_COORD_ARRAY); - glDrawArrays(GL_POINTS, 0, count - 1); - - Dispose(v); + glDrawArrays(GL_POINTS, 0, count); {$ELSE} glBegin(GL_POINTS);