mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-03-13 23:47:23 +08:00
160 lines
3.7 KiB
Java
160 lines
3.7 KiB
Java
package emu.grasscutter.game.gacha;
|
|
|
|
import emu.grasscutter.net.proto.GachaInfoOuterClass.GachaInfo;
|
|
import emu.grasscutter.net.proto.GachaUpInfoOuterClass.GachaUpInfo;
|
|
|
|
import static emu.grasscutter.Configuration.*;
|
|
|
|
public class GachaBanner {
|
|
private int gachaType;
|
|
private int scheduleId;
|
|
private String prefabPath;
|
|
private String previewPrefabPath;
|
|
private String titlePath;
|
|
private int costItem;
|
|
private int beginTime;
|
|
private int endTime;
|
|
private int sortId;
|
|
private int[] rateUpItems1;
|
|
private int[] rateUpItems2;
|
|
private int baseYellowWeight = 60; // Max 10000
|
|
private int basePurpleWeight = 510; // Max 10000
|
|
private int eventChance = 50; // Chance to win a featured event item
|
|
private int softPity = 75;
|
|
private int hardPity = 90;
|
|
private BannerType bannerType = BannerType.STANDARD;
|
|
|
|
public int getGachaType() {
|
|
return gachaType;
|
|
}
|
|
|
|
public BannerType getBannerType() {
|
|
return bannerType;
|
|
}
|
|
|
|
public int getScheduleId() {
|
|
return scheduleId;
|
|
}
|
|
|
|
public String getPrefabPath() {
|
|
return prefabPath;
|
|
}
|
|
|
|
public String getPreviewPrefabPath() {
|
|
return previewPrefabPath;
|
|
}
|
|
|
|
public String getTitlePath() {
|
|
return titlePath;
|
|
}
|
|
|
|
public int getCostItem() {
|
|
return costItem;
|
|
}
|
|
|
|
public int getBeginTime() {
|
|
return beginTime;
|
|
}
|
|
|
|
public int getEndTime() {
|
|
return endTime;
|
|
}
|
|
|
|
public int getSortId() {
|
|
return sortId;
|
|
}
|
|
|
|
public int getBaseYellowWeight() {
|
|
return baseYellowWeight;
|
|
}
|
|
|
|
public int getBasePurpleWeight() {
|
|
return basePurpleWeight;
|
|
}
|
|
|
|
public int[] getRateUpItems1() {
|
|
return rateUpItems1;
|
|
}
|
|
|
|
public int[] getRateUpItems2() {
|
|
return rateUpItems2;
|
|
}
|
|
|
|
public int getSoftPity() {
|
|
return softPity - 1;
|
|
}
|
|
|
|
public int getHardPity() {
|
|
return hardPity - 1;
|
|
}
|
|
|
|
public int getEventChance() {
|
|
return eventChance;
|
|
}
|
|
|
|
@Deprecated
|
|
public GachaInfo toProto() {
|
|
return toProto("");
|
|
}
|
|
|
|
public GachaInfo toProto(String sessionKey) {
|
|
String record = "http" + (DISPATCH_INFO.encryption.useInRouting ? "s" : "") + "://"
|
|
+ lr(DISPATCH_INFO.accessAddress, DISPATCH_INFO.bindAddress) + ":"
|
|
+ lr(DISPATCH_INFO.accessPort, DISPATCH_INFO.bindPort)
|
|
+ "/gacha?s=" + sessionKey + "&gachaType=" + gachaType;
|
|
// Grasscutter.getLogger().info("record = " + record);
|
|
GachaInfo.Builder info = GachaInfo.newBuilder()
|
|
.setGachaType(this.getGachaType())
|
|
.setScheduleId(this.getScheduleId())
|
|
.setBeginTime(this.getBeginTime())
|
|
.setEndTime(this.getEndTime())
|
|
.setCostItemId(this.getCostItem())
|
|
.setCostItemNum(1)
|
|
.setGachaPrefabPath(this.getPrefabPath())
|
|
.setGachaPreviewPrefabPath(this.getPreviewPrefabPath())
|
|
.setGachaProbUrl(record)
|
|
.setGachaProbUrlOversea(record)
|
|
.setGachaRecordUrl(record)
|
|
.setGachaRecordUrlOversea(record)
|
|
.setTenCostItemId(this.getCostItem())
|
|
.setTenCostItemNum(10)
|
|
.setLeftGachaTimes(Integer.MAX_VALUE)
|
|
.setGachaTimesLimit(Integer.MAX_VALUE)
|
|
.setGachaSortId(this.getSortId());
|
|
|
|
if (this.getTitlePath() != null) {
|
|
info.setGachaTitlePath(this.getTitlePath());
|
|
}
|
|
|
|
if (this.getRateUpItems1().length > 0) {
|
|
GachaUpInfo.Builder upInfo = GachaUpInfo.newBuilder().setItemParentType(1);
|
|
|
|
for (int id : getRateUpItems1()) {
|
|
upInfo.addItemIdList(id);
|
|
info.addMainNameId(id);
|
|
}
|
|
|
|
info.addGachaUpInfoList(upInfo);
|
|
}
|
|
|
|
if (this.getRateUpItems2().length > 0) {
|
|
GachaUpInfo.Builder upInfo = GachaUpInfo.newBuilder().setItemParentType(2);
|
|
|
|
for (int id : getRateUpItems2()) {
|
|
upInfo.addItemIdList(id);
|
|
if (info.getSubNameIdCount() == 0) {
|
|
info.addSubNameId(id);
|
|
}
|
|
}
|
|
|
|
info.addGachaUpInfoList(upInfo);
|
|
}
|
|
|
|
return info.build();
|
|
}
|
|
|
|
public enum BannerType {
|
|
STANDARD, EVENT, WEAPON;
|
|
}
|
|
}
|