Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using prjMango.Game.Pathfinding;
- using prjMango.Storage.MySql;
- using prjMango.Messages;
- using prjMango.Game.Rooms;
- using prjMango.Game.Items.Interactors;
- namespace prjMango.Game.Items
- {
- class RoomItem
- {
- public int Id;
- public int BaseItem;
- public string ExtraData;
- public int X;
- public int Y;
- public Double Z;
- public int Rot;
- public string WallPos;
- public bool UpdateNeeded;
- public int UpdateCounter;
- public int InteractingUser;
- public int InteractingUser2;
- private Room Room;
- private Item Item;
- public Coord Coordinate
- {
- get
- {
- return new Coord(X, Y);
- }
- }
- public double TotalHeight
- {
- get
- {
- return Z + GetBaseItem().Height;
- }
- }
- public bool IsWallItem
- {
- get
- {
- if (GetBaseItem().Type.ToLower() == "i")
- {
- return true;
- }
- return false;
- }
- }
- public bool IsFloorItem
- {
- get
- {
- if (GetBaseItem().Type.ToLower() == "s")
- {
- return true;
- }
- return false;
- }
- }
- public Coord SquareInFront
- {
- get
- {
- Coord Sq = new Coord(X, Y);
- if (Rot == 0)
- {
- Sq.y--;
- }
- else if (Rot == 2)
- {
- Sq.x++;
- }
- else if (Rot == 4)
- {
- Sq.y++;
- }
- else if (Rot == 6)
- {
- Sq.x--;
- }
- return Sq;
- }
- }
- public Coord SquareBehind
- {
- get
- {
- Coord Sq = new Coord(X, Y);
- if (Rot == 0)
- {
- Sq.y++;
- }
- else if (Rot == 2)
- {
- Sq.x--;
- }
- else if (Rot == 4)
- {
- Sq.y--;
- }
- else if (Rot == 6)
- {
- Sq.x++;
- }
- return Sq;
- }
- }
- public Interactor Interactor
- {
- get
- {
- switch (GetBaseItem().InteractionType.ToLower())
- {
- case "teleport":
- return new InteractorTeleport();
- case "bottle":
- return new InteractorSpinningBottle();
- case "dice":
- return new InteractorDice();
- case "habbowheel":
- return new InteractorWheel();
- case "loveshuffler":
- return new InteractorLoveShuffle();
- case "onewaygate":
- return new InteractorOneWayGate();
- case "alert":
- return new InteractorAlert();
- case "vendingmachine":
- return new InteractorVendor();
- case "gate":
- return new InteractorGate(GetBaseItem().Modes);
- case "scoreboard":
- return new InteractorScoreboard();
- case "default":
- default:
- return new InteractorGenericSwitch(GetBaseItem().Modes);
- }
- }
- }
- public RoomItem(int Id, int BaseItem, string ExtraData, int X, int Y, Double Z, int Rot, string WallPos, Room Room)
- {
- this.Id = Id;
- this.BaseItem = BaseItem;
- this.ExtraData = ExtraData;
- this.X = X;
- this.Y = Y;
- this.Z = Z;
- this.Rot = Rot;
- this.WallPos = WallPos;
- this.UpdateNeeded = false;
- this.UpdateCounter = 0;
- this.InteractingUser = 0;
- this.InteractingUser2 = 0;
- this.Room = Room;
- this.Item = MangoServer.GetGame().GetItemManager().GetItem(BaseItem);
- switch (GetBaseItem().InteractionType.ToLower())
- {
- case "teleport":
- ReqUpdate(0);
- break;
- }
- }
- public void ProcessUpdates()
- {
- }
- public void ReqUpdate(int Cycles)
- {
- this.UpdateCounter = Cycles;
- this.UpdateNeeded = true;
- }
- public void UpdateState()
- {
- UpdateState(true, true);
- }
- public void UpdateState(bool inDb, bool inRoom)
- {
- if (inDb)
- {
- using (SqlConnection SqlClient = MangoServer.GetSqlManager().GetConnection())
- {
- SqlClient.AddParamWithValue("extra_data", this.ExtraData);
- SqlClient.RunQuery("UPDATE rooms_items SET extra_data = @extra_data WHERE id = '" + Id + "' LIMIT 1");
- }
- }
- if (inRoom)
- {
- ServerMessage Message = new ServerMessage();
- if (IsFloorItem)
- {
- Message.Init(88);
- Message.AppendStringWithBreak(Id.ToString());
- Message.AppendStringWithBreak(ExtraData);
- }
- else
- {
- Message.Init(85);
- Serialize(Message);
- }
- GetRoom().SendMessage(Message);
- }
- }
- public void Serialize(ServerMessage Message)
- {
- // AU33614959XEP:w=3,11 l=31,83 l0
- // A]r|ebuAQsPAQAJ0.0q|ebuA0MC[!`A
- if (IsFloorItem)
- {
- Message.AppendInt32(Id);
- Message.AppendInt32(GetBaseItem().SpriteId);
- Message.AppendInt32(X);
- Message.AppendInt32(Y);
- Message.AppendInt32(Rot);
- Message.AppendStringWithBreak(Z.ToString().Replace(',', '.'));
- Message.AppendInt32(0);
- Message.AppendStringWithBreak(ExtraData);
- Message.AppendInt32(-1);
- }
- else if (IsWallItem)
- {
- Message.AppendStringWithBreak(Id + "");
- Message.AppendInt32(GetBaseItem().SpriteId);
- Message.AppendStringWithBreak(WallPos);
- switch (GetBaseItem().InteractionType.ToLower())
- {
- case "postit":
- Message.AppendStringWithBreak(ExtraData.Split(' ')[0]);
- break;
- default:
- Message.AppendStringWithBreak(ExtraData);
- break;
- }
- }
- }
- public Item GetBaseItem()
- {
- return this.Item;
- }
- public Room GetRoom()
- {
- return this.Room;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement