@rpg-engine/long-bow 0.3.96 → 0.3.97

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.
@@ -12844,7 +12844,31 @@ var CheckButton = function CheckButton(_ref) {
12844
12844
  var SingleShortcut = /*#__PURE__*/styled.button.withConfig({
12845
12845
  displayName: "SingleShortcut",
12846
12846
  componentId: "sc-vz5ev8-0"
12847
- })(["width:3rem;height:3rem;background-color:", ";border:2px solid ", ";border-radius:50%;text-transform:uppercase;font-size:0.7rem;font-weight:bold;display:flex;align-items:center;justify-content:center;position:relative;span{pointer-events:none;}.mana{position:absolute;top:-5px;right:0;font-size:0.65rem;color:", ";}.qty{position:absolute;top:-5px;right:0;font-size:0.65rem;}.magicWords{margin-top:4px;}.keyboard{position:absolute;bottom:-5px;left:0;font-size:0.65rem;color:", ";}&:hover,&:focus{background-color:", ";}&:active{background-color:", ";border-color:", ";}&:disabled{opacity:0.5;}"], uiColors.lightGray, uiColors.darkGray, uiColors.blue, uiColors.yellow, uiColors.darkGray, uiColors.gray, uiColors.yellow);
12847
+ })(["width:3rem;height:3rem;background-color:", ";border:2px solid ", ";border-radius:50%;text-transform:uppercase;font-size:0.7rem;font-weight:bold;display:flex;align-items:center;justify-content:center;position:relative;span{pointer-events:none;}.mana{position:absolute;top:-5px;right:0;font-size:0.65rem;color:", ";}.qty{position:absolute;top:-5px;right:0;font-size:0.65rem;}.magicWords{margin-top:4px;}.keyboard{position:absolute;bottom:-5px;left:0;font-size:0.65rem;color:", ";}.onCooldown{color:", ";}.cooldown{position:absolute;z-index:1;top:0;left:0;width:100%;height:100%;border-radius:inherit;background-color:rgba(0 0 0 / 60%);font-size:0.7rem;display:flex;align-items:center;justify-content:center;color:", ";}&:hover,&:focus{background-color:", ";}&:active{background-color:", ";border-color:", ";}&:disabled{opacity:0.5;}"], uiColors.lightGray, uiColors.darkGray, uiColors.blue, uiColors.yellow, uiColors.gray, uiColors.darkYellow, uiColors.darkGray, uiColors.gray, uiColors.yellow);
12848
+
12849
+ var useShortcutCooldown = function useShortcutCooldown(onShortcutCast) {
12850
+ var _useState = useState(0),
12851
+ shortcutCooldown = _useState[0],
12852
+ setShortcutCooldown = _useState[1];
12853
+ var cooldownTimeout = useRef(null);
12854
+ var handleShortcutCast = function handleShortcutCast(index) {
12855
+ console.log(shortcutCooldown);
12856
+ if (shortcutCooldown <= 0) setShortcutCooldown(1.5);
12857
+ onShortcutCast(index);
12858
+ };
12859
+ useEffect(function () {
12860
+ if (cooldownTimeout.current) clearTimeout(cooldownTimeout.current);
12861
+ if (shortcutCooldown > 0) {
12862
+ cooldownTimeout.current = setTimeout(function () {
12863
+ setShortcutCooldown(shortcutCooldown - 0.1);
12864
+ }, 100);
12865
+ }
12866
+ }, [shortcutCooldown]);
12867
+ return {
12868
+ shortcutCooldown: shortcutCooldown,
12869
+ handleShortcutCast: handleShortcutCast
12870
+ };
12871
+ };
12848
12872
 
