Implement Drawing Rooms

This commit is contained in:
SilicaAndPina 2021-02-04 22:55:00 +13:00
parent 29fe3ec024
commit 92c35eb4b9
10 changed files with 355 additions and 17 deletions

View file

@ -169,7 +169,7 @@ namespace HISP.Game.Items
if (item.SpawnParamaters.SpawnOnTileType == TileType)
{
if (GetItemsAt(tryX, tryY).Length > 26) // Max here
if (GetItemsAt(tryX, tryY).Length > 25) // Max items in one tile.
continue;
ItemInstance instance = new ItemInstance(item.Id);
@ -206,7 +206,7 @@ namespace HISP.Game.Items
if (Map.CheckPassable(spawnOn.X, spawnOn.Y))
{
if (GetItemsAt(spawnOn.X, spawnOn.Y).Length > 26) // Max here
if (GetItemsAt(spawnOn.X, spawnOn.Y).Length > 25) // Max items in one tile.
continue;
ItemInstance instance = new ItemInstance(item.Id);
@ -270,7 +270,7 @@ namespace HISP.Game.Items
if (Map.CheckPassable(tryX, tryY))
{
if (GetItemsAt(tryX, tryY).Length > 26) // Max here
if (GetItemsAt(tryX, tryY).Length > 25) // Max here
continue;
ItemInstance instance = new ItemInstance(item.Id);
@ -297,13 +297,7 @@ namespace HISP.Game.Items
while (true)
{
// Pick a random isle:
//int isleId = GameServer.RandomNumberGenerator.Next(0, World.Isles.Count);
//World.Isle isle = World.Isles[isleId];
// Pick a random location inside the isle
//int tryX = GameServer.RandomNumberGenerator.Next(isle.StartX, isle.EndX);
//int tryY = GameServer.RandomNumberGenerator.Next(isle.StartY, isle.EndY);
// Pick a random location:
int tryX = GameServer.RandomNumberGenerator.Next(0, Map.Width);
int tryY = GameServer.RandomNumberGenerator.Next(0, Map.Height);
@ -317,7 +311,7 @@ namespace HISP.Game.Items
if (item.SpawnParamaters.SpawnOnTileType == TileType)
{
if (GetItemsAt(tryX, tryY).Length > 26) // Max here
if (GetItemsAt(tryX, tryY).Length > 25) // Max here
continue;
ItemInstance instance = new ItemInstance(item.Id);

View file

@ -525,6 +525,8 @@ namespace HISP.Game
public static string DrawingContentsLoadedFromSlotFormat;
public static string DrawingPlzClearLoad;
public static string DrawingPlzClearDraw;
public static string DrawingNotSentNotSubscribed;
public static string DrawingCannotLoadNotSubscribed;
// Birckpoet
public static string LastPoetFormat;

View file

@ -9,6 +9,15 @@ namespace HISP.Game.SwfModules
{
class Drawingroom
{
private static List<Drawingroom> drawingRooms = new List<Drawingroom>();
public static Drawingroom[] DrawingRooms
{
get
{
return drawingRooms.ToArray();
}
}
private string drawing;
public string Drawing
{
@ -32,11 +41,43 @@ namespace HISP.Game.SwfModules
public int Id;
public Drawingroom(int roomId)
{
if (!Database.DrawingRoomExists(roomId))
{
Database.CreateDrawingRoom(roomId);
Database.SetLastPlayer("D" + roomId.ToString(), -1);
}
drawing = Database.GetDrawingRoomDrawing(roomId);
Id = roomId;
drawingRooms.Add(this);
}
public static void LoadAllDrawingRooms()
{
// iterate over every special tile
foreach(World.SpecialTile tile in World.SpecialTiles)
{
if(tile.Code != null)
{
if (tile.Code.StartsWith("MULTIROOM-D"))
{
int roomId = int.Parse(tile.Code.Substring(11));
Logger.InfoPrint("Loading Drawing Room ID: " + roomId.ToString());
Drawingroom room = new Drawingroom(roomId);
}
}
}
}
public static Drawingroom GetDrawingRoomById(int id)
{
foreach(Drawingroom room in DrawingRooms)
{
if (room.Id == id)
return room;
}
throw new KeyNotFoundException("Room with id: " + id + " not found.");
}
}