@ianlucas/cs2-lib-inspect 8.0.0-rc.2 → 8.0.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright (c) candyboyz, Ian Lucas. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { CS2EconomyInstance, CS2_MAX_KEYCHAIN_SEED, CS2_MAX_STICKER_ROTATION, CS2_MAX_STICKER_WEAR, CS2_MIN_KEYCHAIN_SEED, CS2_MIN_SEED, CS2_MIN_STICKER_WEAR, CS2_MIN_WEAR,
|
|
5
|
+
import { CS2EconomyInstance, CS2EconomyItem, CS2_MAX_KEYCHAIN_SEED, CS2_MAX_STICKER_ROTATION, CS2_MAX_STICKER_WEAR, CS2_MIN_KEYCHAIN_SEED, CS2_MIN_SEED, CS2_MIN_STICKER_WEAR, CS2_MIN_WEAR, CS2_STICKER_WEAR_FACTOR, CS2_WEAR_FACTOR, assert, clamp, ensure, getNextStickerSchema, healStickerOffset, truncateToFactor } from "@ianlucas/cs2-lib";
|
|
6
6
|
import { CS2_PREVIEW_HAS_STICKERS } from "./constants.js";
|
|
7
7
|
export function parseGCInventoryItem(economy, data) {
|
|
8
8
|
const { defindex, paintindex, paintseed, floatvalue, killeatervalue, customname, musicindex, stickers, keychains } = data;
|
|
@@ -36,12 +36,6 @@ export function parseGCInventoryItem(economy, data) {
|
|
|
36
36
|
seed: seed !== undefined ? clamp(seed, CS2_MIN_KEYCHAIN_SEED, CS2_MAX_KEYCHAIN_SEED) : undefined
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
|
-
// Per-model sticker offset envelope is constant across this item's slots; resolve it once here
|
|
40
|
-
// (where `economyItem` is narrowed) so it can be closed over inside the sticker map below.
|
|
41
|
-
const stickerOffsetXMin = economyItem.getMinimumStickerOffsetX();
|
|
42
|
-
const stickerOffsetXMax = economyItem.getMaximumStickerOffsetX();
|
|
43
|
-
const stickerOffsetYMin = economyItem.getMinimumStickerOffsetY();
|
|
44
|
-
const stickerOffsetYMax = economyItem.getMaximumStickerOffsetY();
|
|
45
39
|
return stripMinValues({
|
|
46
40
|
id: economyItem.id,
|
|
47
41
|
seed: economyItem.hasSeed() ? paintseed : undefined,
|
|
@@ -67,20 +61,7 @@ export function parseGCInventoryItem(economy, data) {
|
|
|
67
61
|
]))
|
|
68
62
|
: undefined,
|
|
69
63
|
stickers: economyItem.hasStickers() && stickers.length > 0
|
|
70
|
-
?
|
|
71
|
-
index,
|
|
72
|
-
{
|
|
73
|
-
id: ensure(economy.itemsAsArray.find((item) => item.isSticker() && item.index === stickerId)
|
|
74
|
-
?.id),
|
|
75
|
-
rotation: rotation !== undefined ? normalizeStickerRotation(rotation) : undefined,
|
|
76
|
-
schema: slot,
|
|
77
|
-
wear: wear !== undefined
|
|
78
|
-
? clamp(truncateToFactor(wear, CS2_STICKER_WEAR_FACTOR), CS2_MIN_STICKER_WEAR, CS2_MAX_STICKER_WEAR)
|
|
79
|
-
: undefined,
|
|
80
|
-
x: healStickerOffset(offsetX, stickerOffsetXMin, stickerOffsetXMax),
|
|
81
|
-
y: healStickerOffset(offsetY, stickerOffsetYMin, stickerOffsetYMax)
|
|
82
|
-
}
|
|
83
|
-
]))
|
|
64
|
+
? parseStickers(economy, economyItem, stickers)
|
|
84
65
|
: undefined,
|
|
85
66
|
patches: economyItem.hasPatches() && stickers.length > 0
|
|
86
67
|
? Object.fromEntries(stickers.map(({ slot, stickerId }) => [
|
|
@@ -91,22 +72,34 @@ export function parseGCInventoryItem(economy, data) {
|
|
|
91
72
|
});
|
|
92
73
|
}
|
|
93
74
|
}
|
|
94
|
-
//
|
|
95
|
-
//
|
|
96
|
-
//
|
|
97
|
-
//
|
|
98
|
-
function
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
|
|
75
|
+
// Builds the sticker record from GC/inspect data. The record key is the 0-based stack (draw) position
|
|
76
|
+
// and each sticker's `schema` is its physical StickerMarkup anchor. A GC slot outside the model's
|
|
77
|
+
// [0, getStickerSchemaCount()) is repaired onto the first free anchor — mirroring cs2-lib's loader — so
|
|
78
|
+
// the parsed item always satisfies the sticker validator, matching how offsets are already healed.
|
|
79
|
+
function parseStickers(economy, economyItem, stickers) {
|
|
80
|
+
const schemaCount = economyItem.getStickerSchemaCount();
|
|
81
|
+
const offsetXMin = economyItem.getMinimumStickerOffsetX();
|
|
82
|
+
const offsetXMax = economyItem.getMaximumStickerOffsetX();
|
|
83
|
+
const offsetYMin = economyItem.getMinimumStickerOffsetY();
|
|
84
|
+
const offsetYMax = economyItem.getMaximumStickerOffsetY();
|
|
85
|
+
const parsed = [];
|
|
86
|
+
for (const { slot, stickerId, offsetX, offsetY, wear, rotation } of stickers) {
|
|
87
|
+
let schema = slot ?? parsed.length;
|
|
88
|
+
if (!Number.isInteger(schema) || schema < 0 || schema >= schemaCount) {
|
|
89
|
+
schema = getNextStickerSchema(parsed, schemaCount);
|
|
90
|
+
}
|
|
91
|
+
parsed.push({
|
|
92
|
+
id: ensure(economy.itemsAsArray.find((item) => item.isSticker() && item.index === stickerId)?.id),
|
|
93
|
+
rotation: rotation !== undefined ? normalizeStickerRotation(rotation) : undefined,
|
|
94
|
+
schema,
|
|
95
|
+
wear: wear !== undefined
|
|
96
|
+
? clamp(truncateToFactor(wear, CS2_STICKER_WEAR_FACTOR), CS2_MIN_STICKER_WEAR, CS2_MAX_STICKER_WEAR)
|
|
97
|
+
: undefined,
|
|
98
|
+
x: healStickerOffset(offsetX, offsetXMin, offsetXMax),
|
|
99
|
+
y: healStickerOffset(offsetY, offsetYMin, offsetYMax)
|
|
100
|
+
});
|
|
108
101
|
}
|
|
109
|
-
return
|
|
102
|
+
return Object.fromEntries(parsed.map((sticker, index) => [index, sticker]));
|
|
110
103
|
}
|
|
111
104
|
function normalizeStickerRotation(rotation) {
|
|
112
105
|
// Wrap to the in-game [-180, 180] range; legacy 0–359 and out-of-range values collapse to the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-gc-inventory-item.js","sourceRoot":"","sources":["../src/parse-gc-inventory-item.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,
|
|
1
|
+
{"version":3,"file":"parse-gc-inventory-item.js","sourceRoot":"","sources":["../src/parse-gc-inventory-item.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"vitest": "^4.1.8"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
|
-
"@ianlucas/cs2-lib": "^8.0.0-rc.
|
|
37
|
+
"@ianlucas/cs2-lib": "^8.0.0-rc.6"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@protobuf-ts/plugin": "^2.11.1",
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"engines": {
|
|
47
47
|
"node": ">=20"
|
|
48
48
|
},
|
|
49
|
-
"version": "8.0.0-rc.
|
|
49
|
+
"version": "8.0.0-rc.3"
|
|
50
50
|
}
|