mirror of
https://github.com/simtactics/mysimulation.git
synced 2025-03-22 17:32:23 +00:00
- NioTSO client isn't needed because we're using RayLib - Added FreeSO's API server to handle most backend operations
73 lines
2.3 KiB
C#
Executable file
73 lines
2.3 KiB
C#
Executable file
using FSO.Server.Api.Core.Utils;
|
|
using FSO.Server.Common;
|
|
using Microsoft.AspNetCore.Cors;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using System.Net;
|
|
|
|
namespace FSO.Server.Api.Core.Controllers
|
|
{
|
|
[EnableCors]
|
|
[ApiController]
|
|
public class CityJSONController : ControllerBase
|
|
{
|
|
private static object ModelLock = new object { };
|
|
private static CityInfoModel LastModel = new CityInfoModel();
|
|
private static uint LastModelUpdate;
|
|
|
|
[HttpGet]
|
|
[Route("userapi/city/{shardid}/city.json")]
|
|
public IActionResult Get(int shardid)
|
|
{
|
|
var api = Api.INSTANCE;
|
|
|
|
var now = Epoch.Now;
|
|
if (LastModelUpdate < now - 15)
|
|
{
|
|
LastModelUpdate = now;
|
|
lock (ModelLock)
|
|
{
|
|
LastModel = new CityInfoModel();
|
|
using (var da = api.DAFactory.Get())
|
|
{
|
|
var lots = da.Lots.AllLocations(shardid);
|
|
var lotstatus = da.LotClaims.AllLocations(shardid);
|
|
LastModel.reservedLots = lots.ConvertAll(x => x.location).ToArray();
|
|
LastModel.names = lots.ConvertAll(x => x.name).ToArray();
|
|
LastModel.activeLots = lotstatus.ConvertAll(x => x.location).ToArray();
|
|
LastModel.onlineCount = lotstatus.ConvertAll(x => x.active).ToArray();
|
|
}
|
|
}
|
|
}
|
|
lock (ModelLock)
|
|
{
|
|
return ApiResponse.Json(HttpStatusCode.OK, LastModel);
|
|
}
|
|
}
|
|
|
|
[HttpGet]
|
|
[Route("userapi/city/thumbwork.json")]
|
|
public IActionResult ThumbWork()
|
|
{
|
|
var api = Api.INSTANCE;
|
|
api.DemandModerator(Request);
|
|
|
|
using (var da = api.DAFactory.Get())
|
|
{
|
|
var work = da.Lots.Get3DWork();
|
|
if (work == null) return ApiResponse.Plain(HttpStatusCode.OK, "");
|
|
else
|
|
{
|
|
return ApiResponse.Json(HttpStatusCode.OK, work);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
class CityInfoModel
|
|
{
|
|
public string[] names;
|
|
public uint[] reservedLots;
|
|
public uint[] activeLots;
|
|
public int[] onlineCount;
|
|
}
|
|
}
|