Esempio n. 1
0
        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);
        }
Esempio n. 2
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);
        }
Esempio n. 3
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);
        }
Esempio n. 4
0
        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;
                }
            }
        }
Esempio n. 5
0
        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);
                }
            }
        }
Esempio n. 6
0
 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]);
             }
         }
     }
 }