Advertisement
Guest User

Untitled

a guest
May 23rd, 2015
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.40 KB | None | 0 0
  1. /*
  2.  * ArmorObjectMenuComponent.cpp
  3.  *
  4.  *  Created on: 2/4/2013
  5.  *      Author: bluree
  6.  *      Credits: TA & Valk
  7.  */
  8.  
  9. #include "server/zone/objects/creature/CreatureObject.h"
  10. #include "server/zone/objects/player/PlayerObject.h"
  11. #include "server/zone/objects/building/BuildingObject.h"
  12. #include "server/zone/objects/player/sui/colorbox/SuiColorBox.h"
  13. #include "ArmorObjectMenuComponent.h"
  14. #include "server/zone/objects/scene/components/ObjectMenuComponent.h"
  15. #include "server/zone/packets/object/ObjectMenuResponse.h"
  16. #include "server/zone/managers/objectcontroller/ObjectController.h"
  17. #include "server/zone/objects/player/sui/SuiCallback.h"
  18. #include "server/zone/objects/player/sui/callbacks/ColorArmorSuiCallback.h"
  19. #include "server/zone/Zone.h"
  20. #include "server/zone/ZoneServer.h"
  21. #include "server/zone/templates/customization/AssetCustomizationManagerTemplate.h"
  22.  
  23. void ArmorObjectMenuComponent::fillObjectMenuResponse(SceneObject* sceneObject, ObjectMenuResponse* menuResponse, CreatureObject* player) {
  24.  
  25.     if (!sceneObject->isWearableObject())
  26.         return;
  27.  
  28.     ManagedReference<SceneObject*> parent = sceneObject->getParent().get();
  29.  
  30.     if (parent != NULL && parent->isCellObject()) {
  31.         ManagedReference<SceneObject*> obj = parent->getParent().get();
  32.  
  33.         if (obj != NULL && obj->isBuildingObject()) {
  34.             ManagedReference<BuildingObject*> buio = cast<BuildingObject*>(obj.get());
  35.  
  36.             if (!buio->isOnAdminList(player))
  37.                 return;
  38.         }
  39.     }
  40.     else
  41.     {
  42.         if (!sceneObject->isASubChildOf(player))
  43.             return;
  44.     }
  45.  
  46.     String text = "Color Change";
  47.     menuResponse->addRadialMenuItem(81, 3, text);
  48.    
  49.     WearableObjectMenuComponent::fillObjectMenuResponse(sceneObject, menuResponse, player);    
  50. }
  51.  
  52. int ArmorObjectMenuComponent::handleObjectMenuSelect(SceneObject* sceneObject, CreatureObject* player, byte selectedID) {
  53.  
  54.     if (selectedID == 81) {
  55.        
  56.         ManagedReference<SceneObject*> parent = sceneObject->getParent().get();
  57.    
  58.         if (parent == NULL)
  59.             return 0;
  60.    
  61.         if (parent->isPlayerCreature()) {
  62.             player->sendSystemMessage("@armor_rehue:equipped");
  63.             return 0;
  64.         }  
  65.  
  66.         if (parent->isCellObject()) {
  67.             ManagedReference<SceneObject*> obj = parent->getParent().get();
  68.  
  69.             if (obj != NULL && obj->isBuildingObject()) {
  70.                 ManagedReference<BuildingObject*> buio = cast<BuildingObject*>(obj.get());
  71.  
  72.                 if (!buio->isOnAdminList(player))
  73.                     return 0;
  74.             }
  75.         }
  76.         else
  77.         {
  78.             if (!sceneObject->isASubChildOf(player))
  79.                 return 0;
  80.         }
  81.  
  82.         ZoneServer* server = player->getZoneServer();
  83.  
  84.         if (server != NULL) {      
  85.  
  86.         // The color index.
  87.         String appearanceFilename = sceneObject->getObjectTemplate()->getAppearanceFilename();
  88.         VectorMap<String, Reference<CustomizationVariable*> > variables;
  89.         AssetCustomizationManagerTemplate::instance()->getCustomizationVariables(appearanceFilename.hashCode(), variables, false);
  90.  
  91.         // The Sui Box.
  92.         ManagedReference<SuiColorBox*> cbox = new SuiColorBox(player, SuiWindowType::COLOR_ARMOR);
  93.         cbox->setCallback(new ColorArmorSuiCallback(server));
  94.         cbox->setColorPalette(variables.elementAt(1).getKey()); // First one seems to be the frame of it? Skip to 2nd.
  95.         cbox->setUsingObject(sceneObject);
  96.  
  97.         // Add to player.
  98.         ManagedReference<PlayerObject*> ghost = player->getPlayerObject();
  99.         ghost->addSuiBox(cbox);
  100.         player->sendMessage(cbox->generateMessage());
  101.         }
  102.  
  103.     }
  104.    
  105.     return WearableObjectMenuComponent::handleObjectMenuSelect(sceneObject, player, selectedID);
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement