UNPKG

@gameroom/cli

Version:

A command line tool for Gameroom

191 lines (182 loc) 5.63 kB
const nearestDime = require('./nearestDime') module.exports = (product) => { const baseline = parseInt(product.properties.price_baseline || 0) if (!baseline) return { game_plus_amount: 0, game_only_amount: 0, buy_in_game_plus_amount: 0, buy_in_game_only_amount: 0 } // get ratios const game_plus_ratio = Math.abs(parseFloat(product.properties.price_game_plus_ratio)) const game_only_ratio = Math.abs(parseFloat(product.properties.price_game_only_ratio)) const buy_in_game_plus_ratio = Math.abs(parseFloat(product.properties.price_buy_in_game_plus_ratio)) const buy_in_game_only_ratio = Math.abs(parseFloat(product.properties.price_buy_in_game_only_ratio)) const { tags } = product // other prices/operations depend on game_plus_amount value, so calculate it first let game_plus_amount = nearestDime(baseline * game_plus_ratio) let floor, sub_floor, multiplier // PS5 + Xbox Series X if (tags.includes('PS5') || tags.includes('Xbox Series X')) { floor = baseline ? 100 : 0 sub_floor = baseline ? floor * 0.60 : 0 multiplier = game_plus_amount } // PS4 + Xbox One else if (tags.includes('PS4') || tags.includes('Xbox One')) { // skip if gamestop price is 0 floor = baseline ? 100 : 0 sub_floor = baseline ? floor * 0.60 : 0 multiplier = game_plus_amount } // Switch else if (tags.includes('Switch')) { // skip if gamestop price is 0 floor = baseline ? 500 : 0 sub_floor = baseline ? floor * 0.90 : 0 multiplier = game_plus_amount } // PS3 else if (tags.includes('PS3')) { floor = 100 sub_floor = floor * 0.60 multiplier = game_plus_amount } // Xbox 360 else if (tags.includes('Xbox 360')) { floor = 100 sub_floor = floor * 0.60 multiplier = game_plus_amount } // Wii else if (tags.includes('Wii')) { floor = 100 sub_floor = floor * 0.60 multiplier = game_plus_amount } // Wii U else if (tags.includes('Wii U')) { price_floor = 100 sub_floor = floor * 0.60 multiplier = game_plus_amount } // PS2 + Xbox else if (tags.includes('PS2') || tags.includes('Xbox')) { floor = 100 sub_floor = floor * 0.60 multiplier = game_plus_amount } // Gamecube else if (tags.includes('Gamecube')) { floor = 100 sub_floor = floor * 0.60 multiplier = game_plus_amount } // PS1 else if (tags.includes('PS1')) { floor = 100 sub_floor = floor * 0.60 multiplier = game_plus_amount } // Dreamcast else if (tags.includes('Dreamcast')) { floor = 100 sub_floor = floor * 0.60 multiplier = game_plus_amount } // Saturn else if (tags.includes('Saturn')) { floor = 100 sub_floor = floor * 0.60 multiplier = game_plus_amount } // Sega CD else if (tags.includes('Sega CD')) { floor = 100 sub_floor = floor * 0.60 multiplier = game_plus_amount } // CDi + 3DO else if (tags.includes('CD-i') || tags.includes('3DO')) { floor = 100 sub_floor = floor * 0.60 multiplier = game_plus_amount } // NES + SNES else if (tags.includes('NES') || tags.includes('SNES')) { floor = 100 sub_floor = floor * 0.60 multiplier = baseline } // N64 else if (tags.includes('N64')) { floor = 100 sub_floor = floor * 0.60 multiplier = baseline } // Genesis + 32X + Master System else if (tags.includes('Genesis') || tags.includes('Master System')) { floor = 100 sub_floor = floor * 0.60 multiplier = baseline } // 32X (disc-based) else if (tags.includes('32X') && tags.includes('Sega CD')) { floor = 100 sub_floor = floor * 0.60 multiplier = game_plus_amount } // 32X (cartridge-based) else if (tags.includes('32X') && !tags.includes('Sega CD')) { floor = 100 sub_floor = floor * 0.60 multiplier = baseline } // Atari + Vision(s) else if (tags.includes('Atari') || tags.includes('Intellivision') || tags.includes('Colecovision')) { floor = 100 sub_floor = floor * 0.60 multiplier = baseline } // GB + GBC else if (tags.includes('Gameboy') || tags.includes('Gameboy Color')) { floor = 100 sub_floor = floor * 0.60 multiplier = baseline } // GBA else if (tags.includes('Gameboy Advance')) { floor = 100 sub_floor = floor * 0.60 multiplier = baseline } // 3DS + DS else if (tags.includes('3DS') || tags.includes('DS')) { floor = 100 sub_floor = floor * 0.60 multiplier = game_plus_amount } // PSP else if (tags.includes('PSP')) { floor = 100 sub_floor = floor * 0.60 multiplier = game_plus_amount } // Vita else if (tags.includes('Vita')) { floor = 100 sub_floor = floor * 0.60 multiplier = game_plus_amount } // Game Gear else if (tags.includes('Game Gear')) { floor = 100 sub_floor = floor * 0.60 multiplier = baseline } sub_floor = nearestDime(sub_floor) // continue calculating sell values if (game_plus_ratio && game_plus_amount < floor) game_plus_amount = floor if (game_plus_amount > multiplier) multiplier = game_plus_amount //reset the value of 'multiplier' in the case where the game_plus_amount is set to the price floor let game_only_amount = nearestDime(multiplier * game_only_ratio) if (game_only_ratio && game_only_amount < sub_floor) game_only_amount = sub_floor // buy values const buy_in_game_plus_amount = -nearestDime(game_plus_amount * buy_in_game_plus_ratio) const buy_in_game_only_amount = -nearestDime(game_only_amount * buy_in_game_only_ratio) return { game_plus_amount, game_only_amount, buy_in_game_plus_amount, buy_in_game_only_amount } }