Skip to content

Commit 657250c

Browse files
committed
tier1: fix up offset padding.
1 parent a5d6e26 commit 657250c

File tree

4 files changed

+59
-60
lines changed

4 files changed

+59
-60
lines changed

include/tier1/utl_dict.inc

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
#pragma semicolon 1
1313

1414
#define UTL_DICT_TAG "[UtlDict]"
15-
#define UTL_DICT_VERSION "1.0.0"
15+
#define UTL_DICT_VERSION "1.0.1"
1616

1717
/**
1818
* Author: blueblur
1919
* Date: 2025-11-14
2020
* url: https://github.com/blueblur0730/modified-plugins
21-
* Version: 1.0.0
21+
* Version: 1.0.1
2222
*/
2323

2424
enum EDictCompareType
@@ -64,8 +64,12 @@ methodmap UtlDict < AddressBase {
6464
*/
6565
}
6666

67-
public any Element(int i, int size = 4, NumberType type = NumberType_Int32) {
68-
return this.m_Elements.Element(i, size, type);
67+
public any Element(int i, int size, int keySize, NumberType type = NumberType_Int32) {
68+
return this.m_Elements.Element(i, size, keySize, type);
69+
}
70+
71+
public any ElementEx(int i, int size, int keySize) {
72+
return this.m_Elements.GetElementEx(i, size, keySize);
6973
}
7074

7175
public Stringt GetElementName(int i, int size = 4, NumberType type = NumberType_Int32) {
@@ -170,8 +174,8 @@ methodmap UtlDict < AddressBase {
170174

171175
// delete m_Elements[index];
172176
if (bAlwaysFreeElems && destructor) {
173-
any elem = this.m_Elements.GetElement(index, elemSize, elementSize);
174-
any elemAddr = this.m_Elements.GetElementEx(index, elemSize);
177+
any elem = this.m_Elements.GetElement(index, elemSize, keySize, elementSize);
178+
any elemAddr = this.m_Elements.GetElementEx(index, elemSize, keySize);
175179

176180
this.m_Elements.Destruct(index, elemSize, elemAddr, elem, destructor);
177181
}

include/tier1/utl_map.inc

Lines changed: 24 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
#pragma semicolon 1
1313

1414
#define UTL_MAP_TAG "[UtlMap]"
15-
#define UTL_MAP_VERSION "1.0.0"
15+
#define UTL_MAP_VERSION "1.0.2"
1616

1717
/**
1818
* Author: blueblur
@@ -80,9 +80,6 @@ protected:
8080
*/
8181
typedef UtlMapDestructorFunc = function void (UtlMap vec, int i, any addr, any obj, int size);
8282

83-
//#define NODET_OFFSET_KEY 0x0
84-
#define NODET_OFFSET_ELEM 0x4
85-
8683
methodmap Node_t < AddressBase {
8784
public Node_t(Address addr) {
8885
Node_t p = view_as<Node_t>(addr);
@@ -106,21 +103,19 @@ methodmap Node_t < AddressBase {
106103
StoreToAddress(this.addr, value, elementSize);
107104
}
108105

109-
public any GetElem(NumberType elementSize = NumberType_Int32) {
110-
return LoadFromAddress(this.addr + NODET_OFFSET_ELEM, elementSize);
106+
public any GetElem(int keySize, NumberType elementSize = NumberType_Int32) {
107+
return LoadFromAddress(this.addr + keySize, elementSize);
111108
}
112109

113-
public any GetElemEx() {
114-
return this.addr + NODET_OFFSET_ELEM;
110+
public any GetElemEx(int keySize) {
111+
return this.addr + keySize;
115112
}
116113

117-
public void SetElem(any value, NumberType elementSize = NumberType_Int32) {
118-
StoreToAddress(this.addr + NODET_OFFSET_ELEM, value, elementSize);
114+
public void SetElem(any value, int keySize, NumberType elementSize = NumberType_Int32) {
115+
StoreToAddress(this.addr + keySize, value, elementSize);
119116
}
120117
}
121118

122-
#define UTL_MAP_OFFSET_TREE 0x0
123-
124119
methodmap UtlMap < AddressBase {
125120
public UtlMap(Address addr) {
126121
UtlMap p = view_as<UtlMap>(addr);
@@ -145,32 +140,32 @@ methodmap UtlMap < AddressBase {
145140
#endif
146141
}
147142

148-
public any GetElement(int i, int size, NumberType elementSize = NumberType_Int32) {
149-
return view_as<Node_t>(this.m_Tree.Get(i, size)).GetElem(elementSize);
143+
public any GetElement(int i, int size, int keySize, NumberType elementSize = NumberType_Int32) {
144+
return view_as<Node_t>(this.m_Tree.GetEx(i, size) + 8).GetElem(keySize, elementSize);
150145
}
151146

152-
public any GetElementEx(int i, int size) {
153-
return view_as<Node_t>(this.m_Tree.Get(i, size)).GetElemEx();
147+
public any GetElementEx(int i, int size, int keySize) {
148+
return view_as<Node_t>(this.m_Tree.GetEx(i, size) + 8).GetElemEx(keySize);
154149
}
155150

156-
public void SetElement(int i, any value, int size, NumberType elementSize = NumberType_Int32) {
157-
view_as<Node_t>(this.m_Tree.Get(i, size)).SetElem(value, elementSize);
151+
public void SetElement(int i, any value, int size, int keySize, NumberType elementSize = NumberType_Int32) {
152+
view_as<Node_t>(this.m_Tree.GetEx(i, size) + 8).SetElem(value, keySize, elementSize);
158153
}
159154

160155
public any GetKey(int i, int size, NumberType elementSize = NumberType_Int32) {
161-
return view_as<Node_t>(this.m_Tree.Get(i, size)).GetKey(elementSize);
156+
return view_as<Node_t>(this.m_Tree.GetEx(i, size) + 8).GetKey(elementSize);
162157
}
163158

164159
public any GetKeyEx(int i, int size) {
165-
return view_as<Node_t>(this.m_Tree.Get(i, size)).GetKeyEx();
160+
return view_as<Node_t>(this.m_Tree.GetEx(i, size) + 8).GetKeyEx();
166161
}
167162

168163
public void SetKey(int i, any value, int size, NumberType elementSize = NumberType_Int32) {
169-
view_as<Node_t>(this.m_Tree.Get(i, size)).SetKey(value, elementSize);
164+
view_as<Node_t>(this.m_Tree.GetEx(i, size) + 8).SetKey(value, elementSize);
170165
}
171166

172-
public any Element(int i, int size, NumberType elementSize = NumberType_Int32) {
173-
return this.GetElement(i, size, elementSize);
167+
public any Element(int i, int size, int keySize, NumberType elementSize = NumberType_Int32) {
168+
return this.GetElement(i, size, keySize, elementSize);
174169
}
175170

176171
public any Key(int i, int size, NumberType elementSize = NumberType_Int32) {
@@ -301,7 +296,7 @@ methodmap UtlMap < AddressBase {
301296
return defaultValue;
302297
}
303298

304-
return this.GetElement(i, insertSize, numberType);
299+
return this.GetElement(i, insertSize, keySize, numberType);
305300
}
306301

307302
public int FindClosest(any key, int keySize, int insertSize, NumberType numberType = NumberType_Int32, CompareOperands_t eFindCriteria) {
@@ -430,7 +425,7 @@ methodmap UtlMap < AddressBase {
430425
return defaultValue;
431426
}
432427

433-
return this.GetElement(i, insertSize, numberType);
428+
return this.GetElement(i, insertSize, keySize, numberType);
434429
}
435430

436431
public int FindClosest(any key, int keySize, int insertSize, NumberType numberType = NumberType_Int32, CompareOperands_t eFindCriteria) {
@@ -501,13 +496,13 @@ methodmap UtlMap < AddressBase {
501496
return this.m_Tree.FindFirst(obj, size, numberType);
502497
}
503498

504-
public any FindElementSafe(any obj, int size, NumberType numberType = NumberType_Int32, any defaultValue = 0) {
499+
public any FindElementSafe(any obj, int size, int keySize, NumberType numberType = NumberType_Int32, any defaultValue = 0) {
505500
int i = this.FindSafe(obj, size, numberType);
506501
if (i == UtlRBTree.InvalidIndex()) {
507502
return defaultValue;
508503
}
509504

510-
return this.GetElement(i, size, numberType);
505+
return this.GetElement(i, size, keySize, numberType);
511506
}
512507

513508
public int FindClosestSafe(any obj, int size, NumberType numberType = NumberType_Int32, CompareOperands_t eFindCriteria) {
@@ -543,8 +538,8 @@ methodmap UtlMap < AddressBase {
543538
continue;
544539

545540
if (bAlwaysFreeElems && destructor) {
546-
any elem = this.GetElement(i, keySize + elemSize, elementSize);
547-
any elemAddr = this.GetElementEx(i, keySize + elemSize);
541+
any elem = this.GetElement(i, keySize + elemSize, keySize, elementSize);
542+
any elemAddr = this.GetElementEx(i, keySize + elemSize, keySize);
548543

549544
this.Destruct(i, elemSize, elemAddr, elem, destructor);
550545
}

include/tier1/utl_rbtree.inc

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
#pragma semicolon 1
1313

1414
#define UTL_RBTREE_TAG "[UtlRBTree]"
15-
#define UTL_RBTREE_VERSION "1.3.0"
15+
#define UTL_RBTREE_VERSION "1.3.3"
1616

1717
/**
1818
* Author: blueblur
1919
* Date: 2025-11-11
2020
* url: https://github.com/blueblur0730/modified-plugins
21-
* Version: 1.3.2
21+
* Version: 1.3.3
2222
*/
2323

2424
/*
@@ -29,27 +29,27 @@
2929
LessFunc_t m_LessFunc; // this + 0x0 / 0
3030
M m_Elements; // this + 0x4 / 4, size is 0xC
3131
I m_Root; // this + 0x10 / 16
32-
I m_NumElements; // this + 0x14 / 20
33-
I m_FirstFree; // this + 0x18 / 24
34-
typename M::Iterator_t m_LastAlloc; // this + 0x1C / 28, the last index allocated.
32+
I m_NumElements; // this + 0x12 / 18
33+
I m_FirstFree; // this + 0x14 / 20
34+
typename M::Iterator_t m_LastAlloc; // this + 0x18 / 22, the last index allocated.
3535
36-
Node_t* m_pElements; // this + 0x20 / 32.
36+
Node_t* m_pElements; // this + 0x1A / 24.
3737
38-
// whole size is 36.
38+
// whole size is 28.
3939
*/
4040

4141
/*
42-
// size is 16.
42+
// size is 8.
4343
template < class I >
4444
struct UtlRBTreeLinks_t
4545
{
46-
I m_Left;
47-
I m_Right;
48-
I m_Parent;
49-
I m_Tag;
46+
I m_Left; // this + 0x0 / 0
47+
I m_Right; // this + 0x2 / 2
48+
I m_Parent; // this + 0x4 / 4
49+
I m_Tag; // this + 0x6 / 6
5050
};
5151
52-
// size is 16 + sizeof(T).
52+
// size is 8 + sizeof(T).
5353
template < class T, class I >
5454
struct UtlRBTreeNode_t : public UtlRBTreeLinks_t< I >
5555
{
@@ -63,7 +63,7 @@
6363
*/
6464

6565
/*
66-
// size is 4.
66+
// size is 2.
6767
class Iterator_t
6868
{
6969
public:
@@ -152,9 +152,9 @@ methodmap Iterator_t < AddressBase {
152152
}
153153

154154
#define UTL_RBTREE_LINKS_OFFSET_LEFT 0x0
155-
#define UTL_RBTREE_LINKS_OFFSET_RIGHT 0x4
156-
#define UTL_RBTREE_LINKS_OFFSET_PARENT 0x8
157-
#define UTL_RBTREE_LINKS_OFFSET_TAG 0xC
155+
#define UTL_RBTREE_LINKS_OFFSET_RIGHT 0x2
156+
#define UTL_RBTREE_LINKS_OFFSET_PARENT 0x4
157+
#define UTL_RBTREE_LINKS_OFFSET_TAG 0x6
158158
methodmap UtlRBTreeLinks_t < AddressBase {
159159
property int m_Left {
160160
public get() {
@@ -197,7 +197,7 @@ methodmap UtlRBTreeLinks_t < AddressBase {
197197
}
198198
}
199199

200-
#define UTL_RBTREE_NODE_OFFSET_DATA 0x10
200+
#define UTL_RBTREE_NODE_OFFSET_DATA 0x8
201201
methodmap UtlRBTreeNode_t < UtlRBTreeLinks_t {
202202
property any m_Data {
203203
public get() {
@@ -228,10 +228,10 @@ methodmap UtlRBTreeNode_t < UtlRBTreeLinks_t {
228228
#define UTL_RBTREE_OFFSET_ALLOCATION_COUNT 0x8
229229
#define UTL_RBTREE_OFFSET_GROWSIZE 0xC
230230
#define UTL_RBTREE_OFFSET_ROOT 0x10
231-
#define UTL_RBTREE_OFFSET_NUM_ELEMENTS 0x14
232-
#define UTL_RBTREE_OFFSET_FIRST_FREE 0x18
233-
#define UTL_RBTREE_OFFSET_LAST_ALLOC 0x1C
234-
#define UTL_RBTREE_OFFSET_ELEMENTS 0x20
231+
#define UTL_RBTREE_OFFSET_NUM_ELEMENTS 0x12
232+
#define UTL_RBTREE_OFFSET_FIRST_FREE 0x14
233+
#define UTL_RBTREE_OFFSET_LAST_ALLOC 0x16
234+
#define UTL_RBTREE_OFFSET_ELEMENTS 0x18
235235

236236
/**
237237
* all allocation or deallocation access requires SM-Memory extension to work.
@@ -361,17 +361,17 @@ methodmap UtlRBTree < AddressBase {
361361

362362
public any Get(int i, int size = 4, NumberType elementSize = NumberType_Int32) {
363363
Assert(this.IsValidIndex(i, size), UTL_RBTREE_TAG, "Param index (%d) out of bounds. m_nAllocationCount: [0 - %d], m_LastAlloc: [0 - %d].", i, this.m_nAllocationCount, this.m_LastAlloc);
364-
return view_as<UtlRBTreeNode_t>(view_as<any>(this.m_pMemory) + i * size).GetData(elementSize);
364+
return view_as<UtlRBTreeNode_t>(view_as<any>(this.m_pMemory) + i * (8 + size)).GetData(elementSize);
365365
}
366366

367367
public void Set(int i, int size = 4, any val, NumberType elementSize = NumberType_Int32) {
368368
Assert(this.IsValidIndex(i, size), UTL_RBTREE_TAG, "Param index (%d) out of bounds. m_nAllocationCount: [0 - %d], m_LastAlloc: [0 - %d].", i, this.m_nAllocationCount, this.m_LastAlloc);
369-
view_as<UtlRBTreeNode_t>(view_as<any>(this.m_pMemory) + i * size).SetData(val, elementSize);
369+
view_as<UtlRBTreeNode_t>(view_as<any>(this.m_pMemory) + i * (8 + size)).SetData(val, elementSize);
370370
}
371371

372372
public any GetEx(int i, int size = 4) {
373373
Assert(this.IsValidIndex(i, size), UTL_RBTREE_TAG, "Param index (%d) out of bounds. m_nAllocationCount: [0 - %d], m_LastAlloc: [0 - %d].", i, this.m_nAllocationCount, this.m_LastAlloc);
374-
return view_as<UtlRBTreeNode_t>(view_as<any>(this.m_pMemory) + i * size).GetDataAddress();
374+
return view_as<any>(this.m_pMemory) + i * (8 + size);
375375
}
376376

377377
public any Element(int i, int size = 4, NumberType elementSize = NumberType_Int32) {

source/nmrih_allow_cheated_achivement/gamedata/nmrih_allow_cheated_achivement.txt

Whitespace-only changes.

0 commit comments

Comments
 (0)