Exemple #1
0
        internal unsafe TwoDimArray(C2DA array)
        {
            if (array == null)
            {
                throw new ArgumentNullException(nameof(array));
            }

            RowCount    = array.m_nNumRows;
            ColumnCount = array.m_nNumColumns;

            CExoStringArray columnArray = CExoStringArray.FromPointer(array.m_pColumnLabel);

            Columns = new string[array.m_nNumColumns];

            for (int i = 0; i < array.m_nNumColumns; i++)
            {
                string columnName = columnArray.GetItem(i).ToString();
                Columns[i] = columnName;
            }

            arrayData = new string[RowCount, ColumnCount];
            for (int i = 0; i < RowCount; i++)
            {
                for (int j = 0; j < ColumnCount; j++)
                {
                    CExoStringData data = ((CExoStringData **)array.m_pArrayData)[i][j];
                    arrayData[i, j] = data.ToString();
                }
            }
        }
Exemple #2
0
        private uint OnAIActionRest(void *pCreature, void *pNode)
        {
            CNWSCreature creature   = CNWSCreature.FromPointer(pCreature);
            NwCreature?  nwCreature = creature.ToNwObject <NwCreature>();

            if (nwCreature != null && restDurationOverrides.TryGetValue(nwCreature, out int durationOverride))
            {
                byte creatureLevel = creature.m_pStats.GetLevel(0);
                int  originalValue;

                C2DA durationTable = NWNXLib.Rules().m_p2DArrays.m_pRestDurationTable;

                durationTable.GetINTEntry(creatureLevel, DurationTableKey, &originalValue);
                durationTable.SetINTEntry(creatureLevel, DurationTableKey, durationOverride);
                uint retVal = aiActionRestHook.CallOriginal(pCreature, pNode);
                durationTable.SetINTEntry(creatureLevel, DurationTableKey, originalValue);

                return(retVal);
            }

            return(aiActionRestHook.CallOriginal(pCreature, pNode));
        }
Exemple #3
0
 internal TwoDimArray(C2DA array) : base(array)
 {
     cachedRows = new T[RowCount];
 }
Exemple #4
0
        internal static TwoDimArray <T> GetTable <T>(C2DA twoDimArray) where T : class, ITwoDimArrayEntry, new()
        {
            TwoDimArray <T> retVal = new TwoDimArray <T>(twoDimArray);

            return(retVal);
        }