Beispiel #1
0
        extra FragmentShader(VertexOut vertex, Field <data> Data, Field <unit> Unit, Field <extra> Extra, vec2 Destination, [Player.Vals] float player, [SelectionFilter.Vals] float filter)
        {
            data  data_here  = Data[Here];
            unit  unit_here  = Unit[Here];
            extra extra_here = Extra[Here];

            if (player == unit_here.player && selected(data_here) && SelectionFilter.FilterHasUnit(filter, unit_here.type))
            {
                extra_here = extra.Nothing;
            }

            return(extra_here);
        }
Beispiel #2
0
        void DrawSelectedInfo()
        {
            color clr = rgba(0x888888, .5f).Premultiplied;

            bool building_selected = UnitType.BuildingVals.Any(type => DataGroup.UnitSummary[Int(type) - 1]);

            vec2  size           = vec(.145f, .145f);
            float building_scale = 1.4f;
            float building_shift = building_selected ? (building_scale - 1) * 2 * size.x : 0;
            vec2  shift          = vec(-size.x, 0);
            vec2  start;

            if (MapEditor)
            {
                start = vec(CameraAspect, -1) + vec(-.1f, .46f);
            }
            else
            {
                start = vec(CameraAspect, -1) + vec(-.1f, .21f);
            }

            vec2 cur_pos = start - vec(building_shift, 0);

            for (int i = Int(UnitType.Count) - 1; i >= 0; i--)
            {
                if (DataGroup.UnitSummary[i])
                {
                    float type = _[i + 1];

                    vec2 pos = cur_pos + -2 * size.FlipY();

                    vec2 s = size;
                    if (IsBuilding(type))
                    {
                        s     *= building_scale;
                        pos.y += s.y * .2f;
                    }

                    SetUnitQuad(pos, s, type, MyPlayerNumber, (GameClass.World.DrawCount / 7) % UnitSpriteSheet.AnimLength, Dir.Left, q);

                    bool  FilteredOut = SelectionFilter.FilterHasUnit(CurSelectionFilter, type);
                    color Shade       = FilteredOut ? rgb(0xffffff) : rgb(0x000000);

                    DrawColoredTexture.Using(vec(0, 0, 1, 1), CameraAspect, q.Texture, Shade);
                    q.Draw(GameClass.Graphics);

                    cur_pos += shift;
                }
            }
        }
Beispiel #3
0
        vec4 FragmentShader(VertexOut vertex, Field <data> Data, Field <unit> Unit, Field <data> TargetData, vec2 Destination, [Player.Vals] float player, [SelectionFilter.Vals] float filter)
        {
            data data_here = Data[Here];
            unit unit_here = Unit[Here];
            vec4 target    = vec4.Zero;

            if (player == unit_here.player && selected(data_here) && SelectionFilter.FilterHasUnit(filter, unit_here.type))
            {
                vec2 dest = Destination;

                target = pack_vec2(dest);
            }
            else
            {
                target = (vec4)TargetData[Here];
            }

            return(target);
        }
Beispiel #4
0
        vec4 FragmentShader(VertexOut vertex, Field <data> Data, Field <unit> Unit, Field <data> TargetData, vec2 Destination_BL, vec2 Selection_BL, vec2 ConversionRatio, [Player.Vals] float player, [SelectionFilter.Vals] float filter)
        {
            data data_here = Data[Here];
            unit unit_here = Unit[Here];
            vec4 target    = vec4.Zero;

            if (player == unit_here.player && selected(data_here) && SelectionFilter.FilterHasUnit(filter, unit_here.type))
            {
                vec2 pos = vertex.TexCoords * Data.Size;

                pos = (pos - Selection_BL);
                pos = pos * ConversionRatio + Destination_BL;
                pos = round(pos);

                target = pack_vec2(pos);
            }
            else
            {
                target = (vec4)TargetData[Here];
            }

            return(target);
        }
Beispiel #5
0
 bool[] FilteredSummary(float filter)
 {
     return(DataGroup.UnitSummary.Select((b, i) => b && SelectionFilter.FilterHasUnit(filter, _[i + 1])).ToArray());
 }