mine2d/Mine2d/game/backend/interactor/InventoryHandler.cs

33 lines
987 B
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Mine2d.engine.system.annotations;
using Mine2d.game.backend.network.packets;
namespace Mine2d.game.backend.interactor;
[Interactor]
public class InventoryHandler
{
[Interaction(InteractorKind.Server, PacketType.Tick)]
public static void onServerTick() {
var ctx = Context.Get();
var players = ctx.GameState.Players;
foreach(var player in players) {
var inventory = player.Inventory.Inventory;
var hotbar = player.Inventory.Hotbar;
// Remove empty stacks
for(var i = 0; i < hotbar.Length; i++) {
if(hotbar[i]?.Count <= 0) {
hotbar[i] = null;
}
}
for (var i = 0; i< inventory.Length; i++) {
if(inventory[i]?.Count <= 0) {
inventory[i] = null;
}
}
}
}
}