Skip to content

Commit

Permalink
feat: add ability to buy resin with primogems (#2104)
Browse files Browse the repository at this point in the history
* feat: add ability to buy resin with primogems

* ResinManager#buy returns RetCode value
  • Loading branch information
hamusuke0323 authored Apr 10, 2023
1 parent 7254f55 commit caf9521
Show file tree
Hide file tree
Showing 9 changed files with 1,251 additions and 104 deletions.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 27 additions & 3 deletions src/main/java/emu/grasscutter/game/managers/ResinManager.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,22 @@
package emu.grasscutter.game.managers;

import static emu.grasscutter.config.Configuration.GAME_OPTIONS;

import emu.grasscutter.game.inventory.GameItem;
import emu.grasscutter.game.player.BasePlayerManager;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.game.props.ActionReason;
import emu.grasscutter.game.props.PlayerProperty;
import emu.grasscutter.game.props.WatcherTriggerType;
import emu.grasscutter.server.packet.send.PacketPlayerPropNotify;
import emu.grasscutter.net.proto.RetcodeOuterClass;
import emu.grasscutter.server.packet.send.PacketItemAddHintNotify;
import emu.grasscutter.server.packet.send.PacketResinChangeNotify;
import emu.grasscutter.utils.Utils;

import static emu.grasscutter.config.Configuration.GAME_OPTIONS;

public class ResinManager extends BasePlayerManager {
public static final int MAX_RESIN_BUYING_COUNT = 6;
public static final int AMOUNT_TO_ADD = 60;
public static final int[] HCOIN_NUM_TO_BUY_RESIN = new int[]{50, 100, 100, 150, 200, 200};

public ResinManager(Player player) {
super(player);
Expand Down Expand Up @@ -146,4 +152,22 @@ public synchronized void onPlayerLogin() {
// Send initial notifications on logon.
this.player.sendPacket(new PacketResinChangeNotify(this.player));
}

public int buy() {
if (this.player.getResinBuyCount() >= MAX_RESIN_BUYING_COUNT) {
return RetcodeOuterClass.Retcode.RET_RESIN_BOUGHT_COUNT_EXCEEDED_VALUE;
}

var res = this.player.getInventory().payItem(201, HCOIN_NUM_TO_BUY_RESIN[this.player.getResinBuyCount()]);
if (!res) {
return RetcodeOuterClass.Retcode.RET_HCOIN_NOT_ENOUGH_VALUE;
}

this.player.setResinBuyCount(this.player.getResinBuyCount() + 1);
this.player.setProperty(PlayerProperty.PROP_PLAYER_WAIT_SUB_HCOIN, 0);
this.addResin(AMOUNT_TO_ADD);
this.player.sendPacket(new PacketItemAddHintNotify(new GameItem(106, AMOUNT_TO_ADD), ActionReason.BuyResin));

return 0;
}
}
Loading

0 comments on commit caf9521

Please sign in to comment.