hedgewars/uStore.pas
changeset 3405 8fdb08497bf1
parent 3394 47b51e22e670
child 3407 dcc129c4352e
equal deleted inserted replaced
3404:d445798e5fe2 3405:8fdb08497bf1
   606 glPopMatrix
   606 glPopMatrix
   607 end;
   607 end;
   608 
   608 
   609 procedure DrawRotated(Sprite: TSprite; X, Y, Dir: LongInt; Angle: real);
   609 procedure DrawRotated(Sprite: TSprite; X, Y, Dir: LongInt; Angle: real);
   610 begin
   610 begin
   611 DrawRotatedTex(SpritesData[Sprite].Texture,
   611     DrawRotatedTex(SpritesData[Sprite].Texture,
   612         SpritesData[Sprite].Width,
   612         SpritesData[Sprite].Width,
   613         SpritesData[Sprite].Height,
   613         SpritesData[Sprite].Height,
   614         X, Y, Dir, Angle)
   614         X, Y, Dir, Angle)
   615 end;
   615 end;
   616 
   616 
   709 end;
   709 end;
   710 
   710 
   711 procedure DrawSprite2(Sprite: TSprite; X, Y, FrameX, FrameY: LongInt);
   711 procedure DrawSprite2(Sprite: TSprite; X, Y, FrameX, FrameY: LongInt);
   712 var r: TSDL_Rect;
   712 var r: TSDL_Rect;
   713 begin
   713 begin
   714 r.x:= FrameX * SpritesData[Sprite].Width;
   714     r.x:= FrameX * SpritesData[Sprite].Width;
   715 r.w:= SpritesData[Sprite].Width;
   715     r.w:= SpritesData[Sprite].Width;
   716 r.y:= FrameY * SpritesData[Sprite].Height;
   716     r.y:= FrameY * SpritesData[Sprite].Height;
   717 r.h:= SpritesData[Sprite].Height;
   717     r.h:= SpritesData[Sprite].Height;
   718 DrawFromRect(X, Y, @r, SpritesData[Sprite].Texture)
   718     DrawFromRect(X, Y, @r, SpritesData[Sprite].Texture)
   719 end;
   719 end;
   720 
   720 
   721 procedure DrawCentered(X, Top: LongInt; Source: PTexture);
   721 procedure DrawCentered(X, Top: LongInt; Source: PTexture);
   722 begin
   722 begin
   723 DrawTexture(X - Source^.w shr 1, Top, Source)
   723 DrawTexture(X - Source^.w shr 1, Top, Source)
   801 end;
   801 end;
   802 
   802 
   803 procedure StoreRelease;
   803 procedure StoreRelease;
   804 var ii: TSprite;
   804 var ii: TSprite;
   805 begin
   805 begin
   806 for ii:= Low(TSprite) to High(TSprite) do
   806     for ii:= Low(TSprite) to High(TSprite) do
   807     begin
   807     begin
   808     FreeTexture(SpritesData[ii].Texture);
   808         FreeTexture(SpritesData[ii].Texture);
   809     if SpritesData[ii].Surface <> nil then SDL_FreeSurface(SpritesData[ii].Surface)
   809         if SpritesData[ii].Surface <> nil then
   810     end;
   810             SDL_FreeSurface(SpritesData[ii].Surface)
   811 SDL_FreeSurface(MissionIcons);
   811     end;
   812 FreeTexture(ropeIconTex);
   812     SDL_FreeSurface(MissionIcons);
   813 FreeTexture(HHTexture)
   813     FreeTexture(ropeIconTex);
       
   814     FreeTexture(HHTexture);
   814 end;
   815 end;
   815 
   816 
   816 
   817 
   817 function CheckCJKFont(s: ansistring; font: THWFont): THWFont;
   818 function CheckCJKFont(s: ansistring; font: THWFont): THWFont;
   818 var l, i : LongInt;
   819 var l, i : LongInt;
  1132 {$ENDIF}
  1133 {$ENDIF}
  1133 end;
  1134 end;
  1134 
  1135 
  1135 procedure SetupOpenGL;
  1136 procedure SetupOpenGL;
  1136 var vendor: shortstring;
  1137 var vendor: shortstring;
  1137 begin
  1138 {$IFDEF DARWIN}
       
  1139     one: LongInt;
       
  1140 {$ENDIF}
       
  1141 begin
       
  1142     // initialized here because when initModule is called cScreenWidth/Height are not yet set
       
  1143     if (uStore.wScreen = 0) and (uStore.hScreen = 0) then
       
  1144     begin
       
  1145         uStore.wScreen:= cScreenWidth; 
       
  1146         uStore.hScreen:= cScreenHeight;
       
  1147     end;
       
  1148 
  1138 {$IFDEF IPHONEOS}
  1149 {$IFDEF IPHONEOS}
  1139     SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 0); // no double buffering
  1150     SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 0); // no double buffering
  1140     SDL_GL_SetAttribute(SDL_GL_RETAINED_BACKING, 1);
  1151     SDL_GL_SetAttribute(SDL_GL_RETAINED_BACKING, 1);
  1141 {$ELSE}
  1152 {$ELSE}
  1142     SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
  1153     SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
       
  1154 {$IFNDEF SDL13}
       
  1155 // this attribute is default in 1.3 and must be enabled in MacOSX
       
  1156     if cVSyncInUse then
       
  1157         SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 1);
       
  1158 {$IFDEF DARWIN}
       
  1159 // fixes vsync in Snow Leopard
       
  1160     one := 1;
       
  1161     CGLSetParameter(CGLGetCurrentContext(), 222, @one);
       
  1162 {$ENDIF}
       
  1163 {$ENDIF}
  1143 {$ENDIF}
  1164 {$ENDIF}
  1144     SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 0); // no depth buffer
  1165     SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 0); // no depth buffer
  1145     SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);
  1166     SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);
  1146     SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 6);
  1167     SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 6);
  1147     SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);
  1168     SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);
  1148     SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 0); // no alpha channel required
  1169     SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 0); // no alpha channel required
  1149     SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE, 16); // buffer has to be 16 bit only
  1170     SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE, 16); // buffer has to be 16 bit only
  1150     SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1); // try to prefer hardware rendering
  1171     SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1); // try to prefer hardware rendering
  1151 
       
  1152 {$IFNDEF SDL13}
       
  1153 // this attribute is default in 1.3 and must be enabled in MacOSX
       
  1154 {$IFNDEF DARWIN}
       
  1155     if cVSyncInUse then
       
  1156 {$ENDIF}
       
  1157         SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 1);
       
  1158 {$ENDIF}
       
  1159 
  1172 
  1160     glGetIntegerv(GL_MAX_TEXTURE_SIZE, @MaxTextureSize);
  1173     glGetIntegerv(GL_MAX_TEXTURE_SIZE, @MaxTextureSize);
  1161 
  1174 
  1162     vendor:= LowerCase(shortstring(pchar(glGetString(GL_VENDOR))));
  1175     vendor:= LowerCase(shortstring(pchar(glGetString(GL_VENDOR))));
  1163 {$IFDEF DEBUGFILE}
  1176 {$IFDEF DEBUGFILE}
  1274     
  1287     
  1275     r.y:= (Step mod numsquares) * squaresize;
  1288     r.y:= (Step mod numsquares) * squaresize;
  1276     r.w:= squaresize;
  1289     r.w:= squaresize;
  1277     r.h:= squaresize;
  1290     r.h:= squaresize;
  1278     
  1291     
  1279     DrawFromRect( -squaresize div 2, (cScreenHeight - squaresize) shr 1, @r, ProgrTex);
  1292     DrawFromRect( -squaresize div 2, (hScreen - squaresize) shr 1, @r, ProgrTex);
  1280 
  1293 
  1281     SDL_GL_SwapBuffers();
  1294     SDL_GL_SwapBuffers();
  1282 {$IFDEF SDL13}
  1295 {$IFDEF SDL13}
  1283     SDL_RenderPresent();
  1296     SDL_RenderPresent();
  1284 {$ENDIF}
  1297 {$ENDIF}
  1552 {$IFDEF IPHONEOS}
  1565 {$IFDEF IPHONEOS}
  1553     rotationQt:= -90;
  1566     rotationQt:= -90;
  1554 {$ELSE}
  1567 {$ELSE}
  1555     cGPUVendor:= gvUnknown;
  1568     cGPUVendor:= gvUnknown;
  1556 {$ENDIF}
  1569 {$ENDIF}
  1557     uStore.wScreen:= cScreenWidth; 
  1570     // really initalized in storeLoad
  1558     uStore.hScreen:= cScreenHeight;
  1571     uStore.wScreen:= 0; 
       
  1572     uStore.hScreen:= 0;
       
  1573     
  1559     cScaleFactor:= 2.0;
  1574     cScaleFactor:= 2.0;
  1560     SupportNPOTT:= false;
  1575     SupportNPOTT:= false;
  1561     Step:= 0;
  1576     Step:= 0;
  1562     ProgrTex:= nil;
  1577     ProgrTex:= nil;
  1563 end;
  1578 end;