Пример #1
0
        private static IEnumerable <IWorldObject> ClientGetObjectsAtCurrentMousePosition()
        {
            var currentCharacter = Api.Client.Characters.CurrentPlayerCharacter;

            return(ClientComponentObjectInteractionHelper
                   // find by click area
                   .FindObjectsAtCurrentMousePosition(
                       currentCharacter,
                       CollisionGroups.ClickArea)
                   // find by default collider
                   .Concat(
                       ClientComponentObjectInteractionHelper
                       .FindObjectsAtCurrentMousePosition(
                           currentCharacter,
                           CollisionGroups.Default)));
        }
        public static IStaticWorldObject ClientFindWorldObjectAtCurrentMousePosition()
        {
            var currentCharacter = Api.Client.Characters.CurrentPlayerCharacter;

            return(ClientComponentObjectInteractionHelper.FindStaticObjectAtCurrentMousePosition(
                       currentCharacter,
                       CollisionGroups.ClickArea)
                   // second try to find by default collider
                   ?? ClientComponentObjectInteractionHelper.FindStaticObjectAtCurrentMousePosition(
                       currentCharacter,
                       CollisionGroups.Default)
                   // try to find object in the pointed tile
                   ?? Api.Client.World.GetTile(Api.Client.Input.MouseWorldPosition.ToVector2Ushort())
                   .StaticObjects.OrderByDescending(o => o.ProtoStaticWorldObject.Kind)
                   .FirstOrDefault());
        }
Пример #3
0
        private static IEnumerable <IWorldObject> ClientGetObjectsAtCurrentMousePosition()
        {
            var currentCharacter = Api.Client.Characters.CurrentPlayerCharacter;

            return(ClientComponentObjectInteractionHelper
                   // find by click area
                   .FindObjectsAtCurrentMousePosition(
                       currentCharacter,
                       CollisionGroups.ClickArea)
                   // find by default collider
                   .Concat(
                       ClientComponentObjectInteractionHelper
                       .FindObjectsAtCurrentMousePosition(
                           currentCharacter,
                           CollisionGroups.Default))
                   //find object in the pointed tile
                   .Concat(
                       Api.Client.World.GetTile(Api.Client.Input.MouseWorldPosition.ToVector2Ushort())
                       .StaticObjects.OrderByDescending(o => o.ProtoStaticWorldObject.Kind)));
        }
Пример #4
0
        public static IStaticWorldObject ClientFindWorldObjectAtCurrentMousePosition()
        {
            var currentCharacter = Api.Client.Characters.CurrentPlayerCharacter;
            var objects          = ClientComponentObjectInteractionHelper
                                   // find by click area
                                   .FindStaticObjectsAtCurrentMousePosition(
                currentCharacter,
                CollisionGroups.ClickArea)
                                   // find by default collider
                                   .Concat(
                ClientComponentObjectInteractionHelper
                .FindStaticObjectsAtCurrentMousePosition(
                    currentCharacter,
                    CollisionGroups.Default))
                                   //find object in the pointed tile
                                   .Concat(
                Api.Client.World.GetTile(Api.Client.Input.MouseWorldPosition.ToVector2Ushort())
                .StaticObjects.OrderByDescending(o => o.ProtoStaticWorldObject.Kind));

            // find first damaged or incomplete structure there
            foreach (var worldObject in objects)
            {
                if (!(worldObject.ProtoStaticWorldObject is IProtoObjectStructure protoObjectStructure))
                {
                    continue;
                }

                var maxStructurePointsMax  = protoObjectStructure.SharedGetStructurePointsMax(worldObject);
                var structurePointsCurrent =
                    worldObject.GetPublicState <StaticObjectPublicState>().StructurePointsCurrent;
                if (structurePointsCurrent < maxStructurePointsMax)
                {
                    return(worldObject);
                }
            }

            return(null);
        }