背包规范
用于兼容对背包的修改
为满足游戏对于背包的限制、改造,请勿直接修改玩家容器。
该插件针对该规范,提供了一个封装类InvHelper,以快捷开发。使用方法如下。
//创建库存助手
InvHelper invHelper = InvHelper.of(thePlayer);
//1.尝试添加物品
//
//该方法具有原子性。即一项无法添加,则全部都不会被添加。
//若返回的reulst为true,则添加成功,否则为无法添加(背包已满)
boolean addResult= invHelper.tryAddItemsToInv(arrayOfItems);
//2.尝试拿取物品
//
//返回的takeResultMap<拿取槽位,拿取数量>为计算结果,
//若该结果为NULL,则意味着无法拿取,需进行物品确失处理。否则只需按照计算结果拿取即可。
HashMap<Integer, Integer> takeResultMap= invHelper.calculateTakeItems(arrayOfItems);
//同样,提供了对拿取结果的应用。调用后则将变更应用到玩家背包。
invHelper.confirmTakeItemResult(takeResultMap);请确保在与玩家背包交互过程中,进行该规范,否则将会出现影响效果的意外情况。
InvHelper封装类可能部分方法命名不规范,或许会进行重命名,请时刻准备对接。
一,Delegate替代
为了保证对于背包修改的兼容性,请勿对玩家背包直接操作。对此,InvHelper可以作为PlayerInventory的Delegate类型,直接当成PlayerInventory使用即可。
二,其他规范
一,获得背包内容
二,获得跳过的槽位
若InvHelper类局限过大,可以自行开发衍生功能,但要注意原始数据必须来自规范后的类方法,否则后期变动可能会造成影响。其中,跳过槽位即是一个原始数据。
Last updated
Was this helpful?