[chusan] Add Chunithm New support

This commit is contained in:
Dom Eori
2022-03-11 16:26:38 +09:00
parent ee6d28bd00
commit 1c6f12752e
88 changed files with 6054 additions and 0 deletions

View File

@@ -0,0 +1,52 @@
package icu.samnyan.aqua.sega.chusan.model.gamedata;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Entity(name = "ChusanGameCharge")
@Table(name = "chusan_game_charge")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class GameCharge implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
private long id;
private int orderId;
@Column(unique = true)
private int chargeId;
private int price;
private LocalDateTime startDate;
private LocalDateTime endDate;
private int salePrice;
private LocalDateTime saleStartDate;
private LocalDateTime saleEndDate;
@JsonInclude
@Transient
private String remarks = null;
}

View File

@@ -0,0 +1,37 @@
package icu.samnyan.aqua.sega.chusan.model.gamedata;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Entity(name = "ChusanGameEvent")
@Table(name = "chusan_game_event")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class GameEvent implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private int id;
private int type;
private LocalDateTime startDate;
private LocalDateTime endDate;
@JsonIgnore
private boolean enable;
}

View File

@@ -0,0 +1,107 @@
package icu.samnyan.aqua.sega.chusan.model.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import icu.samnyan.aqua.sega.chusan.model.userdata.*;
import icu.samnyan.aqua.sega.general.model.response.UserRecentRating;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.lang.Nullable;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UpsertUserAll implements Serializable {
@Nullable
private List<UserData> userData;
@Nullable
private List<UserGameOption> userGameOption;
@Nullable
private List<UserCharacter> userCharacterList;
@Nullable
private List<UserItem> userItemList;
@Nullable
private List<UserMusicDetail> userMusicDetailList;
@Nullable
private List<UserActivity> userActivityList;
@Nullable
private List<UserRecentRating> userRecentRatingList;
@Nullable
private List<UserPlaylog> userPlaylogList;
@Nullable
private List<UserCharge> userChargeList;
@Nullable
private List<UserCourse> userCourseList;
@Nullable
private List<UserDuel> userDuelList;
@Nullable
private List<Map<String, Object>> userTeamPoint;
@Nullable
private List<Map<String, Object>> userRatingBaseHotList;
@Nullable
private List<Map<String, Object>> userRatingBaseList;
@Nullable
private List<Map<String, Object>> userRatingBaseNextList;
@Nullable
private List<Map<String, Object>> userLoginBonusList;
@Nullable
private List<UserMapArea> userMapAreaList;
@Nullable
private List<Map<String, Object>> userOverPowerList;
@Nullable
private List<Map<String, Object>> userNetBattlelogList;
@Nullable
private List<Map<String, Object>> userEmoneyList;
@Nullable
@JsonProperty("isNewCharacterList")
private String isNewCharacterList;
@Nullable
@JsonProperty("isNewMusicDetailList")
private String isNewMusicDetailList;
@Nullable
@JsonProperty("isNewItemList")
private String isNewItemList;
@Nullable
@JsonProperty("isNewCourseList")
private String isNewCourseList;
@Nullable
@JsonProperty("isNewDuelList")
private String isNewDuelList;
@Nullable
@JsonProperty("isNewMapAreaList")
private String isNewMapAreaList;
}

View File

@@ -0,0 +1,15 @@
package icu.samnyan.aqua.sega.chusan.model.response;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CodeResp {
private int returnCode;
}

View File

@@ -0,0 +1,22 @@
package icu.samnyan.aqua.sega.chusan.model.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import icu.samnyan.aqua.sega.chusan.model.response.data.GameSetting;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class GetGameSettingResp {
private GameSetting gameSetting;
@JsonProperty("isDumpUpload")
private boolean isDumpUpload;
@JsonProperty("isAou")
private boolean isAou;
}

View File

