Example #1
0
        private bool CustomProcessClick(ScenePickArgs eventArgs)
        {
            switch (eventArgs.mObjectType)
            {
            case ScenePickObjectType.Terrain:
            case ScenePickObjectType.Floor:
            case ScenePickObjectType.RoadStreet:
            case ScenePickObjectType.RoadSidewalk:
            case ScenePickObjectType.WaterPond:
            case ScenePickObjectType.WaterSea:
            case ScenePickObjectType.WaterPool:
            case ScenePickObjectType.WaterFountain:
                if ((Bin.PlacementHousehold == null) && (Bin.PlacementLot == null))
                {
                    return(GameObjectEx.OnPick(Terrain.Singleton, eventArgs.mMouseEvent, eventArgs.AsGameObjectHit()));
                }
                break;

            case ScenePickObjectType.Object:
            case ScenePickObjectType.Sim:
            case ScenePickObjectType.Wall:
                ObjectGuid guid = ObjectGuid.InvalidObjectGuid;
                if ((eventArgs.mObjectType == ScenePickObjectType.Object) || (eventArgs.mObjectType == ScenePickObjectType.Sim))
                {
                    guid = new ObjectGuid(eventArgs.mObjectId);
                }
                else if (eventArgs.mObjectType == ScenePickObjectType.Wall)
                {
                    guid = LotManager.GetLotObjectGuid(eventArgs.mObjectId);
                }

                IScriptProxy proxy = Simulator.GetProxy(guid);
                if (proxy != null)
                {
                    IObjectUI target = proxy.Target as IObjectUI;
                    if (target != null)
                    {
                        Lot lot = target as Lot;
                        if (lot != null)
                        {
                            return(OnPickLot(lot, eventArgs.mMouseEvent, eventArgs.AsGameObjectHit()));
                        }
                        else
                        {
                            GameObject obj = target as GameObject;
                            if (obj != null)
                            {
                                return(GameObjectEx.OnPick(obj, eventArgs.mMouseEvent, eventArgs.AsGameObjectHit()));
                            }
                        }
                    }
                }
                break;
            }

            return(false);
        }
Example #2
0
        private bool CustomProcessClick(ScenePickArgs eventArgs)
        {
            switch (eventArgs.mObjectType)
            {
                case ScenePickObjectType.Terrain:
                case ScenePickObjectType.Floor:
                case ScenePickObjectType.RoadStreet:
                case ScenePickObjectType.RoadSidewalk:
                case ScenePickObjectType.WaterPond:
                case ScenePickObjectType.WaterSea:
                case ScenePickObjectType.WaterPool:
                case ScenePickObjectType.WaterFountain:
                    if ((Bin.PlacementHousehold == null) && (Bin.PlacementLot == null))
                    {
                        return GameObjectEx.OnPick(Terrain.Singleton, eventArgs.mMouseEvent, eventArgs.AsGameObjectHit());
                    }
                    break;
                case ScenePickObjectType.Object:
                case ScenePickObjectType.Sim:
                case ScenePickObjectType.Wall:
                    ObjectGuid guid = ObjectGuid.InvalidObjectGuid;
                    if ((eventArgs.mObjectType == ScenePickObjectType.Object) || (eventArgs.mObjectType == ScenePickObjectType.Sim))
                    {
                        guid = new ObjectGuid(eventArgs.mObjectId);
                    }
                    else if (eventArgs.mObjectType == ScenePickObjectType.Wall)
                    {
                        guid = LotManager.GetLotObjectGuid(eventArgs.mObjectId);
                    }

                    IScriptProxy proxy = Simulator.GetProxy(guid);
                    if (proxy != null)
                    {
                        IObjectUI target = proxy.Target as IObjectUI;
                        if (target != null)
                        {
                            Lot lot = target as Lot;
                            if (lot != null)
                            {
                                return OnPickLot(lot, eventArgs.mMouseEvent, eventArgs.AsGameObjectHit());
                            }
                            else
                            {
                                GameObject obj = target as GameObject;
                                if (obj != null)
                                {
                                    return GameObjectEx.OnPick(obj, eventArgs.mMouseEvent, eventArgs.AsGameObjectHit());
                                }
                            }
                        }
                    }
                    break;
            }

            return false;
        }
