@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.
@@ -9,5 +9,6 @@ export declare type CircularControllerProps = {
9
9
  inventory?: IItemContainer | null;
10
10
  atlasIMG: any;
11
11
  atlasJSON: any;
12
+ spellCooldowns?: Record<string, number>;
12
13
  };
13
14
  export declare const CircularController: React.FC<CircularControllerProps>;
@@ -8,5 +8,6 @@ export declare type ShortcutsProps = {
8
8
  inventory?: IItemContainer | null;
9
9
  atlasJSON: any;
10
10
  atlasIMG: any;
11
+ spellCooldowns?: Record<string, number>;
11
12
  };
12
13
  export declare const Shortcuts: React.FC<ShortcutsProps>;
@@ -0,0 +1,4 @@
1
+ export declare const useShortcutCooldown: (onShortcutCast: (index: number) => void) => {
2
+ shortcutCooldown: number;
3
+ handleShortcutCast: (index: number) => void;
4
+ };
@@ -6,6 +6,7 @@ interface Props extends IRawSpell {
6
6
  onPointerUp?: (spellKey: string) => void;
7
7
  isSettingShortcut?: boolean;
8
8
  spellKey: string;
9
+ activeCooldown?: number;
9
10
  }
10
11
  export declare const Spell: React.FC<Props>;
11
12
  export {};
@@ -14,5 +14,6 @@ export interface ISpellbookProps {
14
14
  atlasIMG: any;
15
15
  atlasJSON: any;
16
16
  scale?: number;
17
+ spellCooldowns?: Record<string, number>;
17
18
  }
18
19
  export declare const Spellbook: React.FC<ISpellbookProps>;
@@ -12849,7 +12849,31 @@ var CheckButton = function CheckButton(_ref) {
12849
12849
  var SingleShortcut = /*#__PURE__*/styled.button.withConfig({
12850
12850
  displayName: "SingleShortcut",
12851
12851
  componentId: "sc-vz5ev8-0"
12852
- })(["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);
12852
+ })(["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);
12853
+
12854
+ var useShortcutCooldown = function useShortcutCooldown(onShortcutCast) {
12855
+ var _useState = React.useState(0),
12856
+ shortcutCooldown = _useState[0],
12857
+ setShortcutCooldown = _useState[1];
12858
+ var cooldownTimeout = React.useRef(null);
12859
+ var handleShortcutCast = function handleShortcutCast(index) {
12860
+ console.log(shortcutCooldown);
12861
+ if (shortcutCooldown <= 0) setShortcutCooldown(1.5);
12862
+ onShortcutCast(index);
12863
+ };
12864
+ React.useEffect(function () {
12865
+ if (cooldownTimeout.current) clearTimeout(cooldownTimeout.current);
12866
+ if (shortcutCooldown > 0) {
12867
+ cooldownTimeout.current = setTimeout(function () {
12868
+ setShortcutCooldown(shortcutCooldown - 0.1);
12869
+ }, 100);
12870
+ }
12871
+ }, [shortcutCooldown]);
12872
+ return {
12873
+ shortcutCooldown: shortcutCooldown,
12874
+ handleShortcutCast: handleShortcutCast
12875
+ };
12876
+ };
12853
12877
 
12854
12878
  var CircularController = function CircularController(_ref) {
12855
12879
  var onActionClick = _ref.onActionClick,
@@ -12859,7 +12883,11 @@ var CircularController = function CircularController(_ref) {
12859
12883
  shortcuts = _ref.shortcuts,
12860
12884
  inventory = _ref.inventory,
12861
12885
  atlasIMG = _ref.atlasIMG,
12862
- atlasJSON = _ref.atlasJSON;
12886
+ atlasJSON = _ref.atlasJSON,
12887
+ spellCooldowns = _ref.spellCooldowns;
12888
+ var _useShortcutCooldown = useShortcutCooldown(onShortcutClick),
12889
+ handleShortcutCast = _useShortcutCooldown.handleShortcutCast,
12890
+ shortcutCooldown = _useShortcutCooldown.shortcutCooldown;
12863
12891
  var onTouchStart = function onTouchStart(e) {
12864
12892
  var target = e.target;
12865
12893
  target == null ? void 0 : target.classList.add('active');
@@ -12872,10 +12900,14 @@ var CircularController = function CircularController(_ref) {
12872
12900
  action();
12873
12901
  };
12874
12902
  var renderShortcut = function renderShortcut(i) {
12875
- var _shortcuts$i, _shortcuts$i2, _shortcuts$i4, _payload$manaCost;
12903
+ var _shortcuts$i, _shortcuts$i2, _shortcuts$i4, _spellCooldowns$paylo, _payload$manaCost;
12904
+ var buildClassName = function buildClassName(classBase, isOnCooldown) {
12905
+ return classBase + " " + (isOnCooldown ? 'onCooldown' : '');
12906
+ };
12876
12907
  var variant = '';
12877
12908
  if (i === 0) variant = 'top';else if (i >= 3) variant = "bottom-" + (i - 3);
12878
- var onShortcutClickBinded = ((_shortcuts$i = shortcuts[i]) == null ? void 0 : _shortcuts$i.type) !== shared.ShortcutType.None ? onShortcutClick.bind(null, i) : function () {};
12909
+ var onShortcutClickBinded = ((_shortcuts$i = shortcuts[i]) == null ? void 0 : _shortcuts$i.type) !== shared.ShortcutType.None ? handleShortcutCast.bind(null, i) : function () {};
12910
+ var isOnShortcutCooldown = shortcutCooldown > 0;
12879
12911
  if (((_shortcuts$i2 = shortcuts[i]) == null ? void 0 : _shortcuts$i2.type) === shared.ShortcutType.Item) {
12880
12912
  var _shortcuts$i3;
12881
12913
  var _payload = (_shortcuts$i3 = shortcuts[i]) == null ? void 0 : _shortcuts$i3.payload;
@@ -12898,7 +12930,9 @@ var CircularController = function CircularController(_ref) {
12898
12930
  onTouchEnd: onTouchEnd.bind(null, onShortcutClickBinded),
12899
12931
  disabled: false,
12900
12932
  className: variant
12901
- }, _payload && React__default.createElement(SpriteFromAtlas, {
12933
+ }, isOnShortcutCooldown && React__default.createElement("span", {
12934
+ className: "cooldown"
12935
+ }, shortcutCooldown.toFixed(1)), _payload && React__default.createElement(SpriteFromAtlas, {
12902
12936
  atlasIMG: atlasIMG,
12903
12937
  atlasJSON: atlasJSON,
12904
12938
  spriteKey: shared.getItemTextureKeyPath({
@@ -12917,18 +12951,23 @@ var CircularController = function CircularController(_ref) {
12917
12951
  pointerEvents: 'none'
12918
12952
  }
12919
12953
  }), React__default.createElement("span", {
12920
- className: "qty"
12954
+ className: buildClassName('qty', isOnShortcutCooldown)
12921
12955
  }, totalQty));
12922
12956
  }
12923
12957
  var payload = (_shortcuts$i4 = shortcuts[i]) == null ? void 0 : _shortcuts$i4.payload;
12958
+ var spellCooldown = !payload ? 0 : (_spellCooldowns$paylo = spellCooldowns == null ? void 0 : spellCooldowns[payload.magicWords.replaceAll(' ', '_')]) != null ? _spellCooldowns$paylo : shortcutCooldown;
12959
+ var cooldown = spellCooldown > shortcutCooldown ? spellCooldown : shortcutCooldown;
12960
+ var isOnCooldown = cooldown > 0 && !!payload;
12924
12961
  return React__default.createElement(StyledShortcut, {
12925
12962
  key: i,
12926
12963
  onTouchStart: onTouchStart,
12927
12964
  onTouchEnd: onTouchEnd.bind(null, onShortcutClickBinded),
12928
12965
  disabled: mana < ((_payload$manaCost = payload == null ? void 0 : payload.manaCost) != null ? _payload$manaCost : 0),
12929
12966
  className: variant
12930
- }, React__default.createElement("span", {
12931
- className: "mana"
12967
+ }, isOnCooldown && React__default.createElement("span", {
12968
+ className: "cooldown"
12969
+ }, cooldown.toFixed(cooldown < 10 ? 1 : 0)), React__default.createElement("span", {
12970
+ className: buildClassName('mana', isOnCooldown)
12932
12971
  }, payload && payload.manaCost), React__default.createElement("span", {
12933
12972
  className: "magicWords"
12934
12973
  }, payload == null ? void 0 : payload.magicWords.split(' ').map(function (word) {
@@ -13870,7 +13909,9 @@ var ItemInfo = function ItemInfo(_ref) {
13870
13909
  item: item
13871
13910
  }, React__default.createElement(Header, null, React__default.createElement("div", null, React__default.createElement(Title$1, null, item.name), item.rarity !== 'Common' && React__default.createElement(Rarity, {
13872
13911
  item: item
13873
- }, item.rarity), React__default.createElement(Type, null, item.subType)), React__default.createElement(AllowedSlots, null, renderAvaibleSlots())), item.minRequirements && React__default.createElement(LevelRequirement, null, React__default.createElement("div", null, "Level: ", item.minRequirements.level), React__default.createElement("div", null, item.minRequirements.skill.name[0].toUpperCase() + item.minRequirements.skill.name.slice(1), ": ", item.minRequirements.skill.level)), renderStatistics(), renderEntityEffects(), item.usableEffectDescription && React__default.createElement(Statistic, {
13912
+ }, item.rarity), React__default.createElement(Type, null, item.subType)), React__default.createElement(AllowedSlots, null, renderAvaibleSlots())), item.minRequirements && React__default.createElement(LevelRequirement, null, React__default.createElement("div", {
13913
+ className: "title"
13914
+ }, "Requirements:"), React__default.createElement("div", null, "- Level: ", item.minRequirements.level), React__default.createElement("div", null, "-", ' ', item.minRequirements.skill.name[0].toUpperCase() + item.minRequirements.skill.name.slice(1), ": ", item.minRequirements.skill.level)), renderStatistics(), renderEntityEffects(), item.usableEffectDescription && React__default.createElement(Statistic, {
13874
13915
  "$isSpecial": true
13875
13916
  }, item.usableEffectDescription), item.equippedBuffDescription && React__default.createElement(Statistic, {
13876
13917
  "$isSpecial": true
@@ -13904,7 +13945,7 @@ var Type = /*#__PURE__*/styled.div.withConfig({
13904
13945
  var LevelRequirement = /*#__PURE__*/styled.div.withConfig({
13905
13946
  displayName: "ItemInfo__LevelRequirement",
13906
13947
  componentId: "sc-1xm4q8k-4"
13907
- })(["font-size:", ";margin-top:0.2rem;margin-bottom:1rem;color:", ";"], uiFonts.size.small, uiColors.orange);
13948
+ })(["font-size:", ";margin-top:0.2rem;margin-bottom:1rem;color:", ";.title{margin-bottom:4px;}div{margin-bottom:2px;}"], uiFonts.size.small, uiColors.orange);
13908
13949
  var Statistic = /*#__PURE__*/styled.div.withConfig({
13909
13950
  displayName: "ItemInfo__Statistic",
13910
13951
  componentId: "sc-1xm4q8k-5"
@@ -15844,15 +15885,19 @@ var Shortcuts = function Shortcuts(_ref) {
15844
15885
  isBlockedCastingByKeyboard = _ref$isBlockedCasting === void 0 ? false : _ref$isBlockedCasting,
15845
15886
  atlasJSON = _ref.atlasJSON,
15846
15887
  atlasIMG = _ref.atlasIMG,
15847
- inventory = _ref.inventory;
15888
+ inventory = _ref.inventory,
15889
+ spellCooldowns = _ref.spellCooldowns;
15848
15890
  var shortcutsRefs = React.useRef([]);
15891
+ var _useShortcutCooldown = useShortcutCooldown(onShortcutCast),
15892
+ handleShortcutCast = _useShortcutCooldown.handleShortcutCast,
15893
+ shortcutCooldown = _useShortcutCooldown.shortcutCooldown;
15849
15894
  React.useEffect(function () {
15850
15895
  var handleKeyDown = function handleKeyDown(e) {
15851
15896
  if (isBlockedCastingByKeyboard) return;
15852
15897
  var shortcutIndex = Number(e.key) - 1;
15853
15898
  if (shortcutIndex >= 0 && shortcutIndex <= 5) {
15854
15899
  var _shortcutsRefs$curren;
15855
- onShortcutCast(shortcutIndex);
15900
+ handleShortcutCast(shortcutIndex);
15856
15901
  (_shortcutsRefs$curren = shortcutsRefs.current[shortcutIndex]) == null ? void 0 : _shortcutsRefs$curren.classList.add('active');
15857
15902
  setTimeout(function () {
15858
15903
  var _shortcutsRefs$curren2;
@@ -15864,11 +15909,15 @@ var Shortcuts = function Shortcuts(_ref) {
15864
15909
  return function () {
15865
15910
  window.removeEventListener('keydown', handleKeyDown);
15866
15911
  };
15867
- }, [shortcuts, isBlockedCastingByKeyboard]);
15912
+ }, [shortcuts, isBlockedCastingByKeyboard, shortcutCooldown]);
15868
15913
  return React__default.createElement(List$1, null, Array.from({
15869
15914
  length: 6
15870
15915
  }).map(function (_, i) {
15871
- var _shortcuts$i, _shortcuts$i3, _payload$manaCost;
15916
+ var _shortcuts$i, _shortcuts$i3, _spellCooldowns$paylo, _payload$manaCost;
15917
+ var buildClassName = function buildClassName(classBase, isOnCooldown) {
15918
+ return classBase + " " + (isOnCooldown ? 'onCooldown' : '');
15919
+ };
15920
+ var isOnShortcutCooldown = shortcutCooldown > 0;
15872
15921
  if (((_shortcuts$i = shortcuts[i]) == null ? void 0 : _shortcuts$i.type) === shared.ShortcutType.Item) {
15873
15922
  var _shortcuts$i2;
15874
15923
  var _payload = (_shortcuts$i2 = shortcuts[i]) == null ? void 0 : _shortcuts$i2.payload;
@@ -15885,12 +15934,14 @@ var Shortcuts = function Shortcuts(_ref) {
15885
15934
  var totalQty = _payload && inventory ? countItemFromInventory(_payload.key, inventory) : 0;
15886
15935
  return React__default.createElement(StyledShortcut$1, {
15887
15936
  key: i,
15888
- onPointerDown: onShortcutCast.bind(null, i),
15937
+ onPointerDown: handleShortcutCast.bind(null, i),
15889
15938
  disabled: false,
15890
15939
  ref: function ref(el) {
15891
15940
  if (el) shortcutsRefs.current[i] = el;
15892
15941
  }
15893
- }, _payload && React__default.createElement(SpriteFromAtlas, {
15942
+ }, isOnShortcutCooldown && React__default.createElement("span", {
15943
+ className: "cooldown"
15944
+ }, shortcutCooldown.toFixed(1)), _payload && React__default.createElement(SpriteFromAtlas, {
15894
15945
  atlasIMG: atlasIMG,
15895
15946
  atlasJSON: atlasJSON,
15896
15947
  spriteKey: shared.getItemTextureKeyPath({
@@ -15902,27 +15953,32 @@ var Shortcuts = function Shortcuts(_ref) {
15902
15953
  width: 32,
15903
15954
  height: 32
15904
15955
  }), React__default.createElement("span", {
15905
- className: "qty"
15956
+ className: buildClassName('qty', isOnShortcutCooldown)
15906
15957
  }, totalQty), React__default.createElement("span", {
15907
- className: "keyboard"
15958
+ className: buildClassName('keyboard', isOnShortcutCooldown)
15908
15959
  }, i + 1));
15909
15960
  }
15910
15961
  var payload = (_shortcuts$i3 = shortcuts[i]) == null ? void 0 : _shortcuts$i3.payload;
15962
+ var spellCooldown = !payload ? 0 : (_spellCooldowns$paylo = spellCooldowns == null ? void 0 : spellCooldowns[payload.magicWords.replaceAll(' ', '_')]) != null ? _spellCooldowns$paylo : shortcutCooldown;
15963
+ var cooldown = spellCooldown > shortcutCooldown ? spellCooldown : shortcutCooldown;
15964
+ var isOnCooldown = cooldown > 0 && !!payload;
15911
15965
  return React__default.createElement(StyledShortcut$1, {
15912
15966
  key: i,
15913
- onPointerDown: onShortcutCast.bind(null, i),
15967
+ onPointerDown: handleShortcutCast.bind(null, i),
15914
15968
  disabled: mana < ((_payload$manaCost = payload == null ? void 0 : payload.manaCost) != null ? _payload$manaCost : 0),
15915
15969
  ref: function ref(el) {
15916
15970
  if (el) shortcutsRefs.current[i] = el;
15917
15971
  }
15918
- }, React__default.createElement("span", {
15919
- className: "mana"
15972
+ }, isOnCooldown && React__default.createElement("span", {
15973
+ className: "cooldown"
15974
+ }, cooldown.toFixed(cooldown < 10 ? 1 : 0)), React__default.createElement("span", {
15975
+ className: buildClassName('mana', isOnCooldown)
15920
15976
  }, payload && payload.manaCost), React__default.createElement("span", {
15921
15977
  className: "magicWords"
15922
15978
  }, payload == null ? void 0 : payload.magicWords.split(' ').map(function (word) {
15923
15979
  return word[0];
15924
15980
  })), React__default.createElement("span", {
15925
- className: "keyboard"
15981
+ className: buildClassName('keyboard', isOnCooldown)
15926
15982
  }, i + 1));
15927
15983
  }));
15928
15984
  };
@@ -16179,14 +16235,17 @@ var Spell = function Spell(_ref) {
16179
16235
  charMagicLevel = _ref.charMagicLevel,
16180
16236
  onPointerUp = _ref.onPointerUp,
16181
16237
  isSettingShortcut = _ref.isSettingShortcut,
16182
- minMagicLevelRequired = _ref.minMagicLevelRequired;
16238
+ minMagicLevelRequired = _ref.minMagicLevelRequired,
16239
+ activeCooldown = _ref.activeCooldown;
16183
16240
  var disabled = isSettingShortcut ? charMagicLevel < minMagicLevelRequired : manaCost > charMana || charMagicLevel < minMagicLevelRequired;
16184
16241
  return React__default.createElement(Container$k, {
16185
- disabled: disabled,
16242
+ disabled: disabled || (activeCooldown != null ? activeCooldown : 0) > 0,
16186
16243
  onPointerUp: onPointerUp == null ? void 0 : onPointerUp.bind(null, spellKey),
16187
16244
  isSettingShortcut: isSettingShortcut && !disabled,
16188
16245
  className: "spell"
16189
- }, disabled && React__default.createElement(Overlay, null, charMagicLevel < minMagicLevelRequired ? 'Low magic level' : manaCost > charMana && 'No mana'), React__default.createElement(SpellImage, null, magicWords.split(' ').map(function (word) {
16246
+ }, disabled && React__default.createElement(Overlay, null, charMagicLevel < minMagicLevelRequired ? 'Low magic level' : manaCost > charMana && 'No mana'), React__default.createElement(SpellImage, null, activeCooldown && activeCooldown > 0 ? React__default.createElement("span", {
16247
+ className: "cooldown"
16248
+ }, activeCooldown.toFixed(activeCooldown > 10 ? 0 : 1)) : null, magicWords.split(' ').map(function (word) {
16190
16249
  return word[0];
16191
16250
  })), React__default.createElement(Info, null, React__default.createElement(Title$6, null, React__default.createElement("span", null, name), React__default.createElement("span", {
16192
16251
  className: "spell"
@@ -16204,7 +16263,7 @@ var Container$k = /*#__PURE__*/styled.button.withConfig({
16204
16263
  var SpellImage = /*#__PURE__*/styled.div.withConfig({
16205
16264
  displayName: "Spell__SpellImage",
16206
16265
  componentId: "sc-j96fa2-1"
16207
- })(["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);
16266
+ })(["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);
16208
16267
  var Info = /*#__PURE__*/styled.span.withConfig({
16209
16268
  displayName: "Spell__Info",
16210
16269
  componentId: "sc-j96fa2-2"
@@ -16243,7 +16302,8 @@ var Spellbook = function Spellbook(_ref) {
16243
16302
  removeShortcut = _ref.removeShortcut,
16244
16303
  atlasIMG = _ref.atlasIMG,
16245
16304
  atlasJSON = _ref.atlasJSON,
16246
- scale = _ref.scale;
16305
+ scale = _ref.scale,
16306
+ spellCooldowns = _ref.spellCooldowns;
16247
16307
  var _useState = React.useState(''),
16248
16308
  search = _useState[0],
16249
16309
  setSearch = _useState[1];
@@ -16305,7 +16365,8 @@ var Spellbook = function Spellbook(_ref) {
16305
16365
  charMagicLevel: magicLevel,
16306
16366
  onPointerUp: settingShortcutIndex !== -1 ? setShortcut : onSpellClick,
16307
16367
  spellKey: spell.key,
16308
- isSettingShortcut: settingShortcutIndex !== -1
16368
+ isSettingShortcut: settingShortcutIndex !== -1,
16369
+ activeCooldown: spellCooldowns == null ? void 0 : spellCooldowns[spell.magicWords.replaceAll(' ', '_')]
16309
16370
  }, spell)));
16310
16371
  }))));
16311
16372
  };