/// <summary> /// Composes the specified achievement. /// </summary> /// <param name="achievement">The achievement.</param> /// <param name="level">The level.</param> /// <param name="pointReward">The point reward.</param> /// <param name="pixelReward">The pixel reward.</param> /// <returns>ServerMessage.</returns> internal static ServerMessage Compose(Achievement achievement, uint level, uint pointReward, uint pixelReward) { ServerMessage serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("UnlockAchievementMessageComposer")); serverMessage.AppendInteger(achievement.Id); serverMessage.AppendInteger(level); serverMessage.AppendInteger(144); serverMessage.AppendString($"{achievement.GroupName}{level}"); serverMessage.AppendInteger(pointReward); serverMessage.AppendInteger(pixelReward); serverMessage.AppendInteger(0); serverMessage.AppendInteger(10); serverMessage.AppendInteger(21); serverMessage.AppendString(level > 1 ? $"{achievement.GroupName}{level - 1}" : string.Empty); serverMessage.AppendString(achievement.Category); serverMessage.AppendBool(true); return serverMessage; }
/// <summary> /// Composes the specified achievement. /// </summary> /// <param name="achievement">The achievement.</param> /// <param name="targetLevel">The target level.</param> /// <param name="targetLevelData">The target level data.</param> /// <param name="totalLevels">The total levels.</param> /// <param name="userData">The user data.</param> /// <returns>ServerMessage.</returns> internal static ServerMessage Compose(Achievement achievement, uint targetLevel, AchievementLevel targetLevelData, uint totalLevels, UserAchievement userData) { ServerMessage serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("AchievementProgressMessageComposer")); serverMessage.AppendInteger(achievement.Id); serverMessage.AppendInteger(targetLevel); serverMessage.AppendString($"{achievement.GroupName}{targetLevel}"); serverMessage.AppendInteger(targetLevelData.Requirement); serverMessage.AppendInteger(targetLevelData.Requirement); serverMessage.AppendInteger(targetLevelData.RewardPixels); serverMessage.AppendInteger(0); serverMessage.AppendInteger(userData.Progress); serverMessage.AppendBool(userData.Level >= totalLevels); serverMessage.AppendString(achievement.Category); serverMessage.AppendString(string.Empty); serverMessage.AppendInteger(totalLevels); serverMessage.AppendInteger(0); return serverMessage; }