diff --git a/authorization/auth.controller.js b/authorization/auth.controller.js index fa8785b..f51f7f9 100644 --- a/authorization/auth.controller.js +++ b/authorization/auth.controller.js @@ -58,6 +58,7 @@ exports.SteamLogin = async (req, res) => { user.validation_level = 0; user.coins = config.start_coins; + user.cardfragments = config.start_cardfragments; user.elo = config.start_elo; user.xp = 0; diff --git a/config.js b/config.js index 35e3111..f9c461d 100644 --- a/config.js +++ b/config.js @@ -60,6 +60,8 @@ module.exports = { //New Users start_coins: 5000, + start_cardfragments: 0, + start_crystals: 0, start_elo: 1000, //Match Rewards diff --git a/rewards/rewards.controller.js b/rewards/rewards.controller.js index 46165d2..21095e4 100644 --- a/rewards/rewards.controller.js +++ b/rewards/rewards.controller.js @@ -9,6 +9,8 @@ exports.AddReward = async(req, res) => var repeat = req.body.repeat; var xp = req.body.xp; var coins = req.body.coins; + var cardfragments = req.body.cardfragments; + var crystals = req.body.crystals; var cards = req.body.cards; var packs = req.body.packs; var decks = req.body.decks; @@ -25,6 +27,10 @@ exports.AddReward = async(req, res) => return res.status(400).send({error: "Invalid parameters"}); if(coins && !Number.isInteger(coins)) return res.status(400).send({error: "Invalid parameters"}); + if(cardfragments && !Number.isInteger(cardfragments)) + return res.status(400).send({error: "Invalid parameters"}); + if(crystals && !Number.isInteger(crystals)) + return res.status(400).send({error: "Invalid parameters"}); if(cards && !Array.isArray(cards)) return res.status(400).send({error: "Invalid parameters"}); if(packs && !Array.isArray(packs)) @@ -42,6 +48,8 @@ exports.AddReward = async(req, res) => repeat: repeat || false, xp: xp || 0, coins: coins || 0, + cardfragments: cardfragments || 0, + crystals: crystals || 0, cards: cards || [], packs: packs || [], decks: decks || [], diff --git a/rewards/rewards.model.js b/rewards/rewards.model.js index d158723..ed9f6b2 100644 --- a/rewards/rewards.model.js +++ b/rewards/rewards.model.js @@ -9,6 +9,8 @@ const rewardSchema = new Schema({ xp: { type: Number, default: 0 }, coins: { type: Number, default: 0 }, + cardfragments: { type: Number, default: 0 }, + crystals: { type: Number, default: 0 }, cards: [{type: String}], packs: [{type: String}], decks: [{type: String}], diff --git a/users/users.cards.controller.js b/users/users.cards.controller.js index de21df9..d36d11d 100644 --- a/users/users.cards.controller.js +++ b/users/users.cards.controller.js @@ -86,6 +86,7 @@ exports.DeleteDeck = async(req, res) => { return res.status(200).send(upUser.decks); }; +// 购买卡片 exports.BuyCard = async (req, res) => { const userId = req.jwt.userId; @@ -117,17 +118,17 @@ exports.BuyCard = async (req, res) => { var variant = await VariantModel.get(variantId); var factor = variant != null ? variant.cost_factor : 1; var cost = quantity * factor * card.cost; - if(user.coins < cost) - return res.status(400).send({ error: "Not enough coins" }); + if(user.cardfragments < cost) + return res.status(400).send({ error: "Not enough cardfragments" }); - user.coins -= cost; + user.cardfragments -= cost; var valid = await UserTool.addCards(user, [{tid: cardId, variant: variantId, quantity: quantity}]); if (!valid) return res.status(500).send({ error: "Error when adding cards" }); //Update the user array - var updatedUser = await UserModel.save(user, ["coins", "cards"]); + var updatedUser = await UserModel.save(user, ["cardfragments", "cards"]); if (!updatedUser) return res.status(500).send({ error: "Error updating user: " + userId }); // Activity Log ------------- @@ -175,14 +176,14 @@ exports.SellCard = async (req, res) => { var factor = variant != null ? variant.cost_factor : 1; var cost = quantity * Math.round(card.cost * factor * config.sell_ratio); - user.coins += cost; + user.cardfragments += cost; var valid = await UserTool.addCards(user, [{tid: cardId, variant: variantId, quantity: -quantity}]); if (!valid) return res.status(500).send({ error: "Error when removing cards" }); //Update the user array - var updatedUser = await UserModel.save(user, ["coins", "cards"]); + var updatedUser = await UserModel.save(user, ["cardfragments", "cards"]); if (!updatedUser) return res.status(500).send({ error: "Error updating user: " + userId }); // Activity Log ------------- @@ -224,7 +225,7 @@ exports.SellDuplicateCards = async (req, res) => { return res.status(404).send({ error: "Cant find cards" }); var cards_to_sell = []; - var coins = 0; + var cardfragments = 0; for(var i=0; i { var factor = variant != null ? variant.cost_factor : 1; var cost = quantity * Math.round(card_data.cost * factor * config.sell_ratio); cards_to_sell.push(sell); - coins += cost; + cardfragments += cost; } } } @@ -250,14 +251,14 @@ exports.SellDuplicateCards = async (req, res) => { if(cards_to_sell.length == 0) return res.status(200).send(); - user.coins += coins; + user.cardfragments += cardfragments; var valid = await UserTool.addCards(user, cards_to_sell); if (!valid) return res.status(500).send({ error: "Error when removing cards" }); //Update the user array - var updatedUser = await UserModel.save(user, ["coins", "cards"]); + var updatedUser = await UserModel.save(user, ["cardfragments", "cards"]); if (!updatedUser) return res.status(500).send({ error: "Error updating user: " + userId }); // Activity Log ------------- @@ -269,6 +270,7 @@ exports.SellDuplicateCards = async (req, res) => { return res.status(200).send(); }; +// 购买卡包 TODO 金币&钻石 exports.BuyPack = async (req, res) => { const userId = req.jwt.userId; diff --git a/users/users.controller.js b/users/users.controller.js index f4e85e5..bff93b0 100644 --- a/users/users.controller.js +++ b/users/users.controller.js @@ -60,6 +60,8 @@ exports.RegisterUser = async (req, res, next) => { user.validation_level = validation; user.coins = config.start_coins; + user.cardfragments = config.start_cardfragments; + user.crystals = config.start_crystals; user.elo = config.start_elo; user.xp = 0; @@ -470,7 +472,7 @@ exports.GainReward = async(req, res) => return res.status(500).send({error: "Failed adding reward: " + rewardId + " for " + userId}); //Update the user - var updatedUser = await UserModel.save(user, ["rewards", "xp", "coins", "cards", "decks", "avatars", "cardbacks"]); + var updatedUser = await UserModel.save(user, ["rewards", "xp", "coins", "cardfragments", "cards", "decks", "avatars", "cardbacks"]); if (!updatedUser) return res.status(500).send({ error: "Error updating user: " + userId }); //Log activity diff --git a/users/users.model.js b/users/users.model.js index 2089e2f..4cd049d 100644 --- a/users/users.model.js +++ b/users/users.model.js @@ -21,6 +21,8 @@ const userSchema = new Schema({ avatar: {type: String, default: ""}, cardback: {type: String, default: ""}, coins: {type: Number, default: 0}, + cardfragments: {type: Number, default: 0}, + crystals: {type: Number, default: 0}, xp: {type: Number, default: 0}, elo: {type: Number, default: 1000}, diff --git a/users/users.tool.js b/users/users.tool.js index 6e7057c..336cb30 100644 --- a/users/users.tool.js +++ b/users/users.tool.js @@ -33,6 +33,8 @@ UserTool.GainUserReward = async(user, reward) => { //Add reward to user user.coins += reward.coins || 0; + user.cardfragments += reward.cardfragments || 0; + user.crystals += reward.crystals || 0; user.xp += reward.xp || 0; UserTool.addAvatars(user, reward.avatars);