forked from SoDOff-Project/sodoff
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:
parent
e10f80580a
commit
69a2e33ee6
@ -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),
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user