Ejemplo n.º 1
0
 public RechargerInteraction(SpawnCommand p_command, Int32 p_parentID, Int32 p_commandIndex) : base(p_command, p_parentID, p_commandIndex)
 {
     m_parent = (Grid.FindInteractiveObject(m_parentID) as RechargingObject);
     if (m_parent == null)
     {
         throw new InvalidOperationException("Tried to add a RechargerInteraction to something that is not a Recharging Object!" + m_parentID);
     }
 }
Ejemplo n.º 2
0
        internal void UpdateTime(Int32 p_minutes, ETimeChangeReason p_reason)
        {
            m_lastTime = m_time;
            m_time    += new MMTime(p_minutes);
            if (DayState != LastDayState)
            {
                OnDayStateChanged(p_reason);
            }
            MMTime p_t = new MMTime(0, 8, m_time.Days);

            if (m_time >= p_t && m_lastTime < p_t)
            {
                Grid grid = LegacyLogic.Instance.MapLoader.Grid;
                foreach (GridSlot gridSlot in grid.SlotIterator())
                {
                    foreach (InteractiveObject interactiveObject in gridSlot.GetInteractiveObjectIterator())
                    {
                        RechargingObject rechargingObject = interactiveObject as RechargingObject;
                        if (rechargingObject != null)
                        {
                            rechargingObject.OnCheckRecharge();
                        }
                    }
                }
            }
            if (p_reason == ETimeChangeReason.Movement && m_time.Hours == 0)
            {
                if ((p_minutes == 1 && m_time.Minutes == 1) || (p_minutes > 1 && m_time.Minutes > 0 && m_time.Minutes <= p_minutes))
                {
                    m_calendar.NextDay();
                }
            }
            else if (p_reason == ETimeChangeReason.Resting)
            {
                m_calendar.SetDateByPassedTime(m_time.Days);
            }
            LegacyLogic.Instance.EventManager.InvokeEvent(this, EEventType.GAMETIME_TIME_CHANGED, new GameTimeEventArgs(DayState, LastDayState, p_reason));
        }