@@ -0,0 +1,45 @@
package icu.samnyan.aqua.sega.chusan.model.response;
import com.fasterxml.jackson.annotation.JsonProperty;
import icu.samnyan.aqua.sega.chusan.model.userdata.UserCharacter;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class GetUserPreviewResp {
private String userId;
@JsonProperty("isLogin")
private boolean isLogin;
private LocalDateTime lastLoginDate;
private String userName;
private int reincarnationNum;
private int level;
private String exp;
private int playerRating;
private String lastGameId;
private String lastRomVersion;
private String lastDataVersion;
private LocalDateTime lastPlayDate;
private int emoneyBrandId;
private int trophyId;
private UserCharacter userCharacter;
private int playerLevel;
private int rating;
private int headphone;
private int chargeState;
private String userNameEx;
private int banState = 0;
private int classEmblemMedal;
private int classEmblemBase;
private int battleRankId;
}

View File

@@ -0,0 +1,16 @@
package icu.samnyan.aqua.sega.chusan.model.response.data;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class GameRanking {
private int id;
private long point;
}

View File

@@ -0,0 +1,34 @@
package icu.samnyan.aqua.sega.chusan.model.response.data;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class GameSetting {
private String romVersion;
private String dataVersion;
@JsonProperty("isMaintenance")
private boolean isMaintenance;
private int requestInterval;
private String rebootStartTime;
private String rebootEndTime;
@JsonProperty("isBackgroundDistribute")
private boolean isBackgroundDistribute;
private int maxCountCharacter;
private int maxCountItem;
private int maxCountMusic;
private String matchStartTime;
private String matchEndTime;
private int matchTimeLimit;
private int matchErrorLimit;
private String matchingUri;
private String udpHolePunchUri;
private String reflectorUri;
}

View File

@@ -0,0 +1,19 @@
package icu.samnyan.aqua.sega.chusan.model.response.data;
import icu.samnyan.aqua.sega.chusan.model.userdata.UserMusicDetail;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserMusicListItem {
private int length;
private List<UserMusicDetail> userMusicDetailList;
}

View File

@@ -0,0 +1,55 @@
package icu.samnyan.aqua.sega.chusan.model.userdata;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.io.Serializable;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Entity(name = "ChusanUserActivity")
@Table(name = "chusan_user_activity", uniqueConstraints = {@UniqueConstraint(columnNames = {"user_id", "kind", "activity_id"})})
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonPropertyOrder({"kind", "id", "sortNumber", "param1", "param2", "param3", "param4"})
public class UserActivity implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
private long id;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "user_id")
private UserData user;
private int kind;
@JsonProperty("id")
@Column(name = "activity_id")
private int activityId;
private int sortNumber;
private int param1;
private int param2;
private int param3;
private int param4;
public UserActivity(UserData userData) {
user = userData;
}
}

View File

@@ -0,0 +1,62 @@
package icu.samnyan.aqua.sega.chusan.model.userdata;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.io.Serializable;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Entity(name = "ChusanUserCharacter")
@Table(name = "chusan_user_character", uniqueConstraints = {@UniqueConstraint(columnNames = {"user_id", "character_id"})})
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonPropertyOrder({"characterId", "playCount", "level", "friendshipExp", "isValid", "isNewMark", "exMaxLv", "assignIllust", "param1", "param2"})
public class UserCharacter implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
private long id;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "user_id")
private UserData user;
@Column(name = "character_id")
private int characterId;
private int playCount = 0;
private int level = 1;
private int friendshipExp = 0;
@JsonProperty("isValid")
private boolean isValid = true;
@JsonProperty("isNewMark")
private boolean isNewMark = true;
private int exMaxLv = 0;
private int assignIllust = 0;
private int param1 = 0;
private int param2 = 0;
public UserCharacter(UserData userData) {
user = userData;
}
}

View File

@@ -0,0 +1,54 @@
package icu.samnyan.aqua.sega.chusan.model.userdata;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Entity(name = "ChusanUserCharge")
@Table(name = "chusan_user_charge", uniqueConstraints = {@UniqueConstraint(columnNames = {"user_id", "charge_id"})})
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonPropertyOrder({"chargeId", "stock", "purchaseDate", "validDate", "param1", "param2", "paramDate"})
public class UserCharge implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
private long id;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "user_id")
private UserData user;
@Column(name = "charge_id")
private int chargeId;
private int stock;
private LocalDateTime purchaseDate;
private LocalDateTime validDate;
private int param1;
private int param2;
private LocalDateTime paramDate;
public UserCharge(UserData user) {
this.user = user;
}
}

View File

@@ -0,0 +1,80 @@
package icu.samnyan.aqua.sega.chusan.model.userdata;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.time.LocalDateTime;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Entity(name = "ChusanUserCourse")
@Table(name = "chusan_user_course", uniqueConstraints = {@UniqueConstraint(columnNames = {"user_id", "course_id"})})
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserCourse {
@Id
@JsonIgnore
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "user_id")
private UserData user;
@Column(name = "course_id")
private int courseId;
private int classId;
private int playCount;
private int theoryCount;
private int scoreMax;
@JsonProperty("isFullCombo")
private boolean isFullCombo;
@JsonProperty("isAllJustice")
private boolean isAllJustice;
@JsonProperty("isSuccess")
private boolean isSuccess;
private int scoreRank;
private int eventId;
private LocalDateTime lastPlayDate;
private int param1;
private int param2;
private int param3;
private int param4;
private int orderId;
private int playerRating;
@JsonProperty("isClear")
private boolean isClear;
public UserCourse(UserData userData) {
user = userData;
}
public UserCourse(int classId) {
this.classId = classId;
}
}

View File

@@ -0,0 +1,338 @@
package icu.samnyan.aqua.sega.chusan.model.userdata;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import icu.samnyan.aqua.sega.general.model.Card;
import icu.samnyan.aqua.sega.util.jackson.AccessCodeSerializer;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Entity(name = "ChusanUserData")
@Table(name = "chusan_user_data")
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonPropertyOrder({
"accessCode",
"userName",
"level",
"reincarnationNum",
"exp",
"point",
"totalPoint",
"playCount",
"multiPlayCount",
"playerRating",
"highestRating",
"nameplateId",
"frameId",
"characterId",
"trophyId",
"playedTutorialBit",
"firstTutorialCancelNum",
"masterTutorialCancelNum",
"totalMapNum",
"totalHiScore",
"totalBasicHighScore",
"totalAdvancedHighScore",
"totalExpertHighScore",
"totalMasterHighScore",
"totalUltimaHighScore",
"eventWatchedDate",
"friendCount",
"firstGameId",
"firstRomVersion",
"firstDataVersion",
"firstPlayDate",
"lastGameId",
"lastRomVersion",
"lastDataVersion",
"lastPlayDate",
"lastPlaceId",
"lastPlaceName",
"lastRegionId",
"lastRegionName",
"lastAllNetId",
"lastClientId",
"lastCountryCode",
"userNameEx",
"compatibleCmVersion",
"medal",
"mapIconId",
"voiceId",
"avatarWear",
"avatarHead",
"avatarFace",
"avatarSkin",
"avatarItem",
"avatarFront",
"avatarBack",
"classEmblemBase",
"classEmblemMedal",
"stockedGridCount",
"exMapLoopCount",
"netBattlePlayCount",
"netBattleWinCount",
"netBattleLoseCount",
"netBattleConsecutiveWinCount",
"charaIllustId",
"skillId",
"overPowerPoint",
"overPowerRate",
"overPowerLowerRank",
"avatarPoint",
"battleRankId",
"battleRankPoint",
"eliteRankPoint",
"netBattle1stCount",
"netBattle2ndCount",
"netBattle3rdCount",
"netBattle4thCount",
"netBattleCorrection",
"netBattleErrCnt",
"netBattleHostErrCnt",
"battleRewardStatus",
"battleRewardIndex",
"battleRewardCount",
"ext1",
"ext2",
"ext3",
"ext4",
"ext5",
"ext6",
"ext7",
"ext8",
"ext9",
"ext10",
"extStr1",
"extStr2",
"extLong1",
"extLong2",
"rankUpChallengeResults",
"isNetBattleHost",
"netBattleEndState" })
public class UserData implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
private long id;
@JsonSerialize(using = AccessCodeSerializer.class)
@JsonProperty(value = "accessCode", access = JsonProperty.Access.READ_ONLY)
@OneToOne
@JoinColumn(name = "card_id")
private Card card;
// Access code in card
private String userName;
private int level;
private int reincarnationNum;
private String exp;
private long point;
private long totalPoint;
private int playCount;
private int multiPlayCount;
private int playerRating;
private int highestRating;
private int nameplateId;
private int frameId;
private int characterId;
private int trophyId;
private int playedTutorialBit;
private int firstTutorialCancelNum;
private int masterTutorialCancelNum;
private int totalMapNum;
private long totalHiScore;
private long totalBasicHighScore;
private long totalAdvancedHighScore;
private long totalExpertHighScore;
private long totalMasterHighScore;
private long totalUltimaHighScore;
private LocalDateTime eventWatchedDate;
private int friendCount;
private String firstGameId;
private String firstRomVersion;
private String firstDataVersion;
private LocalDateTime firstPlayDate;
private String lastGameId;
private String lastRomVersion;
private String lastDataVersion;
@JsonIgnore
private LocalDateTime lastLoginDate;
private LocalDateTime lastPlayDate;
private int lastPlaceId;
private String lastPlaceName;
private String lastRegionId;
private String lastRegionName;
private String lastAllNetId;
private String lastClientId;
private String lastCountryCode;
private String userNameEx;
private String compatibleCmVersion;
private int medal;
private int mapIconId;
private int voiceId;
private int avatarWear;
private int avatarHead;
private int avatarFace;
private int avatarSkin;
private int avatarItem;
private int avatarFront;
private int avatarBack;
private int classEmblemBase;
private int classEmblemMedal;
private int stockedGridCount;
private int exMapLoopCount;
private int netBattlePlayCount;
private int netBattleWinCount;
private int netBattleLoseCount;
private int netBattleConsecutiveWinCount;
private int charaIllustId;
private int skillId;
private int overPowerPoint;
private int overPowerRate;
private int overPowerLowerRank;
private int avatarPoint;
private int battleRankId;
private int battleRankPoint;
private int eliteRankPoint;
private int netBattle1stCount;
private int netBattle2ndCount;
private int netBattle3rdCount;
private int netBattle4thCount;
private int netBattleCorrection;
private int netBattleErrCnt;
private int netBattleHostErrCnt;
private int battleRewardStatus;
private int battleRewardIndex;
private int battleRewardCount;
private int ext1;
private int ext2;
private int ext3;
private int ext4;
private int ext5;
private int ext6;
private int ext7;
private int ext8;
private int ext9;
private int ext10;
private String extStr1;
private String extStr2;
private long extLong1;
private long extLong2;
private String rankUpChallengeResults;
@JsonProperty("isNetBattleHost")
private boolean isNetBattleHost;
private int netBattleEndState;
}

