X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=resources%2Fjs%2Fcomponents%2Ftracker%2FToggleIcon.js;h=d3e3960fa4bd00795561344ddc493e40998e9c32;hb=ac6921da72ff4b0beab9e5f1308788a55aae3ad9;hp=c1a193c209f9540457cc7d223a6c9f54f7734430;hpb=6a65eac02f94f00fdd2d56ad8feddf5d9476aa1e;p=alttp.git
diff --git a/resources/js/components/tracker/ToggleIcon.js b/resources/js/components/tracker/ToggleIcon.js
index c1a193c..d3e3960 100644
--- a/resources/js/components/tracker/ToggleIcon.js
+++ b/resources/js/components/tracker/ToggleIcon.js
@@ -8,6 +8,7 @@ import {
getDungeonBoss,
getDungeonRemainingItems,
getDungeonPrize,
+ getGTBoss,
hasDungeonBoss,
hasDungeonPrize,
highestActive,
@@ -18,11 +19,12 @@ import {
} from '../../helpers/tracker';
import { useTracker } from '../../hooks/tracker';
-const ToggleIcon = ({ controller, className, icons }) => {
+const ToggleIcon = ({ controller, className, icons, svg, title, transform }) => {
const { setManualState, state } = useTracker();
const activeController = controller || ToggleIcon.nullController;
const active = activeController.getActive(state, icons);
const defaultIcon = activeController.getDefault(state, icons);
+ const icon = active || defaultIcon || icons[0];
const classNames = ['toggle-icon'];
if (active) {
classNames.push('active');
@@ -32,6 +34,25 @@ const ToggleIcon = ({ controller, className, icons }) => {
if (className) {
classNames.push(className);
}
+ if (svg) {
+ return {
+ activeController.handlePrimary(state, setManualState, icons);
+ e.preventDefault();
+ e.stopPropagation();
+ }}
+ onContextMenu={(e) => {
+ activeController.handleSecondary(state, setManualState, icons);
+ e.preventDefault();
+ e.stopPropagation();
+ }}
+ transform={transform}
+ >
+
+ ;
+ }
return {
@@ -45,7 +66,7 @@ const ToggleIcon = ({ controller, className, icons }) => {
e.stopPropagation();
}}
>
-
+
;
};
@@ -184,6 +205,13 @@ ToggleIcon.dungeonPrizeController = (dungeon) => ({
handleSecondary: previousString(`${dungeon.id}-prize`),
});
+ToggleIcon.gtBossController = (which) => ({
+ getActive: (state) => getGTBoss(state, which),
+ getDefault: (state) => getGTBoss(state, which),
+ handlePrimary: nextString(`gt-${which}-boss`),
+ handleSecondary: previousString(`gt-${which}-boss`),
+});
+
ToggleIcon.medallionController = {
getActive: highestActive,
getDefault: firstIcon,
@@ -240,6 +268,13 @@ ToggleIcon.nullController = {
handleSecondary: doNothing,
};
+ToggleIcon.pinController = (pin, removePin) => ({
+ getActive: firstIcon,
+ getDefault: firstIcon,
+ handlePrimary: doNothing,
+ handleSecondary: () => removePin(pin),
+});
+
ToggleIcon.simpleController = {
getActive: highestActive,
getDefault: firstIcon,
@@ -269,6 +304,9 @@ ToggleIcon.propTypes = {
handleSecondary: PropTypes.func,
}),
icons: PropTypes.arrayOf(PropTypes.string),
+ svg: PropTypes.bool,
+ title: PropTypes.string,
+ transform: PropTypes.string,
};
export default ToggleIcon;