diff --git a/origin-dex-api/src/server.ts b/origin-dex-api/src/server.ts index d4e0f15..49e4f3e 100644 --- a/origin-dex-api/src/server.ts +++ b/origin-dex-api/src/server.ts @@ -254,7 +254,7 @@ app.get('/api/pokemon/:pfic/details', async (req, res) => { } }); -app.get('/api/plan', async (req: Request, res: Response) => { +app.get('/api/plan', authenticateToken, async (req: AuthRequest, res: Response) => { try { // Read the efficiency plan file const planData = await fs.readFile( @@ -269,6 +269,14 @@ app.get('/api/plan', async (req: Request, res: Response) => { driver: sqlite3.Database }); + // Get user's caught Pokemon + const userDb = await userDbPromise; + const caughtPokemon = await userDb.all( + 'SELECT pfic FROM caught_pokemon WHERE user_id = ?', + [req.user.id] + ); + const caughtPfics = new Set(caughtPokemon.map(p => p.pfic)); + // Helper function to get evolution methods async function getEvolutionMethods(fromPfic: string, toPfic: string) { // Try direct evolution first @@ -309,15 +317,49 @@ app.get('/api/plan', async (req: Request, res: Response) => { return ['Evolution']; } - // Enhance the plan with evolution methods + const debug_pfic = "0010-01-000-0"; + // Enhance the plan with evolution methods and account for caught Pokemon for (const game of efficiencyPlan) { for (const pokemon of game.pokemon) { + // Set initial catch count + pokemon.catch_count = 1; + if (pokemon.pfic === debug_pfic) { + console.log(`pokemon: ${pokemon.name} - ${pokemon.catch_count}`); + } + + // Add evolution targets to catch count if (pokemon.evolve_to) { + pokemon.catch_count += pokemon.evolve_to.length; + if (pokemon.pfic === debug_pfic) { + console.log(`pokemon: ${pokemon.name} - ${pokemon.catch_count}`); + } + + // Add evolution methods for (const evolution of pokemon.evolve_to) { const methods = await getEvolutionMethods(pokemon.pfic, evolution.pfic); evolution.method = methods.join(' → '); } } + + // Reduce catch count for already caught Pokemon + if (caughtPfics.has(pokemon.pfic)) { + pokemon.catch_count = Math.max(0, pokemon.catch_count - 1); + if (pokemon.pfic === debug_pfic) { + console.log(`B pokemon: ${pokemon.name} - ${pokemon.catch_count}`); + } + } + + // Check evolution targets + if (pokemon.evolve_to) { + for (const evolution of pokemon.evolve_to) { + if (caughtPfics.has(evolution.pfic)) { + pokemon.catch_count = Math.max(0, pokemon.catch_count - 1); + if (pokemon.pfic === debug_pfic) { + console.log(`C pokemon: ${pokemon.name} - ${pokemon.catch_count} (${evolution.pfic})`); + } + } + } + } } } @@ -368,6 +410,7 @@ app.post('/api/pokemon/caught/:pfic', authenticateToken, (req: AuthRequest, res: ); res.json({ status: 'caught' }); } + console.log(`Caught ${pfic}`); } catch (err) { console.error('Error updating caught status:', err); res.status(500).json({ error: 'Internal server error' }); diff --git a/origin-dex/src/app/app.component.ts b/origin-dex/src/app/app.component.ts index a199bc7..3c8cd69 100644 --- a/origin-dex/src/app/app.component.ts +++ b/origin-dex/src/app/app.component.ts @@ -7,6 +7,7 @@ import { MatTabsModule } from '@angular/material/tabs'; import { AuthService } from './core/services/auth.service'; import { MatSidenavModule } from '@angular/material/sidenav'; import { MatListModule } from '@angular/material/list'; +import { PokemonService } from './core/services/pokemon.service'; @Component({ selector: 'app-root', @@ -39,9 +40,6 @@ import { MatListModule } from '@angular/material/list'; - - Storage - Storage Carousel @@ -96,5 +94,10 @@ import { MatListModule } from '@angular/material/list'; `] }) export class AppComponent { - constructor(public auth: AuthService) {} + constructor( + public auth: AuthService, + public pokemonService: PokemonService + ) { + this.pokemonService.initializeCaughtPokemon(); + } } \ No newline at end of file diff --git a/origin-dex/src/app/app.routes.ts b/origin-dex/src/app/app.routes.ts index e426c19..98bebd3 100644 --- a/origin-dex/src/app/app.routes.ts +++ b/origin-dex/src/app/app.routes.ts @@ -4,8 +4,8 @@ import { AuthGuard } from './core/guards/auth.guard'; export const routes: Routes = [ { path: 'storage', - loadComponent: () => import('./features/pokemon/pokemon-grid/pokemon-grid.component') - .then(m => m.PokemonGridComponent) + loadComponent: () => import('./features/pokemon/pokemon-carousel/pokemon-carousel.component') + .then(m => m.PokemonCarouselComponent) }, { path: 'storage-carousel', // Add new route diff --git a/origin-dex/src/app/core/services/pokemon.service.ts b/origin-dex/src/app/core/services/pokemon.service.ts index 312af7c..8c7aa36 100644 --- a/origin-dex/src/app/core/services/pokemon.service.ts +++ b/origin-dex/src/app/core/services/pokemon.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; -import { map, Observable, shareReplay } from 'rxjs'; +import { map, Observable, shareReplay, tap } from 'rxjs'; import { Pokemon, PokemonEncounter } from '../models/pokemon.model'; import { environment } from '../../../environments/environment.development'; import { comparePfics } from '../utils/pfic-utils'; @@ -11,6 +11,7 @@ import { comparePfics } from '../utils/pfic-utils'; export class PokemonService { private apiUrl = environment.apiUrl; private pokemonCache: Observable<(Pokemon | null)[][]> | null = null; + private pokemonGroups: (Pokemon | null)[][] = []; constructor(private http: HttpClient) { } @@ -34,9 +35,12 @@ export class PokemonService { MarkName: pokemon.mark_name, Image: this.getPokemonImageUrl(pokemon.PFIC), IsDefault: pokemon.is_default || false, - IsCaught: false + IsCaught: this.caughtPokemon.has(pokemon.PFIC) } as Pokemon : null) )), + tap(groups => { + this.pokemonGroups = groups; // Store the groups for later updates + }), shareReplay(1) ); @@ -49,13 +53,29 @@ export class PokemonService { toggleCatch(pfic: string): Observable<{status: string, pfic: string}> { return this.http.post<{status: string, pfic: string}>( - `${this.apiUrl}/toggle_catch/${pfic}`, + `${this.apiUrl}/pokemon/caught/${pfic}`, {} + ).pipe( + tap(response => { + // Update both the Set and the cached Pokemon objects + this.updateCaughtStatus(pfic, response.status === 'caught'); + this.updatePokemonCaughtStatus(pfic, response.status === 'caught'); + }) ); } + private updatePokemonCaughtStatus(pfic: string, isCaught: boolean) { + this.pokemonGroups.forEach(group => { + group.forEach(pokemon => { + if (pokemon && pokemon.PFIC === pfic) { + pokemon.IsCaught = isCaught; + } + }); + }); + } + getCaughtPokemon(): Observable { - return this.http.get(`${this.apiUrl}/get_caught_pokemon`); + return this.http.get(`${this.apiUrl}/pokemon/caught`); } private caughtPokemon = new Set(); @@ -79,4 +99,16 @@ export class PokemonService { getMarkImageUrl(markName: string): string { return `/assets/images/marks/${markName}.png`; } + + initializeCaughtPokemon() { + this.getCaughtPokemon().subscribe( + pfics => { + pfics.forEach(pfic => this.updateCaughtStatus(pfic, true)); + // If pokemon are already loaded, update their status + if (this.pokemonGroups.length > 0) { + pfics.forEach(pfic => this.updatePokemonCaughtStatus(pfic, true)); + } + } + ); + } } \ No newline at end of file diff --git a/origin-dex/src/app/features/plan/plan-game/plan-game.component.ts b/origin-dex/src/app/features/plan/plan-game/plan-game.component.ts index 8e2b259..1b84538 100644 --- a/origin-dex/src/app/features/plan/plan-game/plan-game.component.ts +++ b/origin-dex/src/app/features/plan/plan-game/plan-game.component.ts @@ -1,150 +1,87 @@ import { Component, Input, Output, EventEmitter } from '@angular/core'; import { CommonModule } from '@angular/common'; -import { MatExpansionModule } from '@angular/material/expansion'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; -import { FormsModule } from '@angular/forms'; -import { PlanPokemonComponent } from '../plan-pokemon/plan-pokemon.component'; -import { GamePlan, PlanPokemon } from '../../../core/models/plan.model'; - -interface StatusUpdateEvent { - pfic?: string; - caught?: boolean; - gameId?: number; - total?: number; -} +import { MatCardModule } from '@angular/material/card'; +import { GamePlan } from '../../../core/models/plan.model'; @Component({ selector: 'app-plan-game', standalone: true, imports: [ CommonModule, - MatExpansionModule, - MatFormFieldModule, - MatInputModule, - FormsModule, - PlanPokemonComponent + MatCardModule ], template: ` - - - - {{ game.game_name }} - - - Catch: {{ getTotalCatchCount() }} - - - -
- - Search Pokémon - - -
- -
-
- -
- -
-

Completed

- -
-
-
+ + + +

{{ game.game_name }}

+

+ Pokémon to catch: {{ getTotalCatchCount() }} +

+
+
`, styles: [` - .search-container { - margin-bottom: 16px; + .game-card { + width: 200px; + cursor: pointer; + transition: transform 0.2s, box-shadow 0.2s; } - .search-field { - width: 100%; + .game-card:hover { + transform: translateY(-4px); + box-shadow: 0 4px 8px rgba(0,0,0,0.2); } - .game-sections { - display: flex; - flex-direction: column; - gap: 24px; + .game-card.selected { + border: 2px solid #4CAF50; + transform: translateY(-4px); } - .completed-section { - border-top: 2px solid #eee; - padding-top: 16px; + .game-image { + width: 100%; + height: 160px; + object-fit: cover; } - .section-title { - color: #4CAF50; - margin: 0 0 16px 0; + mat-card-content { + padding: 16px; + } + + h3 { + margin: 0; font-size: 1.2em; + color: #333; + } + + .catch-count { + margin: 8px 0 0; + color: #666; } `] }) export class PlanGameComponent { @Input() game!: GamePlan; - @Output() statusUpdate = new EventEmitter(); - - searchTerm = ''; - filteredPokemon: typeof this.game.pokemon = []; - completedPokemon: typeof this.game.pokemon = []; - - ngOnInit() { - this.filterPokemon(); - } - - filterPokemon() { - const term = this.searchTerm.toLowerCase(); - const filtered = this.game.pokemon.filter(pokemon => { - const nameMatch = pokemon.name.toLowerCase().includes(term); - const formMatch = pokemon.form_name?.toLowerCase().includes(term); - return nameMatch || formMatch; - }); - - this.completedPokemon = filtered.filter(p => p.catch_count === 0); - this.filteredPokemon = filtered.filter(p => p.catch_count > 0); - } + @Input() isSelected = false; + @Output() gameSelect = new EventEmitter(); getTotalCatchCount(): number { return this.game.pokemon.reduce((sum, pokemon) => sum + pokemon.catch_count, 0); } - onPokemonStatusUpdate(event: {pfic: string, caught: boolean}) { - this.statusUpdate.emit(event); - this.filterPokemon(); // Refresh the lists + getGameBoxArt(): string { + // You'll need to implement this to return the correct box art URL + return `/assets/images/games/${this.game.game_name.toLowerCase().replace(' ', '-')}.png`; } - updateGameTotal(change: number) { - const currentTotal = this.getTotalCatchCount(); - // Emit the new total to update the header - this.statusUpdate.emit({ - gameId: this.game.game_id, - total: currentTotal + change - }); - } - - moveToCompletedSection(pokemon: PlanPokemon) { - const index = this.filteredPokemon.findIndex(p => p.pfic === pokemon.pfic); - if (index > -1) { - const [movedPokemon] = this.filteredPokemon.splice(index, 1); - this.completedPokemon.push(movedPokemon); - } - } - - moveToActiveSection(pokemon: PlanPokemon) { - const index = this.completedPokemon.findIndex(p => p.pfic === pokemon.pfic); - if (index > -1) { - const [movedPokemon] = this.completedPokemon.splice(index, 1); - this.filteredPokemon.push(movedPokemon); - } + onSelect() { + this.gameSelect.emit(this.game); } } \ No newline at end of file diff --git a/origin-dex/src/app/features/plan/plan-pokemon/plan-pokemon.component.ts b/origin-dex/src/app/features/plan/plan-pokemon/plan-pokemon.component.ts index 8694975..7a7c1e9 100644 --- a/origin-dex/src/app/features/plan/plan-pokemon/plan-pokemon.component.ts +++ b/origin-dex/src/app/features/plan/plan-pokemon/plan-pokemon.component.ts @@ -29,7 +29,6 @@ interface PokemonStatusEvent { template: ` @@ -55,7 +54,6 @@ interface PokemonStatusEvent { src="/assets/images/pokeball_color.png" [class.grayscale]="pokemon.catch_count === 0" class="pokeball-icon" - (click)="toggleCatch($event)" [matTooltip]="'Need: ' + pokemon.catch_count" > {{ pokemon.catch_count }} @@ -169,6 +167,7 @@ interface PokemonStatusEvent { display: flex; align-items: center; gap: 8px; + min-width: 80px; } .pokeball-icon { @@ -263,16 +262,7 @@ export class PlanPokemonComponent { } isTargetCompleted(pfic: string): boolean { - // This should be connected to your caught Pokemon service/state - return false; // Placeholder - } - - toggleCatch(event: MouseEvent) { - event.stopPropagation(); - this.statusUpdate.emit({ - pfic: this.pokemon.pfic, - caught: this.pokemon.catch_count > 0 - }); + return this.pokemonService.isTargetCompleted(pfic); } calculateTotalNeeded(): number { diff --git a/origin-dex/src/app/features/plan/plan.component.ts b/origin-dex/src/app/features/plan/plan.component.ts index 41bd1bf..dcef26b 100644 --- a/origin-dex/src/app/features/plan/plan.component.ts +++ b/origin-dex/src/app/features/plan/plan.component.ts @@ -1,50 +1,100 @@ import { Component, OnInit } from '@angular/core'; import { CommonModule } from '@angular/common'; -import { MatExpansionModule } from '@angular/material/expansion'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; +import { MatCardModule } from '@angular/material/card'; import { FormsModule } from '@angular/forms'; import { PlanGameComponent } from './plan-game/plan-game.component'; import { PlanService } from '../../core/services/plan.service'; import { GamePlan } from '../../core/models/plan.model'; +import { PlanPokemonComponent } from "./plan-pokemon/plan-pokemon.component"; @Component({ selector: 'app-plan', standalone: true, imports: [ CommonModule, - MatExpansionModule, - MatFormFieldModule, - MatInputModule, + MatCardModule, FormsModule, - PlanGameComponent - ], + PlanGameComponent, + PlanPokemonComponent +], template: `
-
- +
+
+
+ +
+
+
+ +
+

{{ selectedGame.game_name }} - Pokémon to Catch

+
+ +
`, styles: [` .plan-container { - padding: 20px; - max-width: 1200px; - margin: 0 auto; + display: flex; + flex-direction: column; + height: calc(100vh - 64px); /* Adjust based on your header height */ + overflow: hidden; + } + + .games-section { + padding: 20px 20px 0 20px; + } + + .games-scroll { + width: 100%; + overflow-x: auto; + padding: 8px 0; } - .games-accordion { + .games-list { display: flex; - flex-direction: column; gap: 16px; + padding: 0 8px; + min-width: min-content; + } + + .pokemon-section { + padding: 0 20px; + flex: 1; + min-height: 0; /* Important for Firefox */ + display: flex; + flex-direction: column; + } + + .pokemon-section h2 { + margin: 16px 0; + color: #333; + } + + .pokemon-list { + flex: 1; + overflow-y: auto; + padding: 16px; + background: #f5f5f5; + border-radius: 8px; + margin-bottom: 20px; } `] }) export class PlanComponent implements OnInit { gamePlans: GamePlan[] = []; + selectedGame: GamePlan | null = null; constructor(private planService: PlanService) {} @@ -54,12 +104,20 @@ export class PlanComponent implements OnInit { private loadPlan() { this.planService.getPlan().subscribe( - plan => this.gamePlans = plan + plan => { + this.gamePlans = plan; + if (!this.selectedGame && plan.length > 0) { + this.selectedGame = plan[0]; + } + } ); } + selectGame(game: GamePlan) { + this.selectedGame = game; + } + onPokemonStatusUpdate(event: { pfic: string, caught: boolean }) { - // Handle status updates that might affect other games' plans - this.loadPlan(); // Reload the full plan to ensure consistency + this.loadPlan(); } } \ No newline at end of file diff --git a/origin-dex/src/app/features/pokemon/pokemon-carousel/pokemon-carousel.component.ts b/origin-dex/src/app/features/pokemon/pokemon-carousel/pokemon-carousel.component.ts index a52a391..d8bd8fc 100644 --- a/origin-dex/src/app/features/pokemon/pokemon-carousel/pokemon-carousel.component.ts +++ b/origin-dex/src/app/features/pokemon/pokemon-carousel/pokemon-carousel.component.ts @@ -223,12 +223,8 @@ export class PokemonCarouselComponent implements OnInit { onPokemonCaught(pfic: string) { this.pokemonService.toggleCatch(pfic).subscribe( - response => { - if (response.status === 'caught') { - this.caughtPokemon.add(pfic); - } else { - this.caughtPokemon.delete(pfic); - } + () => { + // The service handles the update now this.cdr.markForCheck(); } ); diff --git a/origin-dex/src/app/features/pokemon/pokemon-cell/pokemon-cell.component.ts b/origin-dex/src/app/features/pokemon/pokemon-cell/pokemon-cell.component.ts index 78cb854..20e485f 100644 --- a/origin-dex/src/app/features/pokemon/pokemon-cell/pokemon-cell.component.ts +++ b/origin-dex/src/app/features/pokemon/pokemon-cell/pokemon-cell.component.ts @@ -167,7 +167,6 @@ export class PokemonCellComponent { event.stopPropagation(); if (this.pokemon) { this.caught.emit(this.pokemon.PFIC); - this.pokemon.IsCaught = !this.pokemon.IsCaught; } } } \ No newline at end of file diff --git a/origin-dex/src/assets/images/games/alphasapphire.png b/origin-dex/src/assets/images/games/alphasapphire.png new file mode 100644 index 0000000..a2f36d0 Binary files /dev/null and b/origin-dex/src/assets/images/games/alphasapphire.png differ diff --git a/origin-dex/src/assets/images/games/black-2.png b/origin-dex/src/assets/images/games/black-2.png new file mode 100644 index 0000000..474929c Binary files /dev/null and b/origin-dex/src/assets/images/games/black-2.png differ diff --git a/origin-dex/src/assets/images/games/black.png b/origin-dex/src/assets/images/games/black.png new file mode 100644 index 0000000..697ba75 Binary files /dev/null and b/origin-dex/src/assets/images/games/black.png differ diff --git a/origin-dex/src/assets/images/games/blue.png b/origin-dex/src/assets/images/games/blue.png new file mode 100644 index 0000000..4bc8beb Binary files /dev/null and b/origin-dex/src/assets/images/games/blue.png differ diff --git a/origin-dex/src/assets/images/games/brilliantdiamond.png b/origin-dex/src/assets/images/games/brilliantdiamond.png new file mode 100644 index 0000000..3d09b60 Binary files /dev/null and b/origin-dex/src/assets/images/games/brilliantdiamond.png differ diff --git a/origin-dex/src/assets/images/games/crystal.png b/origin-dex/src/assets/images/games/crystal.png new file mode 100644 index 0000000..c9214f6 Binary files /dev/null and b/origin-dex/src/assets/images/games/crystal.png differ diff --git a/origin-dex/src/assets/images/games/diamond.png b/origin-dex/src/assets/images/games/diamond.png new file mode 100644 index 0000000..c300fa4 Binary files /dev/null and b/origin-dex/src/assets/images/games/diamond.png differ diff --git a/origin-dex/src/assets/images/games/emerald.png b/origin-dex/src/assets/images/games/emerald.png new file mode 100644 index 0000000..3cfb701 Binary files /dev/null and b/origin-dex/src/assets/images/games/emerald.png differ diff --git a/origin-dex/src/assets/images/games/epxansionpass2.png b/origin-dex/src/assets/images/games/epxansionpass2.png new file mode 100644 index 0000000..a9144f6 Binary files /dev/null and b/origin-dex/src/assets/images/games/epxansionpass2.png differ diff --git a/origin-dex/src/assets/images/games/expansion-pass.png b/origin-dex/src/assets/images/games/expansion-pass.png new file mode 100644 index 0000000..e6101d3 Binary files /dev/null and b/origin-dex/src/assets/images/games/expansion-pass.png differ diff --git a/origin-dex/src/assets/images/games/firered.png b/origin-dex/src/assets/images/games/firered.png new file mode 100644 index 0000000..2444af7 Binary files /dev/null and b/origin-dex/src/assets/images/games/firered.png differ diff --git a/origin-dex/src/assets/images/games/gold.png b/origin-dex/src/assets/images/games/gold.png new file mode 100644 index 0000000..9ed6166 Binary files /dev/null and b/origin-dex/src/assets/images/games/gold.png differ diff --git a/origin-dex/src/assets/images/games/heartgold.png b/origin-dex/src/assets/images/games/heartgold.png new file mode 100644 index 0000000..1beb848 Binary files /dev/null and b/origin-dex/src/assets/images/games/heartgold.png differ diff --git a/origin-dex/src/assets/images/games/leafgreen.png b/origin-dex/src/assets/images/games/leafgreen.png new file mode 100644 index 0000000..0580388 Binary files /dev/null and b/origin-dex/src/assets/images/games/leafgreen.png differ diff --git a/origin-dex/src/assets/images/games/legends-arceus.png b/origin-dex/src/assets/images/games/legends-arceus.png new file mode 100644 index 0000000..19fdaf0 Binary files /dev/null and b/origin-dex/src/assets/images/games/legends-arceus.png differ diff --git a/origin-dex/src/assets/images/games/letsgoeevee.png b/origin-dex/src/assets/images/games/letsgoeevee.png new file mode 100644 index 0000000..3dc76bc Binary files /dev/null and b/origin-dex/src/assets/images/games/letsgoeevee.png differ diff --git a/origin-dex/src/assets/images/games/letsgopikachu.png b/origin-dex/src/assets/images/games/letsgopikachu.png new file mode 100644 index 0000000..b785e0e Binary files /dev/null and b/origin-dex/src/assets/images/games/letsgopikachu.png differ diff --git a/origin-dex/src/assets/images/games/moon.png b/origin-dex/src/assets/images/games/moon.png new file mode 100644 index 0000000..75b4167 Binary files /dev/null and b/origin-dex/src/assets/images/games/moon.png differ diff --git a/origin-dex/src/assets/images/games/omegaruby.png b/origin-dex/src/assets/images/games/omegaruby.png new file mode 100644 index 0000000..74ac00c Binary files /dev/null and b/origin-dex/src/assets/images/games/omegaruby.png differ diff --git a/origin-dex/src/assets/images/games/pearl.png b/origin-dex/src/assets/images/games/pearl.png new file mode 100644 index 0000000..899eedd Binary files /dev/null and b/origin-dex/src/assets/images/games/pearl.png differ diff --git a/origin-dex/src/assets/images/games/platinum.png b/origin-dex/src/assets/images/games/platinum.png new file mode 100644 index 0000000..88a72dd Binary files /dev/null and b/origin-dex/src/assets/images/games/platinum.png differ diff --git a/origin-dex/src/assets/images/games/pokemon_the_indigo_disk_dlc_dock_icon_by_lexiloo826_dgkjxy3-pre.png b/origin-dex/src/assets/images/games/pokemon_the_indigo_disk_dlc_dock_icon_by_lexiloo826_dgkjxy3-pre.png new file mode 100644 index 0000000..2229c93 Binary files /dev/null and b/origin-dex/src/assets/images/games/pokemon_the_indigo_disk_dlc_dock_icon_by_lexiloo826_dgkjxy3-pre.png differ diff --git a/origin-dex/src/assets/images/games/red.png b/origin-dex/src/assets/images/games/red.png new file mode 100644 index 0000000..1da7b25 Binary files /dev/null and b/origin-dex/src/assets/images/games/red.png differ diff --git a/origin-dex/src/assets/images/games/ruby.png b/origin-dex/src/assets/images/games/ruby.png new file mode 100644 index 0000000..bd17e81 Binary files /dev/null and b/origin-dex/src/assets/images/games/ruby.png differ diff --git a/origin-dex/src/assets/images/games/sapphire.png b/origin-dex/src/assets/images/games/sapphire.png new file mode 100644 index 0000000..557b094 Binary files /dev/null and b/origin-dex/src/assets/images/games/sapphire.png differ diff --git a/origin-dex/src/assets/images/games/scarlet.png b/origin-dex/src/assets/images/games/scarlet.png new file mode 100644 index 0000000..d763169 Binary files /dev/null and b/origin-dex/src/assets/images/games/scarlet.png differ diff --git a/origin-dex/src/assets/images/games/shield.png b/origin-dex/src/assets/images/games/shield.png new file mode 100644 index 0000000..ca8e9f0 Binary files /dev/null and b/origin-dex/src/assets/images/games/shield.png differ diff --git a/origin-dex/src/assets/images/games/shiiningpearl.png b/origin-dex/src/assets/images/games/shiiningpearl.png new file mode 100644 index 0000000..40d0f9f Binary files /dev/null and b/origin-dex/src/assets/images/games/shiiningpearl.png differ diff --git a/origin-dex/src/assets/images/games/silver.png b/origin-dex/src/assets/images/games/silver.png new file mode 100644 index 0000000..e49943a Binary files /dev/null and b/origin-dex/src/assets/images/games/silver.png differ diff --git a/origin-dex/src/assets/images/games/soulsilver.png b/origin-dex/src/assets/images/games/soulsilver.png new file mode 100644 index 0000000..455c76f Binary files /dev/null and b/origin-dex/src/assets/images/games/soulsilver.png differ diff --git a/origin-dex/src/assets/images/games/sun.png b/origin-dex/src/assets/images/games/sun.png new file mode 100644 index 0000000..77931ed Binary files /dev/null and b/origin-dex/src/assets/images/games/sun.png differ diff --git a/origin-dex/src/assets/images/games/sword.png b/origin-dex/src/assets/images/games/sword.png new file mode 100644 index 0000000..421f956 Binary files /dev/null and b/origin-dex/src/assets/images/games/sword.png differ diff --git a/origin-dex/src/assets/images/games/the-hidden treasure of area zero.png b/origin-dex/src/assets/images/games/the-hidden treasure of area zero.png new file mode 100644 index 0000000..b38f87a Binary files /dev/null and b/origin-dex/src/assets/images/games/the-hidden treasure of area zero.png differ diff --git a/origin-dex/src/assets/images/games/ultra-moon.png b/origin-dex/src/assets/images/games/ultra-moon.png new file mode 100644 index 0000000..b0ed1e5 Binary files /dev/null and b/origin-dex/src/assets/images/games/ultra-moon.png differ diff --git a/origin-dex/src/assets/images/games/ultra-sun.png b/origin-dex/src/assets/images/games/ultra-sun.png new file mode 100644 index 0000000..2e4fdfd Binary files /dev/null and b/origin-dex/src/assets/images/games/ultra-sun.png differ diff --git a/origin-dex/src/assets/images/games/violet.png b/origin-dex/src/assets/images/games/violet.png new file mode 100644 index 0000000..fb3e9c8 Binary files /dev/null and b/origin-dex/src/assets/images/games/violet.png differ diff --git a/origin-dex/src/assets/images/games/white-2.png b/origin-dex/src/assets/images/games/white-2.png new file mode 100644 index 0000000..8d981fe Binary files /dev/null and b/origin-dex/src/assets/images/games/white-2.png differ diff --git a/origin-dex/src/assets/images/games/white.png b/origin-dex/src/assets/images/games/white.png new file mode 100644 index 0000000..190a00c Binary files /dev/null and b/origin-dex/src/assets/images/games/white.png differ diff --git a/origin-dex/src/assets/images/games/x.png b/origin-dex/src/assets/images/games/x.png new file mode 100644 index 0000000..50abb3b Binary files /dev/null and b/origin-dex/src/assets/images/games/x.png differ diff --git a/origin-dex/src/assets/images/games/y.png b/origin-dex/src/assets/images/games/y.png new file mode 100644 index 0000000..96fa8a3 Binary files /dev/null and b/origin-dex/src/assets/images/games/y.png differ diff --git a/origin-dex/src/assets/images/games/yellow.png b/origin-dex/src/assets/images/games/yellow.png new file mode 100644 index 0000000..d4fa1dc Binary files /dev/null and b/origin-dex/src/assets/images/games/yellow.png differ