/interior list

This commit is contained in:
hydrant
2020-05-04 18:16:03 +02:00
parent 58f54f6405
commit 62e7397d6f
2 changed files with 31 additions and 9 deletions

View File

@@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Text; using System.Text;
using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Server.Core.API; using ReallifeGamemode.Server.Core.API;
@@ -12,7 +13,7 @@ namespace ReallifeGamemode.Server.Core.Commands.Admin
{ {
public override string CommandName => "interior"; public override string CommandName => "interior";
public override string HelpText => "[Add / Remove / SetEnter / SetExit][Name / ID]"; public override string HelpText => "[Add / Remove / SetEnter / SetExit/ List] [Name / ID]";
protected override AdminLevel AdminLevel => AdminLevel.HEADADMIN; protected override AdminLevel AdminLevel => AdminLevel.HEADADMIN;
@@ -20,9 +21,9 @@ namespace ReallifeGamemode.Server.Core.Commands.Admin
{ {
option1 = option1.ToString(); option1 = option1.ToString();
if (option1 != "add" && option1 != "remove" && option1 != "setenter" && option1 != "setexit") if (option1 != "add" && option1 != "remove" && option1 != "setenter" && option1 != "setexit" && option1 != "list")
{ {
player.SendMessage("/interior [Add / Remove / SetEnter / SetExit] [Name / ID]", ChatPrefix.Usage); player.SendMessage("/interior [Add / Remove / SetEnter / SetExit / List] [Name / ID]", ChatPrefix.Usage);
return; return;
} }
@@ -108,6 +109,11 @@ namespace ReallifeGamemode.Server.Core.Commands.Admin
interiorManager.LoadInteriors(); interiorManager.LoadInteriors();
} }
break; break;
case "list":
var interiors = interiorManager.GetInteriors();
player.SendMessage(string.Join(", ", interiors.Select(i => i.Item1 + " (" + i.Item2 + ")")), ChatPrefix.Admin);
break;
} }
} }
} }

View File

@@ -90,14 +90,14 @@ namespace ReallifeGamemode.Server.Core.Managers
_interiorExitColShapes.Remove(interior.Id); _interiorExitColShapes.Remove(interior.Id);
} }
public ITextLabel GetInteriorEnterTextLabel(Interior interior) => _interiorEnterTextLabels[interior.Id]; public ITextLabel GetInteriorEnterTextLabel(Interior interior) => _interiorEnterTextLabels.FirstOrDefault(x => x.Key == interior.Id).Value;
public ITextLabel GetInteriorExitTextLabel(Interior interior) => _interiorExitTextLabels[interior.Id]; public ITextLabel GetInteriorExitTextLabel(Interior interior) => _interiorExitTextLabels.FirstOrDefault(x => x.Key == interior.Id).Value;
public IMarker GetInteriorEnterMarker(Interior interior) => _interiorEnterMarkers[interior.Id]; public IMarker GetInteriorEnterMarker(Interior interior) => _interiorEnterMarkers.FirstOrDefault(x => x.Key == interior.Id).Value;
public IMarker GetInteriorExitMarkers(Interior interior) => _interiorExitMarkers[interior.Id]; public IMarker GetInteriorExitMarkers(Interior interior) => _interiorExitMarkers.FirstOrDefault(x => x.Key == interior.Id).Value;
public IColShape GetInteriorEnterColShape(Interior interior) => _interiorEnterColShapes[interior.Id]; public IColShape GetInteriorEnterColShape(Interior interior) => _interiorEnterColShapes.FirstOrDefault(x => x.Key == interior.Id).Value;
public IColShape GetInteriorExitColShape(Interior interior) => _interiorExitColShapes[interior.Id]; public IColShape GetInteriorExitColShape(Interior interior) => _interiorExitColShapes.FirstOrDefault(x => x.Key == interior.Id).Value;
public int GetInteriorIdFromEnterColShape(IColShape handle) => _interiorEnterColShapes.FirstOrDefault(c => c.Value == handle).Key; public int GetInteriorIdFromEnterColShape(IColShape handle) => _interiorEnterColShapes.FirstOrDefault(c => c.Value == handle).Key;
public int GetInteriorIdFromExitColShape(IColShape handle) => _interiorExitColShapes.FirstOrDefault(c => c.Value == handle).Key; public int GetInteriorIdFromExitColShape(IColShape handle) => _interiorExitColShapes.FirstOrDefault(c => c.Value == handle).Key;
@@ -134,7 +134,23 @@ namespace ReallifeGamemode.Server.Core.Managers
var enterExit = args[1].ToInt(); var enterExit = args[1].ToInt();
Interior interior = GetInteriorById(id, GetDbContext()); Interior interior = GetInteriorById(id, GetDbContext());
if (interior.ExitPosition == null || interior.EnterPosition == null)
{
player.SendMessage("Dieses Interior ist noch nicht eingerichtet (keine Ein-/Ausgangsposition)", ChatPrefix.Error);
return;
}
player.Position = enterExit == 0 ? interior.ExitPosition : interior.EnterPosition; player.Position = enterExit == 0 ? interior.ExitPosition : interior.EnterPosition;
} }
public IEnumerable<(string, int)> GetInteriors()
{
using var dbContext = GetDbContext();
foreach (Interior interior in dbContext.Interiors)
{
yield return (interior.Name, interior.Id);
}
}
} }
} }