コード例 #1
0
ファイル: ConflictDetector.cs プロジェクト: vjmira/fomm
        /// <summary>
        ///   Checks for conflicts with mod-author specified critical records. Used by background worker dialog.
        /// </summary>
        public void DetectConflicts(IList <string> p_lstOrderedPlugins)
        {
            m_booCancelled = false;
            for (var intIndex = 0; intIndex < p_lstOrderedPlugins.Count; intIndex++)
            {
                var strBasePlugin = p_lstOrderedPlugins[intIndex];
                if (m_booCancelled)
                {
                    return;
                }

                OnPluginProcessed();

                if (SKIP_PLUGINS.Contains(strBasePlugin.ToLowerInvariant()))
                {
                    continue;
                }

                var crpBasePlugin = new CriticalRecordPlugin(Path.Combine(Program.GameMode.PluginsPath, strBasePlugin), false);
                if (!crpBasePlugin.HasCriticalRecordData)
                {
                    continue;
                }
                for (var i = intIndex + 1; i < p_lstOrderedPlugins.Count; i++)
                {
                    var strPlugin = p_lstOrderedPlugins[i];
                    var plgPlugin = new Plugin(Path.Combine(Program.GameMode.PluginsPath, strPlugin), false);
                    foreach (var uintFormId in crpBasePlugin.CriticalRecordFormIds)
                    {
                        var strMasterPlugin = crpBasePlugin.GetMaster((Int32)uintFormId >> 24) ?? strBasePlugin;
                        if (plgPlugin.GetMasterIndex(strMasterPlugin) < 0)
                        {
                            continue;
                        }
                        var uintAdjustedFormId = ((UInt32)plgPlugin.GetMasterIndex(strMasterPlugin) << 24);
                        uintAdjustedFormId = uintAdjustedFormId + (uintFormId & 0x00ffffff);
                        if (plgPlugin.ContainsFormId(uintAdjustedFormId))
                        {
                            OnConflictDetected(crpBasePlugin, plgPlugin, uintFormId, crpBasePlugin.GetCriticalRecordInfo(uintFormId));
                        }
                    }
                }
            }
        }
コード例 #2
0
ファイル: ConflictDetector.cs プロジェクト: IntegralLee/fomm
    /// <summary>
    ///   Checks for conflicts with mod-author specified critical records. Used by background worker dialog.
    /// </summary>
    public void DetectConflicts(IList<string> p_lstOrderedPlugins)
    {
      m_booCancelled = false;
      for (var intIndex = 0; intIndex < p_lstOrderedPlugins.Count; intIndex++)
      {
        var strBasePlugin = p_lstOrderedPlugins[intIndex];
        if (m_booCancelled)
        {
          return;
        }

        OnPluginProcessed();

        if (SKIP_PLUGINS.Contains(strBasePlugin.ToLowerInvariant()))
        {
          continue;
        }

        var crpBasePlugin = new CriticalRecordPlugin(Path.Combine(Program.GameMode.PluginsPath, strBasePlugin), false);
        if (!crpBasePlugin.HasCriticalRecordData)
        {
          continue;
        }
        for (var i = intIndex + 1; i < p_lstOrderedPlugins.Count; i++)
        {
          var strPlugin = p_lstOrderedPlugins[i];
          var plgPlugin = new Plugin(Path.Combine(Program.GameMode.PluginsPath, strPlugin), false);
          foreach (var uintFormId in crpBasePlugin.CriticalRecordFormIds)
          {
            var strMasterPlugin = crpBasePlugin.GetMaster((Int32) uintFormId >> 24) ?? strBasePlugin;
            if (plgPlugin.GetMasterIndex(strMasterPlugin) < 0)
            {
              continue;
            }
            var uintAdjustedFormId = ((UInt32) plgPlugin.GetMasterIndex(strMasterPlugin) << 24);
            uintAdjustedFormId = uintAdjustedFormId + (uintFormId & 0x00ffffff);
            if (plgPlugin.ContainsFormId(uintAdjustedFormId))
            {
              OnConflictDetected(crpBasePlugin, plgPlugin, uintFormId, crpBasePlugin.GetCriticalRecordInfo(uintFormId));
            }
          }
        }
      }
    }