View File

@@ -0,0 +1,55 @@
package icu.samnyan.aqua.sega.chusan.model.userdata;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.time.LocalDateTime;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Entity(name = "ChusanUserDuel")
@Table(name = "chusan_user_duel", uniqueConstraints = {@UniqueConstraint(columnNames = {"user_id", "duel_id"})})
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserDuel {
@Id
@JsonIgnore
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "user_id")
private UserData user;
@Column(name = "duel_id")
private int duelId;
private int progress;
private int point;
@JsonProperty("isClear")
private boolean isClear;
private LocalDateTime lastPlayDate;
private int param1;
private int param2;
private int param3;
private int param4;
public UserDuel(UserData userData) {
user = userData;
}
}

View File

@@ -0,0 +1,189 @@
package icu.samnyan.aqua.sega.chusan.model.userdata;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.io.Serializable;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Entity(name = "ChusanUserGameOption")
@Table(name = "chusan_user_game_option")
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonPropertyOrder({
"bgInfo",
"fieldColor",
"guideSound",
"soundEffect",
"guideLine",
"speed",
"optionSet",
"matching",
"judgePos",
"rating",
"judgeCritical",
"judgeJustice",
"judgeAttack",
"headphone",
"playerLevel",
"successTap",
"successExTap",
"successSlideHold",
"successAir",
"successFlick",
"successSkill",
"successTapTimbre",
"privacy",
"mirrorFumen",
"selectMusicFilterLv",
"sortMusicFilterLv",
"sortMusicGenre",
"categoryDetail",
"judgeTimingOffset",
"playTimingOffset",
"fieldWallPosition",
"resultVoiceShort",
"notesThickness",
"judgeAppendSe",
"trackSkip",
"hardJudge",
"speed_120",
"fieldWallPosition_120",
"playTimingOffset_120",
"judgeTimingOffset_120",
"ext1",
"ext2",
"ext3",
"ext4",
"ext5",
"ext6",
"ext7",
"ext8",
"ext9",
"ext10"
})
public class UserGameOption implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@JsonIgnore
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "user_id")
private UserData user;
private int bgInfo;
private int fieldColor;
private int guideSound;
private int soundEffect;
private int guideLine;
private int speed;
private int optionSet;
private int matching;
private int judgePos;
private int rating;
private int judgeCritical;
private int judgeJustice;
private int judgeAttack;
private int headphone;
private int playerLevel;
private int successTap;
private int successExTap;
private int successSlideHold;
private int successAir;
private int successFlick;
private int successSkill;
private int successTapTimbre;
private int privacy;
private int mirrorFumen;
private int selectMusicFilterLv;
private int sortMusicFilterLv;
private int sortMusicGenre;
private int categoryDetail;
private int judgeTimingOffset;
private int playTimingOffset;
private int fieldWallPosition;
private int resultVoiceShort;
private int notesThickness;
private int judgeAppendSe;
private int trackSkip;
private int hardJudge;
private int speed_120;
private int fieldWallPosition_120;
private int playTimingOffset_120;
private int judgeTimingOffset_120;
private int ext1;
private int ext2;
private int ext3;
private int ext4;
private int ext5;
private int ext6;
private int ext7;
private int ext8;
private int ext9;
private int ext10;
public UserGameOption(UserData userData) {
user = userData;
}
}