Ejemplo n.º 3
0
        private void UpdateName(InteractiveObject p_interactiveObject)
        {
            Boolean flag = false;
            IEnumerable <InteractiveObjectTooltipStaticData> iterator = StaticDataHandler.GetIterator <InteractiveObjectTooltipStaticData>(EDataType.INTERACTIVE_OBJECT_TOOLTIPS);
            KeyCode keyCode = KeyConfigManager.KeyBindings[EHotkeyType.INTERACT].Key1;

            if (keyCode == KeyCode.None)
            {
                keyCode = KeyConfigManager.KeyBindings[EHotkeyType.INTERACT].AltKey1;
            }
            String text = m_actionColorHex + "[" + LocaManager.GetText("OPTIONS_INPUT_KEYNAME_" + keyCode.ToString().ToUpper()) + "][-]";

            if (!String.IsNullOrEmpty(p_interactiveObject.Prefab))
            {
                String directoryName = Path.GetDirectoryName(p_interactiveObject.Prefab);
                foreach (InteractiveObjectTooltipStaticData interactiveObjectTooltipStaticData in iterator)
                {
                    if (interactiveObjectTooltipStaticData.PrefabFolder == directoryName || interactiveObjectTooltipStaticData.PrefabFolder == p_interactiveObject.Prefab)
                    {
                        m_label.text = LocaManager.GetText(interactiveObjectTooltipStaticData.LocaKey, text);
                        flag         = true;
                        break;
                    }
                }
            }
            if (p_interactiveObject is Button)
            {
                if (!flag)
                {
                    m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_BUTTON", text);
                }
                return;
            }
            if (p_interactiveObject is Lever)
            {
                if (!flag)
                {
                    m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_LEVER", text);
                }
                return;
            }
            if (!(p_interactiveObject is Barrel))
            {
                if (p_interactiveObject is Container)
                {
                    Container container = p_interactiveObject as Container;
                    if (!container.IsEmpty())
                    {
                        if (!flag)
                        {
                            m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_CONTAINER", text);
                        }
                    }
                    else
                    {
                        foreach (SpawnCommand spawnCommand in container.Commands)
                        {
                            if (spawnCommand.Type == EInteraction.CHANGE_ATTRIBUTE)
                            {
                                m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_CONTAINER", text);
                                return;
                            }
                        }
                        m_label.text = String.Empty;
                    }
                    return;
                }
                if (p_interactiveObject is Door)
                {
                    if (LegacyLogic.Instance.WorldManager.Party.SelectedInteractiveObject == null || p_interactiveObject.IsSecret)
                    {
                        m_label.text = String.Empty;
                        return;
                    }
                    if (((Door)p_interactiveObject).State == EInteractiveObjectState.DOOR_OPEN)
                    {
                        m_label.text = String.Empty;
                    }
                    else
                    {
                        m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_DOOR", text);
                    }
                    return;
                }
                else
                {
                    if (p_interactiveObject is Sign)
                    {
                        if (!flag)
                        {
                            m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_SIGN", text);
                        }
                        return;
                    }
                    if (p_interactiveObject is Entrance)
                    {
                        if (flag)
                        {
                            return;
                        }
                        Entrance entrance = (Entrance)p_interactiveObject;
                        String   text2    = entrance.MinimapTooltipLocaKey;
                        if (!String.IsNullOrEmpty(text2))
                        {
                            text2        = LocaManager.GetText(entrance.MinimapTooltipLocaKey);
                            m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_ENTRANCE", text, text2);
                            return;
                        }
                        text2 = null;
                        foreach (SpawnCommand spawnCommand2 in entrance.Commands)
                        {
                            if (spawnCommand2.Type == EInteraction.USE_ENTRANCE)
                            {
                                String[] array = spawnCommand2.Extra.Split(new Char[]
                                {
                                    ','
                                });
                                text2 = array[0].Replace(".xml", String.Empty);
                                break;
                            }
                        }
                        if (text2 != null)
                        {
                            GridInfo gridInfo = LegacyLogic.Instance.MapLoader.FindGridInfo(text2);
                            if (gridInfo != null)
                            {
                                text2 = LocaManager.GetText(gridInfo.LocationLocaName);
                                if (LegacyLogic.Instance.MapLoader.Grid.Type == EMapType.DUNGEON)
                                {
                                    text2 = text2.Replace("@", ", ");
                                }
                                else if (text2.LastIndexOf('@') != -1)
                                {
                                    text2 = text2.Remove(text2.LastIndexOf('@'));
                                }
                                m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_ENTRANCE", text, text2);
                                return;
                            }
                            Debug.LogError("Grid Info not found " + text2);
                        }
                    }
                    else if (p_interactiveObject is NpcContainer)
                    {
                        NpcContainer npcContainer = (NpcContainer)p_interactiveObject;
                        if (!npcContainer.IsEnabled)
                        {
                            m_label.text = String.Empty;
                            return;
                        }
                        String minimapTooltipLocaKey = npcContainer.MinimapTooltipLocaKey;
                        if (!String.IsNullOrEmpty(npcContainer.IndoorScene))
                        {
                            if (!String.IsNullOrEmpty(minimapTooltipLocaKey))
                            {
                                String text3 = LocaManager.GetText(minimapTooltipLocaKey);
                                m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_BUILDING_DEFAULT", text, text3);
                                return;
                            }
                            foreach (InteractiveObjectTooltipStaticData interactiveObjectTooltipStaticData2 in iterator)
                            {
                                if (interactiveObjectTooltipStaticData2.PrefabFolder == npcContainer.IndoorScene)
                                {
                                    m_label.text = LocaManager.GetText(interactiveObjectTooltipStaticData2.LocaKey, text);
                                    return;
                                }
                            }
                            m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_INDOOR_CONTEXT", text);
                            return;
                        }
                        else
                        {
                            if (!npcContainer.Npcs[0].IsEnabled)
                            {
                                m_label.text = String.Empty;
                                return;
                            }
                            foreach (SpawnCommand spawnCommand3 in npcContainer.Commands)
                            {
                                if (spawnCommand3.Type == EInteraction.START_DEFINED_DIALOG && !String.IsNullOrEmpty(spawnCommand3.Precondition) && spawnCommand3.Precondition.StartsWith("PARTY_CHECK"))
                                {
                                    BasePrecondition basePrecondition = BaseInteraction.ParsePrecondition(spawnCommand3.Precondition);
                                    if (basePrecondition is PartyCheckPrecondition && !((PartyCheckPrecondition)basePrecondition).Evaluate())
                                    {
                                        m_label.text = String.Empty;
                                        return;
                                    }
                                }
                            }
                            if (flag)
                            {
                                return;
                            }
                            if (!String.IsNullOrEmpty(minimapTooltipLocaKey))
                            {
                                m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_NPC", text, minimapTooltipLocaKey);
                                return;
                            }
                            if (npcContainer.Npcs[0].StaticID != 224 && npcContainer.Npcs[0].StaticID != 225)
                            {
                                String text4 = LocaManager.GetText(npcContainer.Npcs[0].StaticData.NameKey);
                                m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_NPC", text, text4);
                                return;
                            }
                        }
                    }
                    else if (p_interactiveObject is RechargingObject)
                    {
                        RechargingObject rechargingObject = (RechargingObject)p_interactiveObject;
                        if (rechargingObject.IsFountain())
                        {
                            m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_FOUNTAIN", text);
                        }
                        else if (rechargingObject.IsCrystal())
                        {
                            m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_CRYSTAL", text);
                        }
                        else
                        {
                            m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_STATUE", text);
                        }
                        return;
                    }
                    m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_FALLBACK", text);
                }
                return;
            }
            Barrel barrel = p_interactiveObject as Barrel;

            if (barrel.State == EInteractiveObjectState.BARREL_EMPTY)
            {
                m_label.text = String.Empty;
                return;
            }
            if (barrel.State == EInteractiveObjectState.BARREL_OPEN)
            {
                m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_FALLBACK", text);
                return;
            }
            m_label.text = LocaManager.GetText("INTERACT_TOOLTIP_BARREL", text);
        }