Example #3
0
        public static string SceneWindow_Hover(IScriptProxy o, ScenePickArgs args)
        {
            DoorSettings settings = GoHere.Settings.GetDoorSettings(o.ObjectId, false);

            if (settings == null)
            {
                return(string.Empty);
            }

            string tooltip = string.Empty;

            if (settings.ActiveFilters.Count > 0)
            {
                string critera = FilterHelper.GetFilterAsLocalizedCriteria(settings.ActiveFilters);
                if (critera.Length > 3)
                {
                    tooltip = GoHere.Localize("DoorCriteria:ToolTip") + " (" + GoHere.Localize("DoorFilterType:" + settings.mType.ToString()) + ")" + Common.NewLine + critera;
                }
            }

            if (settings.mDoorOpen > -1 && settings.mDoorClose > -1)
            {
                if (tooltip != string.Empty)
                {
                    tooltip = tooltip + Common.NewLine;
                }

                tooltip = tooltip + GoHere.Localize("OpenCloseTime:MenuName") + ": " + settings.mDoorOpen.ToString() + " - " + settings.mDoorClose.ToString();
            }

            if (settings.mDoorCost > 0)
            {
                if (tooltip != string.Empty)
                {
                    tooltip = tooltip + Common.NewLine;
                }

                tooltip = tooltip + GoHere.Localize("DoorCost:MenuName") + ": " + settings.mDoorCost.ToString();
            }

            if (settings.mIsOneWayDoor)
            {
                if (tooltip != string.Empty)
                {
                    tooltip = tooltip + Common.NewLine;
                }

                tooltip = tooltip + GoHere.Localize("OneWayDoor:MenuName");
            }

            return(tooltip);
        }
Example #4
0
        public override void ProcessClick(ScenePickArgs eventArgs)
        {
            try
            {
                Sims3.Gameplay.UI.PieMenu.ClearInteractions();

                if (!CustomProcessClick(eventArgs))
                {
                    ProcessClick(eventArgs, false);
                }
            }
            catch (Exception e)
            {
                Common.Exception("Type: " + eventArgs.mObjectType, e);
            }
        }
Example #5
0
        public override void ProcessClick(ScenePickArgs eventArgs)
        {
            try
            {
                Sims3.Gameplay.UI.PieMenu.ClearInteractions();

                if (!CustomProcessClick(eventArgs))
                {
                    ProcessClick(eventArgs, false);
                }
            }
            catch (Exception e)
            {
                Common.Exception("Type: " + eventArgs.mObjectType, e);
            }
        }
Example #6
0
        public override void ProcessClick(ScenePickArgs eventArgs)
        {
            try
            {
                if (((eventArgs.mObjectType != ScenePickObjectType.None) && !WasMouseDragged(eventArgs)) && ((eventArgs.mMouseEvent.MouseKey != MouseKeys.kMouseRight) || ((eventArgs.mMouseEvent.Modifiers & Modifiers.kModifierMaskControl) == Modifiers.kModifierMaskNone)))
                {
                    bool flag = false;
                    if ((eventArgs.mObjectType == ScenePickObjectType.Object) || (eventArgs.mObjectType == ScenePickObjectType.Sim))
                    {
                        ObjectGuid objectId = new ObjectGuid(eventArgs.mObjectId);
                        IScriptProxy proxy = Simulator.GetProxy(objectId);
                        if (proxy != null)
                        {
                            IObjectUI target = proxy.Target as IObjectUI;
                            if (target != null)
                            {
                                Vehicle vehicle = target as Vehicle;
                                if (vehicle != null)
                                {
                                    flag = OnSelect(vehicle, eventArgs.mMouseEvent);
                                }
                                else if (target is Sim)
                                {
                                    flag = OnSelect(target as Sim, eventArgs.mMouseEvent);
                                }
                                else
                                {
                                    flag = target.OnSelect(eventArgs.mMouseEvent);
                                }
                            }
                        }
                    }

                    if (!flag)
                    {
                        CameraController.RequestLerpToTarget(eventArgs.mDisplayPos, 1.5f, false);
                    }
                }
            }
            catch (Exception e)
            {
                Common.Exception("ProcessClick", e);
            }
        }