View File

@@ -0,0 +1,44 @@
package icu.samnyan.aqua.sega.chusan.model.userdata;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.io.Serializable;
/**
* This is for storing the other data that doesn't need to save it in a separate table
* @author samnyan (privateamusement@protonmail.com)
*/
@Entity(name = "ChusanUserGeneralData")
@Table(name = "chusan_user_general_data")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserGeneralData implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
private long id;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "user_id")
private UserData user;
private String propertyKey;
@Column(columnDefinition = "TEXT")
private String propertyValue;
public UserGeneralData(UserData userData, String key) {
this.user = userData;
this.propertyKey = key;
this.propertyValue = "";
}
}

View File

@@ -0,0 +1,51 @@
package icu.samnyan.aqua.sega.chusan.model.userdata;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.io.Serializable;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Entity(name = "ChusanUserItem")
@Table(name = "chusan_user_item", uniqueConstraints = {@UniqueConstraint(columnNames = {"user_id", "item_id", "item_kind"})})
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonPropertyOrder({"itemKind", "itemId", "stock", "isValid"})
public class UserItem implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
private long id;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "user_id")
private UserData user;
// Kind ,Type
@Column(name = "item_kind")
private int itemKind;
@Column(name = "item_id")
private int itemId;
private int stock = 1;
@JsonProperty("isValid")
private boolean isValid = true;
public UserItem(UserData userData) {
user = userData;
}
}

View File

@@ -0,0 +1,64 @@
package icu.samnyan.aqua.sega.chusan.model.userdata;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.io.Serializable;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Entity(name = "ChusanUserMapArea")
@Table(name = "chusan_user_map_area", uniqueConstraints = {@UniqueConstraint(columnNames = {"user_id", "map_area_id"})})
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonPropertyOrder({
"mapAreaId",
"position",
"isClear",
"rate",
"statusCount",
"remainGridCount",
"isLocked"
})
public class UserMapArea implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
private long id;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "user_id")
private UserData user;
@Column(name = "map_area_id")
private int mapAreaId;
private int position;
@JsonProperty("isClear")
private boolean isClear;
private int rate;
private int statusCount;
private int remainGridCount;
@JsonProperty("isLocked")
private boolean isLocked;
public UserMapArea(UserData userData) {
user = userData;
}
}