12849
12873
  var CircularController = function CircularController(_ref) {
12850
12874
  var onActionClick = _ref.onActionClick,
@@ -12854,7 +12878,11 @@ var CircularController = function CircularController(_ref) {
12854
12878
  shortcuts = _ref.shortcuts,
12855
12879
  inventory = _ref.inventory,
12856
12880
  atlasIMG = _ref.atlasIMG,
12857
- atlasJSON = _ref.atlasJSON;
12881
+ atlasJSON = _ref.atlasJSON,
12882
+ spellCooldowns = _ref.spellCooldowns;
12883
+ var _useShortcutCooldown = useShortcutCooldown(onShortcutClick),
12884
+ handleShortcutCast = _useShortcutCooldown.handleShortcutCast,
12885
+ shortcutCooldown = _useShortcutCooldown.shortcutCooldown;
12858
12886
  var onTouchStart = function onTouchStart(e) {
12859
12887
  var target = e.target;
12860
12888
  target == null ? void 0 : target.classList.add('active');
@@ -12867,10 +12895,14 @@ var CircularController = function CircularController(_ref) {
12867
12895
  action();
12868
12896
  };
12869
12897
  var renderShortcut = function renderShortcut(i) {
12870
- var _shortcuts$i, _shortcuts$i2, _shortcuts$i4, _payload$manaCost;
12898
+ var _shortcuts$i, _shortcuts$i2, _shortcuts$i4, _spellCooldowns$paylo, _payload$manaCost;
12899
+ var buildClassName = function buildClassName(classBase, isOnCooldown) {
12900
+ return classBase + " " + (isOnCooldown ? 'onCooldown' : '');
12901
+ };
12871
12902
  var variant = '';
12872
12903
  if (i === 0) variant = 'top';else if (i >= 3) variant = "bottom-" + (i - 3);
12873
- var onShortcutClickBinded = ((_shortcuts$i = shortcuts[i]) == null ? void 0 : _shortcuts$i.type) !== ShortcutType.None ? onShortcutClick.bind(null, i) : function () {};
12904
+ var onShortcutClickBinded = ((_shortcuts$i = shortcuts[i]) == null ? void 0 : _shortcuts$i.type) !== ShortcutType.None ? handleShortcutCast.bind(null, i) : function () {};
12905
+ var isOnShortcutCooldown = shortcutCooldown > 0;
12874
12906
  if (((_shortcuts$i2 = shortcuts[i]) == null ? void 0 : _shortcuts$i2.type) === ShortcutType.Item) {
12875
12907
  var _shortcuts$i3;
12876
12908
  var _payload = (_shortcuts$i3 = shortcuts[i]) == null ? void 0 : _shortcuts$i3.payload;
@@ -12893,7 +12925,9 @@ var CircularController = function CircularController(_ref) {
12893
12925
  onTouchEnd: onTouchEnd.bind(null, onShortcutClickBinded),
12894
12926
  disabled: false,
12895
12927
  className: variant
12896
- }, _payload && React.createElement(SpriteFromAtlas, {
12928
+ }, isOnShortcutCooldown && React.createElement("span", {
12929
+ className: "cooldown"
12930
+ }, shortcutCooldown.toFixed(1)), _payload && React.createElement(SpriteFromAtlas, {
12897
12931
  atlasIMG: atlasIMG,
12898
12932
  atlasJSON: atlasJSON,
12899
12933
  spriteKey: getItemTextureKeyPath({
@@ -12912,18 +12946,23 @@ var CircularController = function CircularController(_ref) {
12912
12946
  pointerEvents: 'none'
12913
12947
  }
12914
12948
  }), React.createElement("span", {
12915
- className: "qty"
12949
+ className: buildClassName('qty', isOnShortcutCooldown)
12916
12950
  }, totalQty));
12917
12951
  }
12918
12952
  var payload = (_shortcuts$i4 = shortcuts[i]) == null ? void 0 : _shortcuts$i4.payload;
12953
+ var spellCooldown = !payload ? 0 : (_spellCooldowns$paylo = spellCooldowns == null ? void 0 : spellCooldowns[payload.magicWords.replaceAll(' ', '_')]) != null ? _spellCooldowns$paylo : shortcutCooldown;
12954
+ var cooldown = spellCooldown > shortcutCooldown ? spellCooldown : shortcutCooldown;
12955
+ var isOnCooldown = cooldown > 0 && !!payload;
12919
12956
  return React.createElement(StyledShortcut, {
12920
12957
  key: i,
12921
12958
  onTouchStart: onTouchStart,
12922
12959
  onTouchEnd: onTouchEnd.bind(null, onShortcutClickBinded),
12923
12960
  disabled: mana < ((_payload$manaCost = payload == null ? void 0 : payload.manaCost) != null ? _payload$manaCost : 0),
12924
12961
  className: variant
12925
- }, React.createElement("span", {
12926
- className: "mana"
12962
+ }, isOnCooldown && React.createElement("span", {
12963
+ className: "cooldown"
12964
+ }, cooldown.toFixed(cooldown < 10 ? 1 : 0)), React.createElement("span", {
12965
+ className: buildClassName('mana', isOnCooldown)
12927
12966
  }, payload && payload.manaCost), React.createElement("span", {
12928
12967
  className: "magicWords"
12929
12968
  }, payload == null ? void 0 : payload.magicWords.split(' ').map(function (word) {
@@ -13865,7 +13904,9 @@ var ItemInfo = function ItemInfo(_ref) {
13865
13904
  item: item
13866
13905
  }, React.createElement(Header, null, React.createElement("div", null, React.createElement(Title$1, null, item.name), item.rarity !== 'Common' && React.createElement(Rarity, {
13867
13906
  item: item
13868
- }, item.rarity), React.createElement(Type, null, item.subType)), React.createElement(AllowedSlots, null, renderAvaibleSlots())), item.minRequirements && React.createElement(LevelRequirement, null, React.createElement("div", null, "Level: ", item.minRequirements.level), React.createElement("div", null, item.minRequirements.skill.name[0].toUpperCase() + item.minRequirements.skill.name.slice(1), ": ", item.minRequirements.skill.level)), renderStatistics(), renderEntityEffects(), item.usableEffectDescription && React.createElement(Statistic, {
13907
+ }, item.rarity), React.createElement(Type, null, item.subType)), React.createElement(AllowedSlots, null, renderAvaibleSlots())), item.minRequirements && React.createElement(LevelRequirement, null, React.createElement("div", {
13908
+ className: "title"
13909
+ }, "Requirements:"), React.createElement("div", null, "- Level: ", item.minRequirements.level), React.createElement("div", null, "-", ' ', item.minRequirements.skill.name[0].toUpperCase() + item.minRequirements.skill.name.slice(1), ": ", item.minRequirements.skill.level)), renderStatistics(), renderEntityEffects(), item.usableEffectDescription && React.createElement(Statistic, {
13869
13910
  "$isSpecial": true
13870
13911
  }, item.usableEffectDescription), item.equippedBuffDescription && React.createElement(Statistic, {
13871
13912
  "$isSpecial": true
@@ -13899,7 +13940,7 @@ var Type = /*#__PURE__*/styled.div.withConfig({
13899
13940
  var LevelRequirement = /*#__PURE__*/styled.div.withConfig({
13900
13941
  displayName: "ItemInfo__LevelRequirement",
13901
13942
  componentId: "sc-1xm4q8k-4"
13902
- })(["font-size:", ";margin-top:0.2rem;margin-bottom:1rem;color:", ";"], uiFonts.size.small, uiColors.orange);
13943
+ })(["font-size:", ";margin-top:0.2rem;margin-bottom:1rem;color:", ";.title{margin-bottom:4px;}div{margin-bottom:2px;}"], uiFonts.size.small, uiColors.orange);
13903
13944
  var Statistic = /*#__PURE__*/styled.div.withConfig({
13904
13945
  displayName: "ItemInfo__Statistic",
13905
13946
  componentId: "sc-1xm4q8k-5"
@@ -15841,15 +15882,19 @@ var Shortcuts = function Shortcuts(_ref) {
15841
15882
  isBlockedCastingByKeyboard = _ref$isBlockedCasting === void 0 ? false : _ref$isBlockedCasting,
15842
15883
  atlasJSON = _ref.atlasJSON,
15843
15884
  atlasIMG = _ref.atlasIMG,
15844
- inventory = _ref.inventory;
15885
+ inventory = _ref.inventory,
15886
+ spellCooldowns = _ref.spellCooldowns;
15845
15887
  var shortcutsRefs = useRef([]);
15888
+ var _useShortcutCooldown = useShortcutCooldown(onShortcutCast),
15889
+ handleShortcutCast = _useShortcutCooldown.handleShortcutCast,
15890
+ shortcutCooldown = _useShortcutCooldown.shortcutCooldown;
15846
15891
  useEffect(function () {
15847
15892
  var handleKeyDown = function handleKeyDown(e) {
15848
15893
  if (isBlockedCastingByKeyboard) return;
15849
15894
  var shortcutIndex = Number(e.key) - 1;
15850
15895
  if (shortcutIndex >= 0 && shortcutIndex <= 5) {
15851
15896
  var _shortcutsRefs$curren;
15852
- onShortcutCast(shortcutIndex);
15897
+ handleShortcutCast(shortcutIndex);
15853
15898
  (_shortcutsRefs$curren = shortcutsRefs.current[shortcutIndex]) == null ? void 0 : _shortcutsRefs$curren.classList.add('active');
15854
15899
  setTimeout(function () {
15855
15900
  var _shortcutsRefs$curren2;
@@ -15861,11 +15906,15 @@ var Shortcuts = function Shortcuts(_ref) {
15861
15906
  return function () {
15862
15907
  window.removeEventListener('keydown', handleKeyDown);
15863
15908
  };
15864
- }, [shortcuts, isBlockedCastingByKeyboard]);
15909
+ }, [shortcuts, isBlockedCastingByKeyboard, shortcutCooldown]);
15865
15910
  return React.createElement(List$1, null, Array.from({
15866
15911
  length: 6
15867
15912
  }).map(function (_, i) {
15868
- var _shortcuts$i, _shortcuts$i3, _payload$manaCost;
15913
+ var _shortcuts$i, _shortcuts$i3, _spellCooldowns$paylo, _payload$manaCost;
15914
+ var buildClassName = function buildClassName(classBase, isOnCooldown) {
15915
+ return classBase + " " + (isOnCooldown ? 'onCooldown' : '');
15916
+ };
15917
+ var isOnShortcutCooldown = shortcutCooldown > 0;
15869
15918
  if (((_shortcuts$i = shortcuts[i]) == null ? void 0 : _shortcuts$i.type) === ShortcutType.Item) {
15870
15919
  var _shortcuts$i2;
15871
15920
  var _payload = (_shortcuts$i2 = shortcuts[i]) == null ? void 0 : _shortcuts$i2.payload;
@@ -15882,12 +15931,14 @@ var Shortcuts = function Shortcuts(_ref) {
15882
15931
  var totalQty = _payload && inventory ? countItemFromInventory(_payload.key, inventory) : 0;
15883
15932
  return React.createElement(StyledShortcut$1, {
15884
15933
  key: i,
15885
- onPointerDown: onShortcutCast.bind(null, i),
15934
+ onPointerDown: handleShortcutCast.bind(null, i),
15886
15935
  disabled: false,
15887
15936
  ref: function ref(el) {
15888
15937
  if (el) shortcutsRefs.current[i] = el;
15889
15938
  }
15890
- }, _payload && React.createElement(SpriteFromAtlas, {
15939
+ }, isOnShortcutCooldown && React.createElement("span", {
15940
+ className: "cooldown"
15941
+ }, shortcutCooldown.toFixed(1)), _payload && React.createElement(SpriteFromAtlas, {
15891
15942
  atlasIMG: atlasIMG,
15892
15943
  atlasJSON: atlasJSON,
15893
15944
  spriteKey: getItemTextureKeyPath({
@@ -15899,27 +15950,32 @@ var Shortcuts = function Shortcuts(_ref) {
15899
15950
  width: 32,
15900
15951
  height: 32
15901
15952
  }), React.createElement("span", {
15902
- className: "qty"
15953
+ className: buildClassName('qty', isOnShortcutCooldown)
15903
15954
  }, totalQty), React.createElement("span", {
15904
- className: "keyboard"
15955
+ className: buildClassName('keyboard', isOnShortcutCooldown)
15905
15956
  }, i + 1));
15906
15957
  }
15907
15958
  var payload = (_shortcuts$i3 = shortcuts[i]) == null ? void 0 : _shortcuts$i3.payload;
15959
+ var spellCooldown = !payload ? 0 : (_spellCooldowns$paylo = spellCooldowns == null ? void 0 : spellCooldowns[payload.magicWords.replaceAll(' ', '_')]) != null ? _spellCooldowns$paylo : shortcutCooldown;
15960
+ var cooldown = spellCooldown > shortcutCooldown ? spellCooldown : shortcutCooldown;
15961
+ var isOnCooldown = cooldown > 0 && !!payload;
15908
15962
  return React.createElement(StyledShortcut$1, {
15909
15963
  key: i,
15910
- onPointerDown: onShortcutCast.bind(null, i),
15964
+ onPointerDown: handleShortcutCast.bind(null, i),
15911
15965
  disabled: mana < ((_payload$manaCost = payload == null ? void 0 : payload.manaCost) != null ? _payload$manaCost : 0),
15912
15966
  ref: function ref(el) {
15913
15967
  if (el) shortcutsRefs.current[i] = el;
15914
15968
  }
15915
- }, React.createElement("span", {
15916
- className: "mana"
15969
+ }, isOnCooldown && React.createElement("span", {
15970
+ className: "cooldown"
15971
+ }, cooldown.toFixed(cooldown < 10 ? 1 : 0)), React.createElement("span", {
15972
+ className: buildClassName('mana', isOnCooldown)
15917
15973
  }, payload && payload.manaCost), React.createElement("span", {
15918
15974
  className: "magicWords"
15919
15975
  }, payload == null ? void 0 : payload.magicWords.split(' ').map(function (word) {
15920
15976
  return word[0];
15921
15977
  })), React.createElement("span", {
15922
- className: "keyboard"
15978
+ className: buildClassName('keyboard', isOnCooldown)
15923
15979
  }, i + 1));
15924
15980
  }));
15925
15981
  };
@@ -16176,14 +16232,17 @@ var Spell = function Spell(_ref) {
16176
16232
  charMagicLevel = _ref.charMagicLevel,
16177
16233
  onPointerUp = _ref.onPointerUp,
16178
16234
  isSettingShortcut = _ref.isSettingShortcut,
16179
- minMagicLevelRequired = _ref.minMagicLevelRequired;
16235
+ minMagicLevelRequired = _ref.minMagicLevelRequired,
16236
+ activeCooldown = _ref.activeCooldown;
16180
16237
  var disabled = isSettingShortcut ? charMagicLevel < minMagicLevelRequired : manaCost > charMana || charMagicLevel < minMagicLevelRequired;
16181
16238
  return React.createElement(Container$k, {
16182
- disabled: disabled,
16239
+ disabled: disabled || (activeCooldown != null ? activeCooldown : 0) > 0,
16183
16240
  onPointerUp: onPointerUp == null ? void 0 : onPointerUp.bind(null, spellKey),
16184
16241
  isSettingShortcut: isSettingShortcut && !disabled,
16185
16242
  className: "spell"
16186
- }, disabled && React.createElement(Overlay, null, charMagicLevel < minMagicLevelRequired ? 'Low magic level' : manaCost > charMana && 'No mana'), React.createElement(SpellImage, null, magicWords.split(' ').map(function (word) {
16243
+ }, disabled && React.createElement(Overlay, null, charMagicLevel < minMagicLevelRequired ? 'Low magic level' : manaCost > charMana && 'No mana'), React.createElement(SpellImage, null, activeCooldown && activeCooldown > 0 ? React.createElement("span", {
16244
+ className: "cooldown"
16245
+ }, activeCooldown.toFixed(activeCooldown > 10 ? 0 : 1)) : null, magicWords.split(' ').map(function (word) {
16187
16246
  return word[0];
16188
16247
  })), React.createElement(Info, null, React.createElement(Title$6, null, React.createElement("span", null, name), React.createElement("span", {
16189
16248
  className: "spell"
@@ -16201,7 +16260,7 @@ var Container$k = /*#__PURE__*/styled.button.withConfig({
16201
16260
  var SpellImage = /*#__PURE__*/styled.div.withConfig({
16202
16261
  displayName: "Spell__SpellImage",
16203
16262
  componentId: "sc-j96fa2-1"
16204
- })(["width:4rem;height:4rem;font-size:", ";font-weight:bold;background-color:", ";color:", ";display:flex;justify-content:center;align-items:center;text-transform:uppercase;"], uiFonts.size.xLarge, uiColors.darkGray, uiColors.lightGray);
16263
+ })(["width:4rem;height:4rem;font-size:", ";font-weight:bold;background-color:", ";color:", ";display:flex;justify-content:center;align-items:center;text-transform:uppercase;position:relative;overflow:hidden;.cooldown{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0 0 0 / 20%);color:", ";font-weight:bold;display:flex;justify-content:center;align-items:center;}"], uiFonts.size.xLarge, uiColors.darkGray, uiColors.lightGray, uiColors.darkYellow);
16205
16264
  var Info = /*#__PURE__*/styled.span.withConfig({
16206
16265
  displayName: "Spell__Info",
16207
16266
  componentId: "sc-j96fa2-2"
@@ -16240,7 +16299,8 @@ var Spellbook = function Spellbook(_ref) {
16240
16299
  removeShortcut = _ref.removeShortcut,
16241
16300
  atlasIMG = _ref.atlasIMG,
16242
16301
  atlasJSON = _ref.atlasJSON,
16243
- scale = _ref.scale;
16302
+ scale = _ref.scale,
16303
+ spellCooldowns = _ref.spellCooldowns;
16244
16304
  var _useState = useState(''),
16245
16305
  search = _useState[0],
16246
16306
  setSearch = _useState[1];
@@ -16302,7 +16362,8 @@ var Spellbook = function Spellbook(_ref) {
16302
16362
  charMagicLevel: magicLevel,
16303
16363
  onPointerUp: settingShortcutIndex !== -1 ? setShortcut : onSpellClick,
16304
16364
  spellKey: spell.key,
16305
- isSettingShortcut: settingShortcutIndex !== -1
16365
+ isSettingShortcut: settingShortcutIndex !== -1,
16366
+ activeCooldown: spellCooldowns == null ? void 0 : spellCooldowns[spell.magicWords.replaceAll(' ', '_')]
16306
16367
  }, spell)));
16307
16368
  }))));
16308
16369
  };