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 |