@rpg-engine/long-bow 0.8.81 → 0.8.83
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.
- package/dist/components/SkillProgressBar.d.ts +3 -1
- package/dist/components/SkillsContainer.d.ts +2 -2
- package/dist/long-bow.cjs.development.js +79 -41
- package/dist/long-bow.cjs.development.js.map +1 -1
- package/dist/long-bow.cjs.production.min.js +1 -1
- package/dist/long-bow.cjs.production.min.js.map +1 -1
- package/dist/long-bow.esm.js +80 -42
- package/dist/long-bow.esm.js.map +1 -1
- package/package.json +2 -2
- package/src/components/SkillProgressBar.tsx +52 -18
- package/src/components/SkillsContainer.tsx +14 -13
- package/src/mocks/skills.mocks.ts +21 -9
- package/src/stories/Character/skills/SkillsContainer.stories.tsx +3 -0
|
@@ -1,13 +1,15 @@
|
|
|
1
|
+
import { CharacterClass } from '@rpg-engine/shared';
|
|
1
2
|
import React from 'react';
|
|
2
3
|
export interface ISkillProgressBarProps {
|
|
3
4
|
skillName: string;
|
|
5
|
+
skillKey?: string;
|
|
6
|
+
characterClass?: CharacterClass;
|
|
4
7
|
bgColor: string;
|
|
5
8
|
level: number;
|
|
6
9
|
skillPoints: number;
|
|
7
10
|
texturePath: string;
|
|
8
11
|
showSkillPoints?: boolean;
|
|
9
12
|
skillPointsToNextLevel: number;
|
|
10
|
-
skillPointsForCurrentLevel: number;
|
|
11
13
|
atlasJSON: any;
|
|
12
14
|
atlasIMG: any;
|
|
13
15
|
buffAndDebuff?: number;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ISkill, CharacterClass } from '@rpg-engine/shared';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
export interface ISkillContainerProps {
|
|
4
4
|
skill: ISkill;
|
|
5
|
-
characterClass
|
|
5
|
+
characterClass?: CharacterClass;
|
|
6
6
|
onCloseButton: () => void;
|
|
7
7
|
atlasJSON: any;
|
|
8
8
|
atlasIMG: any;
|
|
@@ -36512,22 +36512,52 @@ var Tooltip = /*#__PURE__*/styled__default.div.withConfig({
|
|
|
36512
36512
|
var SkillProgressBar = function SkillProgressBar(_ref) {
|
|
36513
36513
|
var bgColor = _ref.bgColor,
|
|
36514
36514
|
skillName = _ref.skillName,
|
|
36515
|
+
skillKey = _ref.skillKey,
|
|
36516
|
+
characterClass = _ref.characterClass,
|
|
36515
36517
|
level = _ref.level,
|
|
36516
36518
|
currentSkillPoints = _ref.skillPoints,
|
|
36517
|
-
skillPointsToNextLevel = _ref.skillPointsToNextLevel,
|
|
36518
|
-
skillPointsForCurrentLevel = _ref.skillPointsForCurrentLevel,
|
|
36519
36519
|
texturePath = _ref.texturePath,
|
|
36520
36520
|
_ref$showSkillPoints = _ref.showSkillPoints,
|
|
36521
36521
|
showSkillPoints = _ref$showSkillPoints === void 0 ? true : _ref$showSkillPoints,
|
|
36522
36522
|
atlasIMG = _ref.atlasIMG,
|
|
36523
36523
|
atlasJSON = _ref.atlasJSON,
|
|
36524
36524
|
buffAndDebuff = _ref.buffAndDebuff;
|
|
36525
|
-
//
|
|
36526
|
-
var
|
|
36525
|
+
// Use CharacterClass.None as default if skillKey is provided but characterClass is not
|
|
36526
|
+
var effectiveClass = characterClass != null ? characterClass : shared.CharacterClass.None;
|
|
36527
|
+
// Calculate the effective level based on actual SP (handles data inconsistencies)
|
|
36528
|
+
var calculateEffectiveLevel = function calculateEffectiveLevel() {
|
|
36529
|
+
if (!skillKey) {
|
|
36530
|
+
return level; // Fallback to stored level for general "Level" display
|
|
36531
|
+
}
|
|
36532
|
+
var _getSkillConstants = shared.getSkillConstants(skillKey, effectiveClass),
|
|
36533
|
+
A = _getSkillConstants.A,
|
|
36534
|
+
b = _getSkillConstants.b,
|
|
36535
|
+
c = _getSkillConstants.c;
|
|
36536
|
+
var actualLevel = Math.floor(shared.getLevelFromSP(currentSkillPoints, A, b, c));
|
|
36537
|
+
return Math.max(c, actualLevel); // At least starting level
|
|
36538
|
+
};
|
|
36539
|
+
var effectiveLevel = calculateEffectiveLevel();
|
|
36540
|
+
// Calculate progress based on actual SP position
|
|
36527
36541
|
var calculateProgress = function calculateProgress() {
|
|
36528
|
-
|
|
36529
|
-
|
|
36530
|
-
|
|
36542
|
+
if (!skillKey) {
|
|
36543
|
+
// Fallback for general "Level" display: simple ratio of current SP to next level
|
|
36544
|
+
var spForCurrentLevel = shared.getSPForLevel(level);
|
|
36545
|
+
var _spForNextLevel = shared.getSPForLevel(level + 1);
|
|
36546
|
+
var _range = _spForNextLevel - spForCurrentLevel;
|
|
36547
|
+
var _progress = currentSkillPoints - spForCurrentLevel;
|
|
36548
|
+
return Math.min(100, Math.max(0, _progress / _range * 100));
|
|
36549
|
+
}
|
|
36550
|
+
var _getSkillConstants2 = shared.getSkillConstants(skillKey, effectiveClass),
|
|
36551
|
+
A = _getSkillConstants2.A,
|
|
36552
|
+
b = _getSkillConstants2.b,
|
|
36553
|
+
c = _getSkillConstants2.c;
|
|
36554
|
+
// Calculate SP thresholds for current effective level
|
|
36555
|
+
var spForEffectiveLevel = shared.getSPForLevelExponential(effectiveLevel, A, b, c);
|
|
36556
|
+
var spForNextLevel = shared.getSPForLevelExponential(effectiveLevel + 1, A, b, c);
|
|
36557
|
+
// Progress within current effective level
|
|
36558
|
+
var range = spForNextLevel - spForEffectiveLevel;
|
|
36559
|
+
var progressInLevel = currentSkillPoints - spForEffectiveLevel;
|
|
36560
|
+
return Math.min(100, Math.max(0, progressInLevel / Math.max(1, range) * 100));
|
|
36531
36561
|
};
|
|
36532
36562
|
var progress = calculateProgress();
|
|
36533
36563
|
var formatBuffAndDebuff = function formatBuffAndDebuff(value) {
|
|
@@ -36538,7 +36568,7 @@ var SkillProgressBar = function SkillProgressBar(_ref) {
|
|
|
36538
36568
|
var result = level * (buffAndDebuff / 100);
|
|
36539
36569
|
return result > 0 ? "+" + result.toFixed(2) : "" + result.toFixed(2);
|
|
36540
36570
|
};
|
|
36541
|
-
return React__default.createElement(React__default.Fragment, null, React__default.createElement(ProgressTitle, null, buffAndDebuff !== undefined && React__default.createElement(React__default.Fragment, null, buffAndDebuff > 0 ? React__default.createElement(BuffAndDebuffContainer, null, React__default.createElement(TitleNameContainer, null, React__default.createElement(TitleNameBuff, null, skillName), React__default.createElement(TitleNameBuff, null, "lv ",
|
|
36571
|
+
return React__default.createElement(React__default.Fragment, null, React__default.createElement(ProgressTitle, null, buffAndDebuff !== undefined && React__default.createElement(React__default.Fragment, null, buffAndDebuff > 0 ? React__default.createElement(BuffAndDebuffContainer, null, React__default.createElement(TitleNameContainer, null, React__default.createElement(TitleNameBuff, null, skillName), React__default.createElement(TitleNameBuff, null, "lv ", effectiveLevel, " (", skillsBuffsCalc(effectiveLevel, buffAndDebuff), ")")), React__default.createElement(TitleNameBuffContainer, null, React__default.createElement(TitleNameBuff, null, "(+", formatBuffAndDebuff(buffAndDebuff), "%)"))) : buffAndDebuff < 0 ? React__default.createElement(React__default.Fragment, null, React__default.createElement(TitleNameContainer, null, React__default.createElement(TitleNameDebuff, null, skillName), React__default.createElement(TitleNameDebuff, null, "lv ", effectiveLevel, " (", skillsBuffsCalc(effectiveLevel, buffAndDebuff), ")")), React__default.createElement("div", null, React__default.createElement(TitleNameDebuff, null, "(", formatBuffAndDebuff(buffAndDebuff), "%)"))) : React__default.createElement(TitleName, null, skillName)), !buffAndDebuff && React__default.createElement(TitleNameContainer, null, React__default.createElement(TitleName, null, skillName), React__default.createElement(ValueDisplay, null, "lv ", effectiveLevel))), React__default.createElement(ProgressBody, null, React__default.createElement(ProgressIconContainer, null, atlasIMG && atlasJSON ? React__default.createElement(SpriteContainer$4, null, React__default.createElement(ErrorBoundary, null, React__default.createElement(SpriteFromAtlas, {
|
|
36542
36572
|
atlasIMG: atlasIMG,
|
|
36543
36573
|
atlasJSON: atlasJSON,
|
|
36544
36574
|
spriteKey: texturePath,
|
|
@@ -36677,39 +36707,48 @@ var SkillsContainer = function SkillsContainer(_ref) {
|
|
|
36677
36707
|
var skillCategory = skillProps[category];
|
|
36678
36708
|
var skillCategoryColor = skillCategory.color;
|
|
36679
36709
|
var output = [];
|
|
36710
|
+
var _loop = function _loop() {
|
|
36711
|
+
var _Object$entries$_i = _Object$entries[_i],
|
|
36712
|
+
key = _Object$entries$_i[0],
|
|
36713
|
+
value = _Object$entries$_i[1];
|
|
36714
|
+
if (key === 'stamina') {
|
|
36715
|
+
return 0; // continue
|
|
36716
|
+
}
|
|
36717
|
+
//@ts-ignore
|
|
36718
|
+
var skillDetails = skill[key];
|
|
36719
|
+
if (!skillDetails) {
|
|
36720
|
+
return 0; // continue
|
|
36721
|
+
}
|
|
36722
|
+
// Calculate skillPointsToNextLevel using exponential formula if characterClass available
|
|
36723
|
+
var calcSkillPointsToNextLevel = function calcSkillPointsToNextLevel() {
|
|
36724
|
+
if (characterClass) {
|
|
36725
|
+
var _getSkillConstants = shared.getSkillConstants(key, characterClass),
|
|
36726
|
+
A = _getSkillConstants.A,
|
|
36727
|
+
b = _getSkillConstants.b,
|
|
36728
|
+
c = _getSkillConstants.c;
|
|
36729
|
+
return Math.round(shared.getSPForLevelExponential(skillDetails.level + 1, A, b, c));
|
|
36730
|
+
}
|
|
36731
|
+
return Math.round(shared.getSPForLevel(skillDetails.level + 1));
|
|
36732
|
+
};
|
|
36733
|
+
output.push(React__default.createElement(SkillProgressBar, {
|
|
36734
|
+
key: key,
|
|
36735
|
+
skillName: skillNameMap[key],
|
|
36736
|
+
skillKey: key,
|
|
36737
|
+
characterClass: characterClass,
|
|
36738
|
+
bgColor: skillCategoryColor,
|
|
36739
|
+
level: skillDetails.level || 0,
|
|
36740
|
+
skillPoints: Math.round(skillDetails.skillPoints) || 0,
|
|
36741
|
+
skillPointsToNextLevel: calcSkillPointsToNextLevel(),
|
|
36742
|
+
texturePath: value,
|
|
36743
|
+
atlasIMG: atlasIMG,
|
|
36744
|
+
atlasJSON: atlasJSON,
|
|
36745
|
+
buffAndDebuff: skillDetails.buffAndDebuff
|
|
36746
|
+
}));
|
|
36747
|
+
},
|
|
36748
|
+
_ret;
|
|
36680
36749
|
for (var _i = 0, _Object$entries = Object.entries(skillCategory.values); _i < _Object$entries.length; _i++) {
|
|
36681
|
-
|
|
36682
|
-
|
|
36683
|
-
value = _Object$entries$_i[1];
|
|
36684
|
-
if (key === 'stamina') {
|
|
36685
|
-
continue;
|
|
36686
|
-
}
|
|
36687
|
-
//@ts-ignore
|
|
36688
|
-
var skillDetails = skill[key];
|
|
36689
|
-
if (!skillDetails) {
|
|
36690
|
-
continue;
|
|
36691
|
-
}
|
|
36692
|
-
// Get the skill constants for this skill and character class
|
|
36693
|
-
var _getSkillConstants = shared.getSkillConstants(key, characterClass),
|
|
36694
|
-
A = _getSkillConstants.A,
|
|
36695
|
-
b = _getSkillConstants.b,
|
|
36696
|
-
c = _getSkillConstants.c;
|
|
36697
|
-
// Calculate SP thresholds using exponential formula
|
|
36698
|
-
var skillPointsForCurrentLevel = shared.getSPForLevelExponential(skillDetails.level, A, b, c);
|
|
36699
|
-
var skillPointsToNextLevel = shared.getSPForLevelExponential(skillDetails.level + 1, A, b, c);
|
|
36700
|
-
output.push(React__default.createElement(SkillProgressBar, {
|
|
36701
|
-
key: key,
|
|
36702
|
-
skillName: skillNameMap[key],
|
|
36703
|
-
bgColor: skillCategoryColor,
|
|
36704
|
-
level: skillDetails.level || 0,
|
|
36705
|
-
skillPoints: Math.round(skillDetails.skillPoints) || 0,
|
|
36706
|
-
skillPointsToNextLevel: skillPointsToNextLevel,
|
|
36707
|
-
skillPointsForCurrentLevel: skillPointsForCurrentLevel,
|
|
36708
|
-
texturePath: value,
|
|
36709
|
-
atlasIMG: atlasIMG,
|
|
36710
|
-
atlasJSON: atlasJSON,
|
|
36711
|
-
buffAndDebuff: skillDetails.buffAndDebuff
|
|
36712
|
-
}));
|
|
36750
|
+
_ret = _loop();
|
|
36751
|
+
if (_ret === 0) continue;
|
|
36713
36752
|
}
|
|
36714
36753
|
return output;
|
|
36715
36754
|
};
|
|
@@ -36730,7 +36769,6 @@ var SkillsContainer = function SkillsContainer(_ref) {
|
|
|
36730
36769
|
level: Math.round(skill.level) || 0,
|
|
36731
36770
|
skillPoints: Math.round(skill.experience) || 0,
|
|
36732
36771
|
skillPointsToNextLevel: Math.round(shared.getXPForLevel(skill.level + 1)) || 0,
|
|
36733
|
-
skillPointsForCurrentLevel: Math.round(shared.getXPForLevel(skill.level)) || 0,
|
|
36734
36772
|
texturePath: 'swords/broad-sword.png',
|
|
36735
36773
|
atlasIMG: atlasIMG,
|
|
36736
36774
|
atlasJSON: atlasJSON
|