コード例 #1
0
        public void DoControlGroup(World world, WorldRenderer worldRenderer, int group, Modifiers mods, int MultiTapCount)
        {
            var addModifier = Platform.CurrentPlatform == PlatformType.OSX ? Modifiers.Meta : Modifiers.Ctrl;

            if (mods.HasModifier(addModifier))
            {
                if (actors.Count == 0)
                {
                    return;
                }

                if (!mods.HasModifier(Modifiers.Shift))
                {
                    controlGroups[group].Clear();
                }

                for (var i = 0; i < 10; i++)                    /* all control groups */
                {
                    controlGroups[i].RemoveAll(a => actors.Contains(a));
                }

                controlGroups[group].AddRange(actors.Where(a => a.Owner == world.LocalPlayer));
                return;
            }

            var groupActors = controlGroups[group].Where(a => !a.IsDead() && !world.FogObscures(a));

            if (mods.HasModifier(Modifiers.Alt) || MultiTapCount >= 2)
            {
                worldRenderer.Viewport.Center(groupActors);
                return;
            }

            Combine(world, groupActors, mods.HasModifier(Modifiers.Shift), false);
        }
コード例 #2
0
ファイル: Selection.cs プロジェクト: voidAsterisk/OpenRA
        public void Tick(World world)
        {
            actors.RemoveAll(a => !a.IsInWorld || (a.Owner != world.LocalPlayer && world.FogObscures(a)));

            foreach (var cg in controlGroups.Values)
            {
                // note: NOT `!a.IsInWorld`, since that would remove things that are in transports.
                cg.RemoveAll(a => a.Destroyed);
            }
        }
コード例 #3
0
ファイル: Selection.cs プロジェクト: anvilvapre/OpenRA-1
        public void Tick(World world)
        {
            actors.RemoveWhere(a => !a.IsInWorld || (!a.Owner.IsAlliedWith(world.RenderPlayer) && world.FogObscures(a)));

            foreach (var cg in controlGroups.Values)
            {
                // note: NOT `!a.IsInWorld`, since that would remove things that are in transports.
                cg.RemoveAll(a => a.Disposed || a.Owner != world.LocalPlayer);
            }
        }
コード例 #4
0
ファイル: WorldUtils.cs プロジェクト: epicelite/OpenRA
        public static IEnumerable <Actor> FindUnitsAtMouse(this World world, int2 mouseLocation)
        {
            var loc = Game.viewport.ViewToWorldPx(mouseLocation).ToWPos(0);

            return(FindActorsInBox(world, loc, loc).Where(a => !world.FogObscures(a)));
        }