public void StartTrade(RoomEntity userOne, RoomEntity userTwo) { List <TradeUser> users = new List <TradeUser>(); users.Add(new TradeUser() { User = userOne }); users.Add(new TradeUser() { User = userTwo }); RoomTrade trade = new RoomTrade() { Users = users }; this.Trades.Add(trade); users.ForEach(user => { if (!user.User.Actions.Has("trd")) { user.User.Actions.Add("trd", ""); this.Room.EntityManager.Send(new RoomUserStatusComposer(user.User)); } }); trade.Send(new TradeStartComposer(trade)); }
public void Handle(Session session, ClientPacket message) { Room room = session.Player.CurrentRoom; if (room == null) { return; } RoomTrade trade = room.RoomTrading.GetActiveTrade(session.Player.Entity); if (trade == null) { return; } int itemId = message.PopInt(); if (!session.Player.Inventory.TryGetItemById(itemId, out InventoryItem item)) { return; } trade.OfferItems(session.Player.Entity, new List <InventoryItem>() { item }); }
public override void OnEntityLeave() { Entity.Player.CurrentRoom = null; Entity.Player.Entity = null; CurrentRoom.RoomData.UsersNow--; RoomTrade trade = CurrentRoom.RoomTrading.GetActiveTrade(Entity); if (trade != null) { trade.StopTrade(Entity); } }
public void Handle(Session session, ClientPacket message) { Room room = session.Player.CurrentRoom; if (room == null) { return; } RoomTrade trade = room.RoomTrading.GetActiveTrade(session.Player.Entity); if (trade == null) { return; } trade.StopTrade(session.Player.Entity); }
public void Handle(Session session, ClientPacket message) { Room room = session.Player.CurrentRoom; if (room == null) { return; } RoomTrade trade = room.RoomTrading.GetActiveTrade(session.Player.Entity); if (trade == null) { return; } int amount = message.PopInt(); int itemId = message.PopInt(); if (!session.Player.Inventory.TryGetItemById(itemId, out InventoryItem item)) { return; } int count = 0; List <InventoryItem> items = new List <InventoryItem>(); foreach (InventoryItem i in session.Player.Inventory.Items.Values.Where(x => x.ItemData.Id == item.ItemData.Id)) { if (!trade.GetTradeUser(session.Player.Entity).OfferedItems.Contains(i)) { items.Add(i); count++; } if (count == amount) { break; } } trade.OfferItems(session.Player.Entity, items); }
public void Handle(Session session, ClientPacket message) { Room room = session.Player.CurrentRoom; if (room == null) { return; } RoomTrade trade = room.RoomTrading.GetActiveTrade(session.Player.Entity); if (trade == null) { return; } if (!trade.GetTradeUser(session.Player.Entity).Accepted) { return; } trade.Confirm(session.Player.Entity); }
public void EndTrade(RoomTrade trade) { this.Trades.Remove(trade); }
public TradeUpdateComposer(RoomTrade roomTrade) { this.roomTrade = roomTrade; }
public TradeStartComposer(RoomTrade roomTrade) { this.roomTrade = roomTrade; }