View File

@@ -0,0 +1,107 @@
package icu.samnyan.aqua.sega.chusan.model.userdata;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.io.Serializable;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Entity(name = "ChusanUserMusicDetail")
@Table(name = "chusan_user_music_detail", uniqueConstraints = {@UniqueConstraint(columnNames = {"user_id", "music_id", "level"})})
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonPropertyOrder({
"musicId",
"level",
"playCount",
"scoreMax",
"missCount",
"maxComboCount",
"isFullCombo",
"isAllJustice",
"isSuccess",
"fullChain",
"maxChain",
"isLock",
"theoryCount",
"ext1"
})
public class UserMusicDetail implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
private long id;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "user_id")
private UserData user;
@Column(name = "music_id")
private int musicId;
private int level;
private int playCount;
private int scoreMax;
private int missCount;
private int maxComboCount;
@JsonProperty("isFullCombo")
private boolean isFullCombo;
@JsonProperty("isAllJustice")
private boolean isAllJustice;
@JsonProperty("isSuccess")
private boolean isSuccess;
private int fullChain;
private int maxChain;
private int scoreRank;
@JsonProperty("isLock")
private boolean isLock;
private int theoryCount;
private int ext1;
public UserMusicDetail(UserData userData) {
user = userData;
}
public UserMusicDetail(int musicId, int level, int playCount, int scoreMax, int missCount, int maxComboCount, boolean isFullCombo, boolean isAllJustice, boolean isSuccess, int fullChain, int maxChain, int scoreRank, boolean isLock, int theoryCount, int ext1) {
this.musicId = musicId;
this.level = level;
this.playCount = playCount;
this.scoreMax = scoreMax;
this.missCount = missCount;
this.maxComboCount = maxComboCount;
this.isFullCombo = isFullCombo;
this.isAllJustice = isAllJustice;
this.isSuccess = isSuccess;
this.fullChain = fullChain;
this.maxChain = maxChain;
this.scoreRank = scoreRank;
this.isLock = isLock;
this.theoryCount = theoryCount;
this.ext1 = ext1;
}
}

View File

@@ -0,0 +1,150 @@
package icu.samnyan.aqua.sega.chusan.model.userdata;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Entity(name = "ChusanUserPlaylog")
@Table(name = "chusan_user_playlog")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserPlaylog implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
private long id;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "user_id")
private UserData user;
private String romVersion;
private int orderId;
private int sortNumber;
private int placeId;
private LocalDateTime playDate;
private LocalDateTime userPlayDate;
private int musicId;
private int level;
private int customId;
private int playedUserId1;
private int playedUserId2;
private int playedUserId3;
private String playedUserName1;
private String playedUserName2;
private String playedUserName3;
private int playedMusicLevel1;
private int playedMusicLevel2;
private int playedMusicLevel3;
private int playedCustom1;
private int playedCustom2;
private int playedCustom3;
private int track;
private int score;
private int rank;
private int maxCombo;
private int maxChain;
private int rateTap;
private int rateHold;
private int rateSlide;
private int rateAir;
private int rateFlick;
private int judgeGuilty;
private int judgeAttack;
private int judgeJustice;
private int judgeCritical;
private int judgeHeaven;
private int eventId;
private int playerRating;
@JsonProperty("isNewRecord")
private boolean isNewRecord;
@JsonProperty("isFullCombo")
private boolean isFullCombo;
private int fullChainKind;
@JsonProperty("isAllJustice")
private boolean isAllJustice;
@JsonProperty("isContinue")
private boolean isContinue;
@JsonProperty("isFreeToPlay")
private boolean isFreeToPlay;
private int characterId;
private int charaIllustId;
private int skillId;
private int playKind;
@JsonProperty("isClear")
private boolean isClear;
private int skillLevel;
private int skillEffect;
private String placeName;
private int commonId;
public UserPlaylog(UserData userData) {
user = userData;
}
}