Example #7
0
        public override void ProcessClick(ScenePickArgs eventArgs)
        {
            try
            {
                if (((eventArgs.mObjectType != ScenePickObjectType.None) && !WasMouseDragged(eventArgs)) && ((eventArgs.mMouseEvent.MouseKey != MouseKeys.kMouseRight) || ((eventArgs.mMouseEvent.Modifiers & Modifiers.kModifierMaskControl) == Modifiers.kModifierMaskNone)))
                {
                    bool flag = false;
                    if ((eventArgs.mObjectType == ScenePickObjectType.Object) || (eventArgs.mObjectType == ScenePickObjectType.Sim))
                    {
                        ObjectGuid   objectId = new ObjectGuid(eventArgs.mObjectId);
                        IScriptProxy proxy    = Simulator.GetProxy(objectId);
                        if (proxy != null)
                        {
                            IObjectUI target = proxy.Target as IObjectUI;
                            if (target != null)
                            {
                                Vehicle vehicle = target as Vehicle;
                                if (vehicle != null)
                                {
                                    flag = OnSelect(vehicle, eventArgs.mMouseEvent);
                                }
                                else if (target is Sim)
                                {
                                    flag = OnSelect(target as Sim, eventArgs.mMouseEvent);
                                }
                                else
                                {
                                    flag = target.OnSelect(eventArgs.mMouseEvent);
                                }
                            }
                        }
                    }

                    if (!flag)
                    {
                        CameraController.RequestLerpToTarget(eventArgs.mDisplayPos, 1.5f, false);
                    }
                }
            }
            catch (Exception e)
            {
                Common.Exception("ProcessClick", e);
            }
        }
Example #8
0
        public static bool SceneWindow_Hover(WindowBase w, ref ScenePickArgs args)
        {
            if (Sims3.Gameplay.Gameflow.CurrentGameSpeed == Sims3.Gameplay.Gameflow.GameSpeed.Pause && !Sims3.Gameplay.GameStates.IsBuildBuyLikeState)
            {
                return(false);
            }

            if (!UIUtils.IsOkayToStartModalDialog(true))
            {
                return(false);
            }

            if (args.mObjectType == ScenePickObjectType.Object)
            {
                if (args.mObjectId == sLastObjectId && sCurrentTip != null)
                {
                    RestartAlarm();
                    return(true);
                }
                else
                {
                    sLastObjectId = args.mObjectId;
                    HideCurrentTooltip();
                }

                if (sCurrentTip != null)
                {
                    return(false);
                }

                IScriptProxy proxy = Simulator.GetProxy(new ObjectGuid(args.mObjectId));

                if (proxy != null && proxy.Target != null)
                {
                    Type type = proxy.Target.GetType();

                    if (type == null)
                    {
                        return(false);
                    }

                    Type lastType = null;
                    int  loop     = 0;
                    while (type != typeof(GameObject))
                    {
                        if (loop > 6)
                        {
                            break;
                        }

                        lastType = type;
                        type     = type.BaseType;

                        if (type == typeof(CommonDoor))
                        {
                            break;
                        }

                        loop++;
                    }

                    type = lastType;

                    if (!sListeners.ContainsKey(type))
                    {
                        return(false);
                    }

                    Vector2    vector  = UIManager.GetCursorPosition();
                    WindowBase baseWin = UIManager.GetWindowFromPoint(vector);

                    string content = string.Empty;
                    foreach (MethodInfo info in sListeners[type])
                    {
                        object[] parameters = new object[] { proxy, args };
                        content += (string)info.Invoke(null, parameters);
                    }

                    if (content.Length > 3)
                    {
                        Vector2 mousePosition = new Vector2(0f, 0f);
                        mousePosition = baseWin.Parent != null?baseWin.Parent.ScreenToWindow(vector) : baseWin.ScreenToWindow(vector);

                        SetAlarm();
                        sCurrentTip = CreateTooltip(content, mousePosition, baseWin);
                        sTipObject  = args.mObjectId;
                    }
                }
            }

            return(true);
        }
