hedgewars/uLandObjects.pas
changeset 10325 7315870716f2
parent 10261 c81125782cf6
child 10490 b30b8d39d662
equal deleted inserted replaced
10324:5d90d8ca9657 10325:7315870716f2
   469 
   469 
   470 AddProgress;
   470 AddProgress;
   471 // Set default water greyscale values
   471 // Set default water greyscale values
   472 if GrayScale then
   472 if GrayScale then
   473     begin
   473     begin
   474     for i:= 0 to 3 do
   474     for i:= Low(SDWaterColorArray) to High(SDWaterColorArray) do
   475         begin
   475         begin
   476         t:= round(SDWaterColorArray[i].r * RGB_LUMINANCE_RED + SDWaterColorArray[i].g * RGB_LUMINANCE_GREEN + SDWaterColorArray[i].b * RGB_LUMINANCE_BLUE);
   476         t:= round(SDWaterColorArray[i].r * RGB_LUMINANCE_RED + SDWaterColorArray[i].g * RGB_LUMINANCE_GREEN + SDWaterColorArray[i].b * RGB_LUMINANCE_BLUE);
   477         if t > 255 then
   477         if t > 255 then
   478             t:= 255;
   478             t:= 255;
   479         SDWaterColorArray[i].r:= t;
   479         SDWaterColorArray[i].r:= t;
   480         SDWaterColorArray[i].g:= t;
   480         SDWaterColorArray[i].g:= t;
   481         SDWaterColorArray[i].b:= t
   481         SDWaterColorArray[i].b:= t
   482         end;
   482         end;
   483     for i:= 0 to 1 do
   483     for i:= Low(WaterColorArray) to High(WaterColorArray) do
   484         begin
   484         begin
   485         t:= round(WaterColorArray[i].r * RGB_LUMINANCE_RED + WaterColorArray[i].g * RGB_LUMINANCE_GREEN + WaterColorArray[i].b * RGB_LUMINANCE_BLUE);
   485         t:= round(WaterColorArray[i].r * RGB_LUMINANCE_RED + WaterColorArray[i].g * RGB_LUMINANCE_GREEN + WaterColorArray[i].b * RGB_LUMINANCE_BLUE);
   486         if t > 255 then
   486         if t > 255 then
   487             t:= 255;
   487             t:= 255;
   488         WaterColorArray[i].r:= t;
   488         WaterColorArray[i].r:= t;
   556         ExplosionBorderColor:= (c2.r shl RShift) or (c2.g shl GShift) or (c2.b shl BShift) or AMask;
   556         ExplosionBorderColor:= (c2.r shl RShift) or (c2.g shl GShift) or (c2.b shl BShift) or AMask;
   557         end
   557         end
   558     else if key = 'water-top' then
   558     else if key = 'water-top' then
   559         begin
   559         begin
   560         i:= Pos(',', s);
   560         i:= Pos(',', s);
       
   561         WaterColorArray[1].r:= StrToInt(Trim(Copy(s, 1, Pred(i))));
       
   562         Delete(s, 1, i);
       
   563         i:= Pos(',', s);
       
   564         WaterColorArray[1].g:= StrToInt(Trim(Copy(s, 1, Pred(i))));
       
   565         Delete(s, 1, i);
       
   566         WaterColorArray[1].b:= StrToInt(Trim(s));
       
   567         WaterColorArray[1].a := 255;
       
   568         if GrayScale then
       
   569             begin
       
   570             t:= round(WaterColorArray[0].r * RGB_LUMINANCE_RED + WaterColorArray[0].g * RGB_LUMINANCE_GREEN + WaterColorArray[0].b * RGB_LUMINANCE_BLUE);
       
   571             if t > 255 then
       
   572                 t:= 255;
       
   573             WaterColorArray[1].r:= t;
       
   574             WaterColorArray[1].g:= t;
       
   575             WaterColorArray[1].b:= t
       
   576             end;
       
   577         WaterColorArray[3]:= WaterColorArray[1];
       
   578         WaterColorArray[5]:= WaterColorArray[1];
       
   579         WaterColorArray[7]:= WaterColorArray[1];
       
   580         end
       
   581     else if key = 'water-bottom' then
       
   582         begin
       
   583         i:= Pos(',', s);
   561         WaterColorArray[0].r:= StrToInt(Trim(Copy(s, 1, Pred(i))));
   584         WaterColorArray[0].r:= StrToInt(Trim(Copy(s, 1, Pred(i))));
   562         Delete(s, 1, i);
   585         Delete(s, 1, i);
   563         i:= Pos(',', s);
   586         i:= Pos(',', s);
   564         WaterColorArray[0].g:= StrToInt(Trim(Copy(s, 1, Pred(i))));
   587         WaterColorArray[0].g:= StrToInt(Trim(Copy(s, 1, Pred(i))));
   565         Delete(s, 1, i);
   588         Delete(s, 1, i);
   566         WaterColorArray[0].b:= StrToInt(Trim(s));
   589         WaterColorArray[0].b:= StrToInt(Trim(s));
   567         WaterColorArray[0].a := 255;
   590         WaterColorArray[0].a := 255;
   568         if GrayScale then
   591         if GrayScale then
   569             begin
   592             begin
   570             t:= round(WaterColorArray[0].r * RGB_LUMINANCE_RED + WaterColorArray[0].g * RGB_LUMINANCE_GREEN + WaterColorArray[0].b * RGB_LUMINANCE_BLUE);
   593             t:= round(WaterColorArray[2].r * RGB_LUMINANCE_RED + WaterColorArray[2].g * RGB_LUMINANCE_GREEN + WaterColorArray[2].b * RGB_LUMINANCE_BLUE);
   571             if t > 255 then
   594             if t > 255 then
   572                 t:= 255;
   595                 t:= 255;
   573             WaterColorArray[0].r:= t;
   596             WaterColorArray[0].r:= t;
   574             WaterColorArray[0].g:= t;
   597             WaterColorArray[0].g:= t;
   575             WaterColorArray[0].b:= t
   598             WaterColorArray[0].b:= t
   576             end;
   599             end;
   577         WaterColorArray[1]:= WaterColorArray[0];
   600         WaterColorArray[2]:= WaterColorArray[0];
   578         end
   601         WaterColorArray[4]:= WaterColorArray[0];
   579     else if key = 'water-bottom' then
   602         WaterColorArray[6]:= WaterColorArray[0];
   580         begin
       
   581         i:= Pos(',', s);
       
   582         WaterColorArray[2].r:= StrToInt(Trim(Copy(s, 1, Pred(i))));
       
   583         Delete(s, 1, i);
       
   584         i:= Pos(',', s);
       
   585         WaterColorArray[2].g:= StrToInt(Trim(Copy(s, 1, Pred(i))));
       
   586         Delete(s, 1, i);
       
   587         WaterColorArray[2].b:= StrToInt(Trim(s));
       
   588         WaterColorArray[2].a := 255;
       
   589         if GrayScale then
       
   590             begin
       
   591             t:= round(WaterColorArray[2].r * RGB_LUMINANCE_RED + WaterColorArray[2].g * RGB_LUMINANCE_GREEN + WaterColorArray[2].b * RGB_LUMINANCE_BLUE);
       
   592             if t > 255 then
       
   593                 t:= 255;
       
   594             WaterColorArray[2].r:= t;
       
   595             WaterColorArray[2].g:= t;
       
   596             WaterColorArray[2].b:= t
       
   597             end;
       
   598         WaterColorArray[3]:= WaterColorArray[2];
       
   599         end
   603         end
   600     else if key = 'water-opacity' then
   604     else if key = 'water-opacity' then
   601         begin
   605         begin
   602         WaterOpacity:= StrToInt(Trim(s));
   606         WaterOpacity:= StrToInt(Trim(s));
   603         SDWaterOpacity:= WaterOpacity
   607         SDWaterOpacity:= WaterOpacity
   711     else if key = 'snow' then
   715     else if key = 'snow' then
   712         cSnow:= true
   716         cSnow:= true
   713     else if key = 'sd-water-top' then
   717     else if key = 'sd-water-top' then
   714         begin
   718         begin
   715         i:= Pos(',', s);
   719         i:= Pos(',', s);
       
   720         SDWaterColorArray[1].r:= StrToInt(Trim(Copy(s, 1, Pred(i))));
       
   721         Delete(s, 1, i);
       
   722         i:= Pos(',', s);
       
   723         SDWaterColorArray[1].g:= StrToInt(Trim(Copy(s, 1, Pred(i))));
       
   724         Delete(s, 1, i);
       
   725         SDWaterColorArray[1].b:= StrToInt(Trim(s));
       
   726         SDWaterColorArray[1].a := 255;
       
   727         if GrayScale then
       
   728             begin
       
   729             t:= round(SDWaterColorArray[0].r * RGB_LUMINANCE_RED + SDWaterColorArray[0].g * RGB_LUMINANCE_GREEN + SDWaterColorArray[0].b * RGB_LUMINANCE_BLUE);
       
   730             if t > 255 then
       
   731                 t:= 255;
       
   732             SDWaterColorArray[1].r:= t;
       
   733             SDWaterColorArray[1].g:= t;
       
   734             SDWaterColorArray[1].b:= t
       
   735             end;
       
   736         SDWaterColorArray[3]:= SDWaterColorArray[1];
       
   737         SDWaterColorArray[5]:= SDWaterColorArray[1];
       
   738         SDWaterColorArray[7]:= SDWaterColorArray[1];
       
   739         end
       
   740     else if key = 'sd-water-bottom' then
       
   741         begin
       
   742         i:= Pos(',', s);
   716         SDWaterColorArray[0].r:= StrToInt(Trim(Copy(s, 1, Pred(i))));
   743         SDWaterColorArray[0].r:= StrToInt(Trim(Copy(s, 1, Pred(i))));
   717         Delete(s, 1, i);
   744         Delete(s, 1, i);
   718         i:= Pos(',', s);
   745         i:= Pos(',', s);
   719         SDWaterColorArray[0].g:= StrToInt(Trim(Copy(s, 1, Pred(i))));
   746         SDWaterColorArray[0].g:= StrToInt(Trim(Copy(s, 1, Pred(i))));
   720         Delete(s, 1, i);
   747         Delete(s, 1, i);
   721         SDWaterColorArray[0].b:= StrToInt(Trim(s));
   748         SDWaterColorArray[0].b:= StrToInt(Trim(s));
   722         SDWaterColorArray[0].a := 255;
   749         SDWaterColorArray[0].a := 255;
   723         if GrayScale then
   750         if GrayScale then
   724             begin
   751             begin
   725             t:= round(SDWaterColorArray[0].r * RGB_LUMINANCE_RED + SDWaterColorArray[0].g * RGB_LUMINANCE_GREEN + SDWaterColorArray[0].b * RGB_LUMINANCE_BLUE);
   752             t:= round(SDWaterColorArray[2].r * RGB_LUMINANCE_RED + SDWaterColorArray[2].g * RGB_LUMINANCE_GREEN + SDWaterColorArray[2].b * RGB_LUMINANCE_BLUE);
   726             if t > 255 then
   753             if t > 255 then
   727                 t:= 255;
   754                 t:= 255;
   728             SDWaterColorArray[0].r:= t;
   755             SDWaterColorArray[0].r:= t;
   729             SDWaterColorArray[0].g:= t;
   756             SDWaterColorArray[0].g:= t;
   730             SDWaterColorArray[0].b:= t
   757             SDWaterColorArray[0].b:= t
   731             end;
   758             end;
   732         SDWaterColorArray[1]:= SDWaterColorArray[0];
   759         SDWaterColorArray[2]:= SDWaterColorArray[0];
   733         end
   760         SDWaterColorArray[4]:= SDWaterColorArray[0];
   734     else if key = 'sd-water-bottom' then
   761         SDWaterColorArray[6]:= SDWaterColorArray[0];
   735         begin
       
   736         i:= Pos(',', s);
       
   737         SDWaterColorArray[2].r:= StrToInt(Trim(Copy(s, 1, Pred(i))));
       
   738         Delete(s, 1, i);
       
   739         i:= Pos(',', s);
       
   740         SDWaterColorArray[2].g:= StrToInt(Trim(Copy(s, 1, Pred(i))));
       
   741         Delete(s, 1, i);
       
   742         SDWaterColorArray[2].b:= StrToInt(Trim(s));
       
   743         SDWaterColorArray[2].a := 255;
       
   744         if GrayScale then
       
   745             begin
       
   746             t:= round(SDWaterColorArray[2].r * RGB_LUMINANCE_RED + SDWaterColorArray[2].g * RGB_LUMINANCE_GREEN + SDWaterColorArray[2].b * RGB_LUMINANCE_BLUE);
       
   747             if t > 255 then
       
   748                 t:= 255;
       
   749             SDWaterColorArray[2].r:= t;
       
   750             SDWaterColorArray[2].g:= t;
       
   751             SDWaterColorArray[2].b:= t
       
   752             end;
       
   753         SDWaterColorArray[3]:= SDWaterColorArray[2];
       
   754         end
   762         end
   755     else if key = 'sd-water-opacity' then
   763     else if key = 'sd-water-opacity' then
   756         SDWaterOpacity:= StrToInt(Trim(s))
   764         SDWaterOpacity:= StrToInt(Trim(s))
   757     else if key = 'sd-clouds' then
   765     else if key = 'sd-clouds' then
   758         cSDCloudsNumber:= Word(StrToInt(Trim(s))) * cScreenSpace div 4096
   766         cSDCloudsNumber:= Word(StrToInt(Trim(s))) * cScreenSpace div 4096