public void receive_changed_chest(NetIncomingMessage p, World w) { byte player_id = p.ReadByte(); ushort furn_id = p.ReadUInt16(); byte item_id = p.ReadByte(); Cubby temp = new Cubby(p); if (player_id != Exilania.game_my_user_id) { //this is not originating from the server, do something about it for (int i = 0; i < w.chests.Count; i++) { if (w.chests[i].furniture_id == furn_id) { w.chests[i].items[item_id] = new Cubby(temp); i = w.chests.Count; } } } NetOutgoingMessage j = udp_server.CreateMessage(); j.Write((byte)24); j.Write((byte)player_id); j.Write((ushort)furn_id); j.Write((byte)item_id); temp.send_cubby(j); udp_server.SendToAll(j, p.SenderConnection, NetDeliveryMethod.ReliableOrdered, 0); }
public void receive_change_hands_item(NetIncomingMessage p, Display d, World w) { int player_id = p.ReadByte(); bool is_left = p.ReadBoolean(); Cubby c = new Cubby(p); if (player_id != Exilania.game_my_user_id) { if (is_left) { w.players[player_id].avatar.items.hotbar_items[0] = new Cubby(c); w.players[player_id].avatar.items.cur_left_hand = 0; w.players[player_id].avatar.items.equip_item(w.players[player_id].avatar, d, true, false); } else { w.players[player_id].avatar.items.hotbar_items[1] = new Cubby(c); w.players[player_id].avatar.items.cur_right_hand = 1; w.players[player_id].avatar.items.equip_item(w.players[player_id].avatar, d, false, true); } } NetOutgoingMessage i = udp_server.CreateMessage(); i.Write((byte)19); i.Write((byte)player_id); i.Write(is_left); c.send_cubby(i); udp_server.SendToAll(i, p.SenderConnection, NetDeliveryMethod.Unreliable, 0); }
public void send_changed_item_in_hands(Cubby c, bool is_left) { NetOutgoingMessage i = udp_client.CreateMessage(); i.Write((byte)19); i.Write((byte)Exilania.game_my_user_id); i.Write(is_left); c.send_cubby(i); udp_client.SendMessage(i, NetDeliveryMethod.Unreliable); }
public void receive_changed_chest(NetIncomingMessage p, World w) { byte player_id = p.ReadByte(); ushort furn_id = p.ReadUInt16(); byte item_id = p.ReadByte(); Cubby temp = new Cubby(p); //this is not originating from the server, do something about it for (int i = 0; i < w.chests.Count; i++) { if (w.chests[i].furniture_id == furn_id) { w.chests[i].items[item_id] = new Cubby(temp); i = w.chests.Count; } } }
public void receive_changed_item_in_hands(NetIncomingMessage p, Display d, World w) { int player_id = p.ReadByte(); bool is_left = p.ReadBoolean(); Cubby c = new Cubby(p); if (!Exilania.game_server && w != null && w.players.Count > player_id) { if (is_left) { w.players[player_id].avatar.items.hotbar_items[0] = new Cubby(c); w.players[player_id].avatar.items.cur_left_hand = 0; w.players[player_id].avatar.items.equip_item(w.players[player_id].avatar, d, true, false); } else { w.players[player_id].avatar.items.hotbar_items[1] = new Cubby(c); w.players[player_id].avatar.items.cur_right_hand = 1; w.players[player_id].avatar.items.equip_item(w.players[player_id].avatar, d, false, true); } } }
public void do_input(World w, Actor a, Point mouse_loc) { if (allow_click) { allow_click = false; int clicked_id = -1; Rectangle temp = new Rectangle(); for (int i = 0; i < items.Count; i++) { temp = new Rectangle(display_loc.X + ((i % (25 / 5)) * 50), display_loc.Y + (i / (25 / 5) * 50), 50, 50); if (temp.Contains(mouse_loc)) { clicked_id = i; } } if (clicked_id != -1) { //found where clicked... decide what to do. bool changed = false; Cubby holder = new Cubby(a.items.temporary); //if (!a.items.temporary.is_empty && !items[clicked_id].is_empty) //{ if (items[clicked_id].is_block == a.items.temporary.is_block && (items[clicked_id].is_block && items[clicked_id].block_id == a.items.temporary.block_id)) { if (items[clicked_id].quantity + a.items.temporary.quantity <= ushort.MaxValue) { items[clicked_id].quantity += a.items.temporary.quantity; a.items.temporary.is_empty = true; a.items.temporary.is_block = false; changed = true; } else { a.items.temporary.quantity = (ushort)(ushort.MaxValue - items[clicked_id].quantity); items[clicked_id].quantity = ushort.MaxValue; changed = true; } } else if (items[clicked_id].is_furniture == a.items.temporary.is_furniture && (items[clicked_id].is_furniture && items[clicked_id].furniture_id == a.items.temporary.furniture_id)) { if (items[clicked_id].quantity + a.items.temporary.quantity <= ushort.MaxValue) { items[clicked_id].quantity += a.items.temporary.quantity; a.items.temporary.is_empty = true; a.items.temporary.is_furniture = false; changed = true; } else { a.items.temporary.quantity = (ushort)(ushort.MaxValue - items[clicked_id].quantity); items[clicked_id].quantity = ushort.MaxValue; changed = true; } } else if (items[clicked_id].is_material == a.items.temporary.is_material && (items[clicked_id].is_material && items[clicked_id].material_id == a.items.temporary.material_id)) { if (items[clicked_id].quantity + a.items.temporary.quantity <= ushort.MaxValue) { items[clicked_id].quantity += a.items.temporary.quantity; a.items.temporary.is_empty = true; a.items.temporary.is_furniture = false; changed = true; } else { a.items.temporary.quantity = (ushort)(ushort.MaxValue - items[clicked_id].quantity); items[clicked_id].quantity = ushort.MaxValue; changed = true; } } else { a.items.temporary = new Cubby(items[clicked_id], a.items.temporary.draw_loc, false, a.items.temporary.info_text); items[clicked_id] = new Cubby(holder, items[clicked_id].draw_loc, true, items[clicked_id].info_text); changed = true; } //} if (changed) { Exilania.network_client.send_changed_chest(furniture_id, clicked_id, items[clicked_id]); } } } }