diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs
index fc61ba4..5ce28e8 100644
--- a/src/Controllers/Common/ContentController.cs
+++ b/src/Controllers/Common/ContentController.cs
@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using Microsoft.EntityFrameworkCore;
+using Org.BouncyCastle.Security.Certificates;
using sodoff.Attributes;
using sodoff.Model;
using sodoff.Schema;
@@ -1621,9 +1622,92 @@ public class ContentController : Controller {
[HttpPost]
//[Produces("application/xml")]
[Route("ContentWebService.asmx/GetScene")] // used by World Of Jumpstart
- public IActionResult GetScene() {
- // TODO: This is a placeholder
- return Ok("");
+ [VikingSession]
+ public IActionResult GetScene(Viking viking, [FromForm] string sceneName) {
+ SceneData? scene = viking.SceneData.FirstOrDefault(e => e.SceneName == sceneName);
+
+ if (scene is not null) return Ok(scene.XmlData);
+ else return Ok("");
+ }
+
+ [HttpPost]
+ [Route("ContentWebSerivce.asmx/GetHouse")] // used by World Of Jumpstart
+ [VikingSession]
+ public IActionResult GetHouse(Viking viking) {
+ if (viking.House is not null) return Ok(viking.House.XmlData);
+ else return Ok("");
+ }
+
+ [HttpPost]
+ [Route("ContentWebService.asmx/GetHouseByUserId")] // used by World Of Jumpstart
+ public IActionResult GetHouseByUserId([FromForm] Guid userId)
+ {
+ Viking? viking = ctx.Vikings.FirstOrDefault(e => e.Uid == userId);
+
+ if (viking is not null)
+ {
+ if (viking.House is not null) return Ok(viking.House.XmlData);
+ else return Ok("");
+ }
+
+ return Ok("");
+ }
+
+ [HttpPost]
+ //[Produces("application/xml")]
+ [Route("ContentWebService.asmx/GetSceneByUserId")] // used by World Of Jumpstart
+ public IActionResult GetSceneByUserId([FromForm] Guid userId, [FromForm] string sceneName) {
+ SceneData? scene = ctx.Vikings.FirstOrDefault(e => e.Uid == userId)?.SceneData.FirstOrDefault(x => x.SceneName == sceneName);
+
+ if (scene is not null) return Ok(scene.XmlData);
+ else return Ok(null);
+ }
+
+ [HttpPost]
+ [Produces("application/xml")]
+ [Route("ContentWebService.asmx/SetScene")] // used by World of Jumpstart
+ [VikingSession]
+ public IActionResult SetScene(Viking viking, [FromForm] string sceneName, [FromForm] string contentXml) {
+ SceneData? existingScene = viking.SceneData.FirstOrDefault(e => e.SceneName == sceneName);
+
+ if(existingScene is not null)
+ {
+ existingScene.XmlData = contentXml;
+ ctx.SaveChanges();
+ return Ok(true);
+ }
+ else
+ {
+ SceneData sceneData = new SceneData
+ {
+ SceneName = sceneName,
+ XmlData = contentXml
+ };
+ viking.SceneData.Add(sceneData);
+ ctx.SaveChanges();
+ return Ok(true);
+ }
+ }
+
+ [HttpPost]
+ [Produces("application/xml")]
+ [Route("ContentWebService.asmx/SetHouse")] // used by World Of Jumpstart
+ [VikingSession]
+ public IActionResult SetHouse(Viking viking, [FromForm] string contentXml) {
+ HouseData? house = viking.House;
+
+ if(house is null)
+ {
+ HouseData newHouse = new HouseData{ XmlData = contentXml };
+ viking.House = newHouse;
+ ctx.SaveChanges();
+ return Ok(true);
+ } else
+ {
+ house.XmlData = contentXml;
+ ctx.SaveChanges();
+ return Ok(true);
+ }
}
[HttpPost]
@@ -1634,7 +1718,7 @@ public class ContentController : Controller {
GetGameDataRequest request = XmlUtil.DeserializeXml(gameDataRequest);
return Ok(gameDataService.GetGameDataForPlayer(viking, request));
}
-
+
[HttpPost]
[Produces("application/xml")]
[Route("ContentWebService.asmx/GetUserGameCurrency")]
diff --git a/src/Model/DBContext.cs b/src/Model/DBContext.cs
index 900dcd8..82cc8ae 100644
--- a/src/Model/DBContext.cs
+++ b/src/Model/DBContext.cs
@@ -15,6 +15,8 @@ public class DBContext : DbContext {
public DbSet InventoryItems { get; set; } = null!;
public DbSet MissionStates { get; set; } = null!;
public DbSet Rooms { get; set; } = null!;
+ public DbSet SceneData { get; set; } = null!;
+ public DbSet Houses { get; set; } = null!;
public DbSet RoomItems { get; set; } = null!;
public DbSet GameData { get; set; } = null!;
public DbSet GameDataPairs { get; set; } = null!;
@@ -94,6 +96,12 @@ public class DBContext : DbContext {
builder.Entity().HasMany(v => v.Rooms)
.WithOne(e => e.Viking);
+ builder.Entity().HasMany(v => v.SceneData)
+ .WithOne(e => e.Viking);
+
+ builder.Entity().HasOne(v => v.House)
+ .WithOne(e => e.Viking);
+
builder.Entity().HasMany(v => v.AchievementPoints)
.WithOne(e => e.Viking);
@@ -224,5 +232,12 @@ public class DBContext : DbContext {
builder.Entity().HasOne(i => i.Viking)
.WithMany(i => i.ProfileAnswers)
.HasForeignKey(e => e.VikingId);
+
+ builder.Entity().HasOne(i => i.Viking)
+ .WithMany(i => i.SceneData)
+ .HasForeignKey(e => e.VikingId);
+
+ builder.Entity().HasOne(i => i.Viking)
+ .WithOne(e => e.House);
}
}
diff --git a/src/Model/HouseData.cs b/src/Model/HouseData.cs
new file mode 100644
index 0000000..daf8074
--- /dev/null
+++ b/src/Model/HouseData.cs
@@ -0,0 +1,13 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace sodoff.Model
+{
+ public class HouseData
+ {
+ [Key]
+ public int Id { get; set; }
+ public int VikingId { get; set; }
+ public virtual Viking Viking { get; set; } = null!;
+ public string XmlData { get; set; } = null!;
+ }
+}
diff --git a/src/Model/SceneData.cs b/src/Model/SceneData.cs
new file mode 100644
index 0000000..5e17821
--- /dev/null
+++ b/src/Model/SceneData.cs
@@ -0,0 +1,14 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace sodoff.Model
+{
+ public class SceneData
+ {
+ [Key]
+ public int Id { get; set; }
+ public int VikingId { get; set; }
+ public string SceneName { get; set; } = null!;
+ public string XmlData { get; set; } = null!;
+ public virtual Viking Viking { get; set; } = null!;
+ }
+}
diff --git a/src/Model/Viking.cs b/src/Model/Viking.cs
index 0905147..4659dbc 100644
--- a/src/Model/Viking.cs
+++ b/src/Model/Viking.cs
@@ -27,6 +27,8 @@ public class Viking {
public virtual ICollection MissionStates { get; set; } = null!;
public virtual ICollection TaskStatuses { get; set; } = null!;
public virtual ICollection Rooms { get; set; } = null!;
+ public virtual ICollection SceneData { get; set; } = null!;
+ public virtual HouseData House { get; set; } = null!;
public virtual ICollection AchievementPoints { get; set; } = null!;
public virtual ICollection PairData { get; set; } = null!;
public virtual ICollection InventoryItems { get; set; } = null!;