/* EQ2Emulator: Everquest II Server Emulator Copyright (C) 2007 EQ2EMulator Development Team (http://www.eq2emulator.net) This file is part of EQ2Emulator. EQ2Emulator is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. EQ2Emulator is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with EQ2Emulator. If not, see . */ #ifndef __EQ2_WIDGET__ #define __EQ2_WIDGET__ #include "Spawn.h" #include "client.h" #include using namespace std; #define WIDGET_TYPE_GENERIC 0 #define WIDGET_TYPE_DOOR 1 #define WIDGET_TYPE_LIFT 2 class Widget : public Spawn{ public: Widget(); virtual ~Widget(); bool IsWidget(){ return true; } int32 GetWidgetID(); void SetWidgetID(int32 val); void SetWidgetX(float val); float GetWidgetX(); void SetWidgetY(float val); float GetWidgetY(); void SetWidgetZ(float val); float GetWidgetZ(); void SetIncludeLocation(bool val); bool GetIncludeLocation(); void SetIncludeHeading(bool val); bool GetIncludeHeading(); void SetWidgetIcon(int8 val); Widget* Copy(); EQ2Packet* serialize(Player* player, int16 version); void HandleTimerUpdate(); void OpenDoor(); void CloseDoor(); void HandleUse(Client* client, string command, int8 overrideWidgetType=0xFF); float GetOpenHeading(); void SetOpenHeading(float val); float GetClosedHeading(); void SetClosedHeading(float val); float GetOpenY(); void SetOpenY(float val); float GetCloseY(); void SetCloseY(float val); float GetOpenX(){return open_x;} float GetOpenZ(){return open_z;} float GetCloseX(){return close_x;} float GetCloseZ(){return close_z;} void SetOpenX(float x){open_x = x;} void SetOpenZ(float z){open_z = z;} void SetCloseX(float x){close_x = x;} void SetCloseZ(float z){close_z = z;} int8 GetWidgetType(); void SetWidgetType(int8 val); bool IsOpen(); int32 GetActionSpawnID(); void SetActionSpawnID(int32 id); int32 GetLinkedSpawnID(); void SetLinkedSpawnID(int32 id); const char* GetOpenSound(); void SetOpenSound(const char* name); const char* GetCloseSound(); void SetCloseSound(const char* name); void SetOpenDuration(int16 val); int16 GetOpenDuration(); void ProcessUse(); void SetHouseID(int32 val) { m_houseID = val; } int32 GetHouseID() { return m_houseID; } void SetMultiFloorLift(bool val) { multi_floor_lift = val; } bool GetMultiFloorLift() { return multi_floor_lift; } static string GetWidgetTypeNameByTypeID(int8 type) { switch (type) { case WIDGET_TYPE_DOOR: return string("Door"); break; case WIDGET_TYPE_LIFT: return string("Lift"); break; } return string("Generic"); } private: int8 widget_type; bool include_location; bool include_heading; float widget_x; float widget_y; float widget_z; int32 widget_id; float open_heading; float closed_heading; float open_y; float close_y; Widget* action_spawn; int32 action_spawn_id; Widget* linked_spawn; int32 linked_spawn_id; bool is_open; string open_sound; string close_sound; int16 open_duration; int32 m_houseID; float open_x; float open_z; float close_x; float close_z; bool multi_floor_lift; }; #endif