@@ -4,17 +4,24 @@ import { global, globalSet } from '../../utils/global.js';
44import style from '../../utils/style.js' ;
55import onPage from '../../utils/onPage.js' ;
66
7- const crafting = onPage ( 'Crafting' ) ;
8- const decks = onPage ( 'Decks' ) ;
7+ export const crafting = onPage ( 'Crafting' ) ;
8+ export const decks = onPage ( 'Decks' ) ;
9+ export const filters = [
10+ function templateFilter ( card , removed = false ) {
11+ return removed ;
12+ } ,
13+ ] ;
914
1015const base = {
1116 onChange : ( ) => applyLook ( ) ,
1217 category : 'Filter' ,
1318 page : 'Library' ,
19+ default : true ,
1420} ;
1521
1622const setting = settings . register ( {
1723 ...base ,
24+ default : false ,
1825 name : 'Disable filter' ,
1926 key : 'underscript.deck.filter.disable' ,
2027} ) ;
@@ -23,7 +30,6 @@ const splitBaseGen = settings.register({
2330 ...base ,
2431 name : 'Split Based and Token' ,
2532 key : 'underscript.deck.filter.split' ,
26- default : true ,
2733} ) ;
2834
2935const tribe = settings . register ( {
@@ -61,8 +67,10 @@ function applyLook(refresh = decks || crafting) {
6167 }
6268
6369 // Tribe filter
64- if ( tribe . value ( ) && ! $ ( '#allTribeInput' ) . length ) {
70+ if ( ! setting . value ( ) && tribe . value ( ) && ! $ ( '#allTribeInput' ) . length ) {
6571 $ ( '#monsterInput' ) . parent ( ) . before ( createTribeButton ( ) , ' ' ) ;
72+ } else if ( setting . value ( ) ) {
73+ $ ( '#allTribeInput' ) . parent ( ) . remove ( ) ;
6674 }
6775 $ ( '#allTribeInput' ) . prop ( 'disabled' , ! tribe . value ( ) ) ;
6876
@@ -77,35 +85,14 @@ eventManager.on(':loaded:Decks :loaded:Crafting', () => {
7785 // Update filter visuals
7886 applyLook ( false ) ;
7987 globalSet ( 'isRemoved' , function newFilter ( card ) {
80- let removed = this . super ( card ) ;
81- if ( setting . value ( ) ) return removed ;
82- // Shiny - This works, is ugly
83- if ( removed && mergeShiny ( ) ) {
84- card . shiny = ! card . shiny ;
85- removed = this . super ( card ) ; // If it would still hide, fine.
86- card . shiny = ! card . shiny ;
87- }
88- // Show base/gen if relevant
89- if ( ! removed && splitGenerated ( ) ) {
90- if ( card . rarity === 'BASE' && ! card . shiny && ! $ ( '#baseRarityInput' ) . prop ( 'checked' ) ) {
91- return true ;
88+ if ( setting . value ( ) ) return this . super ( card ) ;
89+ return filters . reduce ( ( removed , func ) => {
90+ const val = func . call ( this , card , removed ) ;
91+ if ( typeof val === 'boolean' ) {
92+ return val ;
9293 }
93- if ( card . rarity === 'TOKEN' && ! $ ( '#tokenRarityInput' ) . prop ( 'checked' ) ) {
94- return true ;
95- }
96- }
97- // Rarity
98- // Type
99- // Tribe
100- if ( ! removed && tribe . value ( ) ) {
101- if ( $ ( '#allTribeInput' ) . prop ( 'checked' ) ) {
102- return ! card . tribes . length ;
103- }
104- }
105- // Search
106- // Owned/Unowned
107- // fall back for now
108- return removed ;
94+ return removed ;
95+ } , false ) ;
10996 } ) ;
11097} ) ;
11198
@@ -132,3 +119,42 @@ function createTribeButton(type = 'ALL') {
132119 <img src="images/tribes/${ type } .png">
133120 </label>` ) ;
134121}
122+
123+ filters . push (
124+ function basicFilter ( card ) {
125+ // Rarity, Type, Extension, Search
126+ return this . super ( card ) ;
127+ } ,
128+ function shinyFilter ( card , removed ) {
129+ if ( removed && mergeShiny ( ) ) {
130+ return this . super ( {
131+ ...card ,
132+ shiny : ! card . shiny ,
133+ } ) ;
134+ }
135+ return removed ;
136+ } ,
137+ function baseGenFilter ( card , removed ) {
138+ if ( ! removed && splitGenerated ( ) ) {
139+ if ( card . rarity === 'BASE' && ! card . shiny && ! $ ( '#baseRarityInput' ) . prop ( 'checked' ) ) {
140+ return true ;
141+ }
142+ if ( card . rarity === 'TOKEN' && ! $ ( '#tokenRarityInput' ) . prop ( 'checked' ) ) {
143+ return true ;
144+ }
145+ }
146+ return removed ;
147+ } ,
148+ function tribeFilter ( card , removed ) {
149+ if ( ! removed && tribe . value ( ) && $ ( '#allTribeInput' ) . prop ( 'checked' ) ) {
150+ return ! card . tribes . length ;
151+ }
152+ return removed ;
153+ } ,
154+ function searchFilter ( card , removed ) { // Custom keywords
155+ return removed ;
156+ } ,
157+ function unownedFilter ( card , removed ) { // Crafting only
158+ return removed ;
159+ } ,
160+ ) ;
0 commit comments