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); }
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); } }
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); } }
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))); }