Example #9
0
        public static bool SceneWindow_Hover(WindowBase w, ref ScenePickArgs args)
        {
            if (Sims3.Gameplay.Gameflow.CurrentGameSpeed == Sims3.Gameplay.Gameflow.GameSpeed.Pause && !Sims3.Gameplay.GameStates.IsBuildBuyLikeState)
            {
                return false;
            }

            if (!UIUtils.IsOkayToStartModalDialog(true))
            {
                return false;
            }

            if (args.mObjectType == ScenePickObjectType.Object)
            {
                if (args.mObjectId == sLastObjectId && sCurrentTip != null)
                {
                    RestartAlarm();
                    return true;
                }
                else
                {
                    sLastObjectId = args.mObjectId;
                    HideCurrentTooltip();
                }

                if (sCurrentTip != null)
                {
                    return false;
                }                     

                IScriptProxy proxy = Simulator.GetProxy(new ObjectGuid(args.mObjectId));

                if (proxy != null && proxy.Target != null)
                {
                    Type type = proxy.Target.GetType();

                    if (type == null)
                    {
                        return false;
                    }

                    Type lastType = null;
                    int loop = 0;
                    while (type != typeof(GameObject))
                    {
                        if (loop > 6)
                        {
                            break;
                        }

                        lastType = type;
                        type = type.BaseType;

                        if (type == typeof(CommonDoor))
                        {
                            break;
                        }

                        loop++;
                    }

                    type = lastType;

                    if (!sListeners.ContainsKey(type))
                    {
                        return false;
                    }

                    Vector2 vector = UIManager.GetCursorPosition();
                    WindowBase baseWin = UIManager.GetWindowFromPoint(vector);

                    string content = string.Empty;
                    foreach (MethodInfo info in sListeners[type])
                    {
                        object[] parameters = new object[] { proxy, args };
                        content += (string)info.Invoke(null, parameters);
                    }

                    if (content.Length > 3)
                    {
                        Vector2 mousePosition = new Vector2(0f, 0f);
                        mousePosition = baseWin.Parent != null ? baseWin.Parent.ScreenToWindow(vector) : baseWin.ScreenToWindow(vector);

                        SetAlarm();
                        sCurrentTip = CreateTooltip(content, mousePosition, baseWin);
                        sTipObject = args.mObjectId;
                    }
                }
            }

            return true;
        }
Example #10
0
 public bool LotHasValidInteractions(ulong lotID, ScenePickArgs eventArgs)
 {
     return mHudModel.LotHasValidInteractions(lotID, eventArgs);
 }
Example #11
0
 public void ForwardGameplayClickEvent(ScenePickArgs eventArgs)
 {
     mHudModel.ForwardGameplayClickEvent(eventArgs);
 }
Example #12
0
 public bool CurrentSimHasValidInteractionsOn(ObjectGuid objGuid, ScenePickArgs eventArgs)
 {
     return mHudModel.CurrentSimHasValidInteractionsOn(objGuid, eventArgs);
 }
        public static string SceneWindow_Hover(IScriptProxy o, ScenePickArgs args)
        {
            DoorSettings settings = GoHere.Settings.GetDoorSettings(o.ObjectId, false);

            if (settings == null) return string.Empty;

            string tooltip = string.Empty;

            if (settings.ActiveFilters.Count > 0)
            {
                string critera = FilterHelper.GetFilterAsLocalizedCriteria(settings.ActiveFilters);
                if (critera.Length > 3)
                {
                    tooltip = GoHere.Localize("DoorCriteria:ToolTip") + " (" + GoHere.Localize("DoorFilterType:" + settings.mType.ToString()) + ")" + Common.NewLine + critera;
                }
            }

            if (settings.mDoorOpen > -1 && settings.mDoorClose > -1)
            {
                if (tooltip != string.Empty)
                {
                    tooltip = tooltip + Common.NewLine;
                }

                tooltip = tooltip + GoHere.Localize("OpenCloseTime:MenuName") + ": " + settings.mDoorOpen.ToString() + " - " + settings.mDoorClose.ToString();
            }

            if (settings.mDoorCost > 0)
            {
                if (tooltip != string.Empty)
                {
                    tooltip = tooltip + Common.NewLine;
                }

                tooltip = tooltip + GoHere.Localize("DoorCost:MenuName") + ": " + settings.mDoorCost.ToString();
            }

            return tooltip;
        }