コード例 #1
0
 private void SetClosestColor()
 {
     closestColor = GfxEffects.ClosestColor(building, myDebug);
 }
コード例 #2
0
ファイル: GfxEffects.cs プロジェクト: wolfwine/LTF_Slug
        // closed match in RGB space
        public static MyGfx.ClosestColor ClosestColor(Building building, bool myDebug = false)
        {
            Color bColor = building.DrawColor;

            MyGfx.ClosestColor answer = MyGfx.ClosestColor.blue;

            int blueDiff, orangeDiff, purpleDiff;
            int minVal = 1000;

            int bColorRed   = (int)(bColor.r * 256);
            int bColorGreen = (int)(bColor.g * 256);
            int bColorBlue  = (int)(bColor.b * 256);

            blueDiff = (
                Math.Abs(bColorRed - (int)MyGfx.ChosenColors[(int)MyGfx.ClosestColor.blue].r) / 3 +
                Math.Abs(bColorGreen - (int)MyGfx.ChosenColors[(int)MyGfx.ClosestColor.blue].g) / 2 +
                Math.Abs(bColorBlue - (int)MyGfx.ChosenColors[(int)MyGfx.ClosestColor.blue].b)
                );

            orangeDiff = (
                Math.Abs(bColorRed - (int)MyGfx.ChosenColors[(int)MyGfx.ClosestColor.orange].r) +
                Math.Abs(bColorGreen - (int)MyGfx.ChosenColors[(int)MyGfx.ClosestColor.orange].g) / 2 +
                Math.Abs(bColorBlue - (int)MyGfx.ChosenColors[(int)MyGfx.ClosestColor.orange].b) / 3
                );

            purpleDiff = (
                Math.Abs(bColorRed - (int)MyGfx.ChosenColors[(int)MyGfx.ClosestColor.purple].r) +
                Math.Abs(bColorGreen - (int)MyGfx.ChosenColors[(int)MyGfx.ClosestColor.purple].g) / 3 +
                Math.Abs(bColorBlue - (int)MyGfx.ChosenColors[(int)MyGfx.ClosestColor.purple].b) / 2
                );

            Tools.Warn(
                "bColor: " + bColor +
                "; blue: " + MyGfx.ChosenColors[(int)MyGfx.ClosestColor.blue] +
                "; orange: " + MyGfx.ChosenColors[(int)MyGfx.ClosestColor.orange] +
                "; purple: " + MyGfx.ChosenColors[(int)MyGfx.ClosestColor.purple]
                , myDebug
                );
            Tools.Warn(
                "blueDiff: " + blueDiff +
                "; orangeDiff: " + orangeDiff +
                "; purpleDiff: " + purpleDiff
                , myDebug
                );

            if (blueDiff < minVal)
            {
                minVal = blueDiff;
                answer = MyGfx.ClosestColor.blue;
            }

            if (orangeDiff < minVal)
            {
                minVal = orangeDiff;
                answer = MyGfx.ClosestColor.orange;
            }

            if (purpleDiff < minVal)
            {
                minVal = purpleDiff;
                answer = MyGfx.ClosestColor.purple;
            }

            Tools.Warn("closest Color=" + answer, myDebug);

            return(answer);
        }