CreatePrayResult在AddMemberGoods后执行导致十连获得新角色时绘制属性icon出现问题
Natsukage opened this issue · 2 comments
问题具体现象:
当第一次通过十连获得某个角色时,DrawHelpers在绘制角色时不会绘制属性图标。
问题发生于DrawHelpers的drawIcon
这一步,但是问题的发生原因在此之前。
只有十连会产生此问题,因为10连的逻辑中,如果是重复角色,则要绘制转化素材,而不会绘制元素属性图标。单抽时无论如何都会绘制元素属性图标,所以不存在此问题。
drawIcon
会根据传递的PrayRecord中的物品持有数量判断自己是不是new,这里的逻辑是“如果<种类>为<角色>并且<数量>为0”
但是在前面PrayController中获取到的物品数量中,GetOwnedCount
返回的是ownInDatabase + ownInRecord
两者的和。
比如我原本有0只刻晴,抽到第一只刻晴的时候,GetOwnedCount
返回的值将会是1而不是0。
这就导致drawIcon判断条件中的prayRecord.OwnedCount == 0
无论如何都不会触发。
作为对比,下面绘制转化素材时判断的逻辑为prayRecord.OwnedCount > 1 && prayRecord.OwnedCount <= 7
。所以可以正常的区分new与非new。
但是单纯将prayRecord.OwnedCount == 0改为prayRecord.OwnedCount <= 1并不能避免极端情况。例如我首抽1发里一下出了3只刻晴,那么GetOwnedCount对3只刻晴的记录都会直接返回3,导致3只刻晴都不会出现属性图标。
我是在v1.0.0上测试的,但是考虑到这部分抽卡逻辑是相同的,main分支上应该也会有同样的问题。
啊,确实,看了一下区别是出在BasePrayService.cs的GetOwnedCount
中。
main分支在ownInRecord这里比起1.0.0多了一个m != checkRecord的判断,也就是ownInRecord不会统计自身。那么这里获得的数量确实是没错的。1.0.0中没有这句判断,所以才有了问题。
那么main分支应该确实是不受影响的233
感谢回复!