Ejemplo n.º 1
0
        public static ReadableTuple <int> GetTuple(DbDebugItemBase debug, int tItemId)
        {
            if (_itemDb == null)
            {
                _itemDb = SdeEditor.Instance.ProjectDatabase.GetMetaTable <int>(ServerDbs.Items);
            }

            return(_itemDb.TryGetTuple(tItemId));
        }
Ejemplo n.º 2
0
        public static int AegisNameToId(DbDebugItemBase debug, object referenceId, string aegisName)
        {
            if (_reverseTable.Count == 0)
            {
                int index = ServerItemAttributes.AegisName.Index;
                _itemDb = SdeEditor.Instance.ProjectDatabase.GetMetaTable <int>(ServerDbs.Items);
                var items = _itemDb.FastItems;

                foreach (var item in items)
                {
                    _reverseTable[item.GetStringValue(index)] = item.GetKey <int>();
                    _reverseTableSub[(item.GetStringValue(index + 1) ?? "").Replace(" ", "_")] = item.GetKey <int>();
                }
            }

            int result;

            if (Int32.TryParse(aegisName, out result))
            {
                return(result);
            }

            if (_reverseTable.TryGetValue(aegisName, out result))
            {
                return(result);
            }

            if (_reverseTableSub.TryGetValue(aegisName, out result))
            {
                var tuple             = GetTuple(debug, result);
                var expectedAegisName = tuple == null ? "#INVALID" : tuple.GetValue <string>(ServerItemAttributes.AegisName);

                if (debug != null)
                {
                    debug.ReportIdException("The AegisName '" + aegisName + "' hasn't been directly found and its value may be incorrect. The expected value should be '" + expectedAegisName + "'.", referenceId, ErrorLevel.Warning);
                }

                return(result);
            }

            if (debug != null)
            {
                debug.ReportIdException("The AegisName '" + aegisName + "' couldn't be parsed to its ID because it doesn't exist.", referenceId, ErrorLevel.Critical);
            }

            return(0);
        }