@@ -4,19 +4,21 @@ import skull from 'data-url:./assets/img/skull.png';
44import { emit , on } from 'kontra' ;
55import {
66 LEVEL_COMPLETE ,
7+ MONETIZATION_PROGRESS ,
78 NEAR_TOKENS_ADDED ,
89 NFT_MINT ,
910 RESTART_LEVEL ,
1011 START_LEVEL ,
1112 START_NEXT_LEVEL ,
1213} from './gameEvents' ;
1314import { fetchArcadianHeads } from './arcadianApi' ;
14- import { nftTokensBySeries , setSelectedArcadian } from './store' ;
15+ import { isSubscriber , nftTokensBySeries , setSelectedArcadian } from './store' ;
1516import { IPFS_BASE_PATH } from './near/nearConnection' ;
1617import { doesOwnNft , getNearLevelId } from './utils' ;
1718
1819const overlayIds = [ 'main' , 'bonus' , 'levels' , 'level-dialog' , 'near-levels' ] ;
1920const levels = 20 ;
21+ let hasRemovedDisableOnBonusEls = false ;
2022export const initMenu = ( ) => {
2123 addButtonListeners ( ) ;
2224 listenForGameEvents ( ) ;
@@ -94,6 +96,9 @@ const pouplateBonusGrid = (bonusGridEl) => {
9496 bonusEl . setAttribute ( 'width' , img . width * 4 ) ;
9597 bonusEl . classList . add ( 'bonus-item' ) ;
9698 bonusEl . setAttribute ( 'arcadian' , res [ i ] . value . id ) ;
99+ if ( i > 5 && ! isSubscriber ) {
100+ bonusEl . classList . add ( 'disabled' ) ;
101+ }
97102 const ctx = bonusEl . getContext ( '2d' ) ;
98103 ctx . imageSmoothingEnabled = false ;
99104 ctx . scale ( 8 , 8 ) ;
@@ -108,8 +113,12 @@ const pouplateBonusGrid = (bonusGridEl) => {
108113const listenForBonusGridEvents = ( bonusGridEl ) => {
109114 bonusGridEl . addEventListener ( 'click' , ( e ) => {
110115 if ( e . target . classList . contains ( 'bonus-item' ) ) {
111- setSelectedArcadian ( e . target . getAttribute ( 'arcadian' ) ) ;
112- showOverlay ( 'main' ) ;
116+ if ( ! e . target . classList . contains ( 'disabled' ) ) {
117+ setSelectedArcadian ( e . target . getAttribute ( 'arcadian' ) ) ;
118+ showOverlay ( 'main' ) ;
119+ } else {
120+ // TODO (johnedvard) tell player to become a subscriber
121+ }
113122 }
114123 } ) ;
115124} ;
@@ -195,6 +204,7 @@ const showOverlay = (id) => {
195204const listenForGameEvents = ( ) => {
196205 on ( LEVEL_COMPLETE , onLevelComplete ) ;
197206 on ( NEAR_TOKENS_ADDED , onNearTokensAdded ) ;
207+ on ( MONETIZATION_PROGRESS , onMonetizationProgress ) ;
198208} ;
199209const onLevelComplete = ( ) => {
200210 showOverlay ( 'level-dialog' ) ;
@@ -207,3 +217,18 @@ const onNearTokensAdded = ({
207217} ) => {
208218 initNearLevels ( { nftTokensBySeries, nftTokensForOwner, nftCollections } ) ;
209219} ;
220+
221+ const onMonetizationProgress = ( ) => {
222+ if ( hasRemovedDisableOnBonusEls ) return ;
223+ const coilSubEl = document . getElementById ( 'coil-subscriber' ) ;
224+ const coilBtnEl = document . getElementById ( 'coilBtn' ) ;
225+ if ( coilBtnEl ) coilBtnEl . remove ( ) ;
226+ if ( coilSubEl ) coilSubEl . classList . remove ( 'hide' ) ;
227+ const bonusItemEls = document . getElementsByClassName ( 'bonus-item' ) ;
228+ for ( item of bonusItemEls ) {
229+ item . classList . remove ( 'disabled' ) ;
230+ }
231+ if ( bonusItemEls && bonusItemEls . length ) {
232+ hasRemovedDisableOnBonusEls = true ;
233+ }
234+ } ;
0 commit comments