forked from SoDOff-Project/sodoff
WoJS Rank Up Message #4
@ -13,14 +13,16 @@ public class ProfileController : Controller {
|
||||
|
||||
private readonly DBContext ctx;
|
||||
private AchievementService achievementService;
|
||||
private AchievementStoreSingleton achievementStore;
|
||||
private ProfileService profileService;
|
||||
private readonly IOptions<ApiServerConfig> config;
|
||||
|
||||
public ProfileController(DBContext ctx, AchievementService achievementService, ProfileService profileService, IOptions<ApiServerConfig> config) {
|
||||
public ProfileController(DBContext ctx, AchievementService achievementService, AchievementStoreSingleton achievementStoreSingleton, ProfileService profileService, IOptions<ApiServerConfig> config) {
|
||||
this.ctx = ctx;
|
||||
this.achievementService = achievementService;
|
||||
this.profileService = profileService;
|
||||
this.config = config;
|
||||
achievementStore = achievementStoreSingleton;
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
@ -140,7 +142,7 @@ public class ProfileController : Controller {
|
||||
SubscriptionID = -3, // placeholder
|
||||
IsActive = true, // placeholder
|
||||
},
|
||||
RankID = 0, // placeholder
|
||||
RankID = achievementStore.GetRankFromXP(viking.AchievementPoints.FirstOrDefault(e => e.Type == (int)AchievementPointTypes.PlayerXP).Value, AchievementPointTypes.PlayerXP), // placeholder
|
||||
AchievementInfo = null, // placeholder
|
||||
Achievements = new UserAchievementInfo[] {
|
||||
achievementService.CreateUserAchievementInfo(viking, AchievementPointTypes.PlayerXP),
|
||||
|
@ -98,11 +98,26 @@ namespace sodoff.Services {
|
||||
|
||||
ctx.SaveChanges();
|
||||
|
||||
return new AchievementReward{
|
||||
AchievementReward achievementReward = new AchievementReward
|
||||
{
|
||||
EntityID = viking.Uid,
|
||||
PointTypeID = type,
|
||||
Amount = value
|
||||
};
|
||||
|
||||
if(viking.GameVersion <= ClientVersion.WoJS && xpPoints.Type == (int)AchievementPointTypes.PlayerXP)
|
||||
{
|
||||
int initialRank = achievementStore.GetRankFromXP(initialPoints, AchievementPointTypes.PlayerXP);
|
||||
int newRank = achievementStore.GetRankFromXP(xpPoints.Value, AchievementPointTypes.PlayerXP);
|
||||
// wojs shows level up screen when a message of type rank is posted to their message board
|
||||
if(newRank > initialRank)
|
||||
{
|
||||
// player leveled up, post message
|
||||
messagingService.AddMessageToViking(null, viking, MessageType.Data, MessageTypeID.Rank, MessageLevel.WhiteList, "[[Line3]]=[[Congratulations Jumpee, You Leveled Up!]][[Prefab]]=[[RS_DATA/PfLevelUpRoom.unity3d/PfLevelUpRoom]]", "[[Line3]]=[[Congratulations Jumpee, You Leveled Up!]][[Prefab]]=[[RS_DATA/PfLevelUpRoom.unity3d/PfLevelUpRoom]]", "[[Line3]]=[[Congratulations Jumpee, You Leveled Up!]][[Prefab]]=[[RS_DATA/PfLevelUpRoom.unity3d/PfLevelUpRoom]]", isPrivate: true);
|
||||
}
|
||||
}
|
||||
|
||||
return achievementReward;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -61,7 +61,7 @@ namespace sodoff.Services {
|
||||
}
|
||||
|
||||
public int GetRankFromXP(int? xpPoints, AchievementPointTypes type) {
|
||||
return ranks[type].Count(r => r.Value <= xpPoints);
|
||||
return ranks[type].Count(r => r.Value <= xpPoints) - 1; // shitty attempt to fix wrong rank being reported
|
||||
}
|
||||
|
||||
public AchievementReward[]? GetAchievementRewardsById(int achievementID) {
|
||||
|
@ -271,9 +271,13 @@ public class MessagingService
|
||||
MessageTypeID = (int?)message.MessageTypeID,
|
||||
Data = message.Data ?? "NoData",
|
||||
MemberMessage = message.MemberMessage ?? "NoMessage",
|
||||
NonMemberMessage = message.NonMemberMessage ?? "NoMessage"
|
||||
NonMemberMessage = message.NonMemberMessage ?? "NoMessage",
|
||||
MemberAudioUrl = "",
|
||||
NonMemberAudioUrl = "",
|
||||
MemberImageUrl = "",
|
||||
NonMemberImageUrl = ""
|
||||
};
|
||||
|
||||
|
||||
messageInfos.Add(messageInfo);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user