/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.Collections.Generic;
using System.Linq;
using System.Text;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Server.Core.API;
@@ -12,7 +13,7 @@ namespace ReallifeGamemode.Server.Core.Commands.Admin
{
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;
@@ -20,9 +21,9 @@ namespace ReallifeGamemode.Server.Core.Commands.Admin
{
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;
}
@@ -108,6 +109,11 @@ namespace ReallifeGamemode.Server.Core.Commands.Admin
interiorManager.LoadInteriors();
}
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);
}
public ITextLabel GetInteriorEnterTextLabel(Interior interior) => _interiorEnterTextLabels[interior.Id];
public ITextLabel GetInteriorExitTextLabel(Interior interior) => _interiorExitTextLabels[interior.Id];
public ITextLabel GetInteriorEnterTextLabel(Interior interior) => _interiorEnterTextLabels.FirstOrDefault(x => x.Key == interior.Id).Value;
public ITextLabel GetInteriorExitTextLabel(Interior interior) => _interiorExitTextLabels.FirstOrDefault(x => x.Key == interior.Id).Value;
public IMarker GetInteriorEnterMarker(Interior interior) => _interiorEnterMarkers[interior.Id];
public IMarker GetInteriorExitMarkers(Interior interior) => _interiorExitMarkers[interior.Id];
public IMarker GetInteriorEnterMarker(Interior interior) => _interiorEnterMarkers.FirstOrDefault(x => x.Key == interior.Id).Value;
public IMarker GetInteriorExitMarkers(Interior interior) => _interiorExitMarkers.FirstOrDefault(x => x.Key == interior.Id).Value;
public IColShape GetInteriorEnterColShape(Interior interior) => _interiorEnterColShapes[interior.Id];
public IColShape GetInteriorExitColShape(Interior interior) => _interiorExitColShapes[interior.Id];
public IColShape GetInteriorEnterColShape(Interior interior) => _interiorEnterColShapes.FirstOrDefault(x => x.Key == interior.Id).Value;
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 GetInteriorIdFromExitColShape(IColShape handle) => _interiorExitColShapes.FirstOrDefault(c => c.Value == handle).Key;
@@ -134,7 +134,23 @@ namespace ReallifeGamemode.Server.Core.Managers
var enterExit = args[1].ToInt();
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;
}
public IEnumerable<(string, int)> GetInteriors()
{
using var dbContext = GetDbContext();
foreach (Interior interior in dbContext.Interiors)
{
yield return (interior.Name, interior.Id);
}
}
}
}