initial work

- add message to viking if level up is detected and wojs is game version
- crappy fix for bug where viking rank isn't displayed correctly in some areas
- add empty url's for audio and image (otherwise cutscene would not play)
This commit is contained in:
Alan Moon 2025-03-11 18:01:08 -07:00
parent e10f80580a
commit 69a2e33ee6
4 changed files with 27 additions and 6 deletions

View File

@ -13,14 +13,16 @@ public class ProfileController : Controller {
private readonly DBContext ctx; private readonly DBContext ctx;
private AchievementService achievementService; private AchievementService achievementService;
private AchievementStoreSingleton achievementStore;
private ProfileService profileService; private ProfileService profileService;
private readonly IOptions<ApiServerConfig> config; 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.ctx = ctx;
this.achievementService = achievementService; this.achievementService = achievementService;
this.profileService = profileService; this.profileService = profileService;
this.config = config; this.config = config;
achievementStore = achievementStoreSingleton;
} }
[HttpPost] [HttpPost]
@ -140,7 +142,7 @@ public class ProfileController : Controller {
SubscriptionID = -3, // placeholder SubscriptionID = -3, // placeholder
IsActive = true, // 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 AchievementInfo = null, // placeholder
Achievements = new UserAchievementInfo[] { Achievements = new UserAchievementInfo[] {
achievementService.CreateUserAchievementInfo(viking, AchievementPointTypes.PlayerXP), achievementService.CreateUserAchievementInfo(viking, AchievementPointTypes.PlayerXP),

View File

@ -98,11 +98,26 @@ namespace sodoff.Services {
ctx.SaveChanges(); ctx.SaveChanges();
return new AchievementReward{ AchievementReward achievementReward = new AchievementReward
{
EntityID = viking.Uid, EntityID = viking.Uid,
PointTypeID = type, PointTypeID = type,
Amount = value 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; return null;
} }

View File

@ -61,7 +61,7 @@ namespace sodoff.Services {
} }
public int GetRankFromXP(int? xpPoints, AchievementPointTypes type) { 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) { public AchievementReward[]? GetAchievementRewardsById(int achievementID) {

View File

@ -271,7 +271,11 @@ public class MessagingService
MessageTypeID = (int?)message.MessageTypeID, MessageTypeID = (int?)message.MessageTypeID,
Data = message.Data ?? "NoData", Data = message.Data ?? "NoData",
MemberMessage = message.MemberMessage ?? "NoMessage", MemberMessage = message.MemberMessage ?? "NoMessage",
NonMemberMessage = message.NonMemberMessage ?? "NoMessage" NonMemberMessage = message.NonMemberMessage ?? "NoMessage",
MemberAudioUrl = "",
NonMemberAudioUrl = "",
MemberImageUrl = "",
NonMemberImageUrl = ""
}; };
messageInfos.Add(messageInfo); messageInfos.Add(messageInfo);