@enigma-lake/tower-play-controller-sdk
v2.0.18
Published
A React component library for building gameplay interfaces
Keywords
Readme
TowerPlayController SDK
@enigma-lake/tower-play-controller-sdk is a React SDK for Tower-style game controls.
It includes:
- Manual play
- Optional autoplay
- Optional risk selection
- Play amount controls
- Currency-aware UI
- Optional Double Or Nothing button
- Custom widget slots
PlayControllerProps supports two modes:
- Full mode (default): risk + autoplay enabled
- Simplified mode: set
withoutRiskAndAutoplay: true
Installation
npm install @enigma-lake/tower-play-controller-sdkimport "@enigma-lake/tower-play-controller-sdk/dist/style.css";Quickstart
import { AutoManualPlayProvider, type PlayControllerProps } from "@enigma-lake/tower-play-controller-sdk";
const config: PlayControllerProps = {
currencyOptions,
panel: { bgColorHex: "#01243A", bgColorOpacity: 0.5 },
dropdown: {
bgColorHex: "#01243A",
riskColorConfig: {
LOW: "#4CAF50",
MEDIUM: "#FF9800",
HIGH: "#F44336",
},
},
leftWidgets: [],
centerWidgets: [],
rightWidgets: [],
onPlay: () => {},
onCashout: () => {},
onAutoPlay: (selection, next, stop) => {
// call next() when round succeeds, stop() to abort autoplay
next();
},
playOptions: {
isPlaying: false,
canCashout: false,
disabledCashout: false,
disabledController: false,
disabledMenu: false,
displayController: true,
disableInput: false,
risks: ["LOW", "MEDIUM", "HIGH"],
currentRisk: "LOW",
onRiskChange: () => {},
showAutoPlayToast: () => {},
totalBalance: 1000,
playHook: () => ({
playAmount: 1,
setPlayAmount: () => {},
playLimits: undefined,
}),
autoPlayDelay: 1500,
},
};
<AutoManualPlayProvider config={config}>
{() => null}
</AutoManualPlayProvider>;Cashout Behavior
canCashout and disabledCashout are independent:
canCashout: false: cashout button state is not shown.canCashout: true+disabledCashout: false: cashout is visible and clickable.canCashout: true+disabledCashout: true: cashout is visible but disabled.
When disabledCashout is true, click handlers are blocked in:
- Manual cashout button
- Autoplay stop/cashout button
Full Mode vs Simplified Mode
Full mode (default):
- Requires
onAutoPlay - Includes risk configuration in
playOptions dropdown.riskColorConfigis required
Simplified mode:
withoutRiskAndAutoplay: true;In simplified mode:
onAutoPlayandonAutoPlayStopare not required- Risk configuration is removed from
playOptions dropdown.riskColorConfigis not required
Double Or Nothing (Optional)
doubleOrNothing?: {
disabled: boolean;
display: boolean;
onDoubleOrNothingOpen: () => void;
onDoubleOrNothingClose: () => void;
};Behavior:
- Shown only when
displayistrue - Sits beside Cashout (cashout width shrinks accordingly)
- Fully optional and backwards compatible
Notes
- Import
PlayControllerPropsfor strongly typed integration. - Keep
playOptionsvalues in sync with your game engine state. displayController: falsehides the SDK UI entirely.
