mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-28 17:56:37 +00:00 
			
		
		
		
	Merge remote branch 'werdanith/activationsounds' into next
This commit is contained in:
		
						commit
						2c20aeab90
					
				
					 3 changed files with 60 additions and 1 deletions
				
			
		|  | @ -6,11 +6,15 @@ | |||
| #include <components/esm_store/cell_store.hpp> | ||||
| 
 | ||||
| #include "../mwworld/ptr.hpp" | ||||
| #include "../mwworld/nullaction.hpp" | ||||
| #include "../mwworld/containerstore.hpp" | ||||
| #include "../mwworld/customdata.hpp" | ||||
| #include "../mwworld/environment.hpp" | ||||
| 
 | ||||
| #include "../mwrender/objects.hpp" | ||||
| 
 | ||||
| #include "../mwsound/soundmanager.hpp" | ||||
| 
 | ||||
| namespace | ||||
| { | ||||
|     struct CustomData : public MWWorld::CustomData | ||||
|  | @ -71,6 +75,38 @@ namespace MWClass | |||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     boost::shared_ptr<MWWorld::Action> Container::activate (const MWWorld::Ptr& ptr, | ||||
|         const MWWorld::Ptr& actor, const MWWorld::Environment& environment) const | ||||
|     { | ||||
|         const std::string lockedSound = "LockedChest"; | ||||
|         const std::string trapActivationSound = "Disarm Trap Fail"; | ||||
| 
 | ||||
|         if (ptr.getCellRef().lockLevel>0) | ||||
|         { | ||||
|             // TODO check for key
 | ||||
|             std::cout << "Locked container" << std::endl; | ||||
|             environment.mSoundManager->playSound(lockedSound, 1.0, 1.0); | ||||
|             return boost::shared_ptr<MWWorld::Action> (new MWWorld::NullAction); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             std::cout << "Unlocked container" << std::endl; | ||||
|             if(ptr.getCellRef().trap.empty()) | ||||
|             { | ||||
|                 // Not trapped, Inventory GUI goes here
 | ||||
|                 return boost::shared_ptr<MWWorld::Action> (new MWWorld::NullAction); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 // Trap activation goes here
 | ||||
|                 std::cout << "Activated trap: " << ptr.getCellRef().trap << std::endl; | ||||
|                 environment.mSoundManager->playSound(trapActivationSound, 1.0, 1.0); | ||||
|                 ptr.getCellRef().trap = ""; | ||||
|                 return boost::shared_ptr<MWWorld::Action> (new MWWorld::NullAction); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     std::string Container::getName (const MWWorld::Ptr& ptr) const | ||||
|     { | ||||
|         ESMS::LiveCellRef<ESM::Container, MWWorld::RefData> *ref = | ||||
|  |  | |||
|  | @ -20,6 +20,10 @@ namespace MWClass | |||
|             ///< \return name (the one that is to be presented to the user; not the internal one);
 | ||||
|             /// can return an empty string.
 | ||||
| 
 | ||||
|             virtual boost::shared_ptr<MWWorld::Action> activate (const MWWorld::Ptr& ptr, | ||||
|                 const MWWorld::Ptr& actor, const MWWorld::Environment& environment) const; | ||||
|             ///< Generate action for activation
 | ||||
| 
 | ||||
|             virtual MWWorld::ContainerStore& getContainerStore (const MWWorld::Ptr& ptr) const; | ||||
|             ///< Return container store
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -14,6 +14,8 @@ | |||
| 
 | ||||
| #include "../mwrender/objects.hpp" | ||||
| 
 | ||||
| #include "../mwsound/soundmanager.hpp" | ||||
| 
 | ||||
| namespace MWClass | ||||
| { | ||||
|     void Door::insertObjectRendering (const MWWorld::Ptr& ptr, MWRender::RenderingInterface& renderingInterface) const | ||||
|  | @ -61,15 +63,28 @@ namespace MWClass | |||
|         ESMS::LiveCellRef<ESM::Door, MWWorld::RefData> *ref = | ||||
|             ptr.get<ESM::Door>(); | ||||
| 
 | ||||
|         const std::string &openSound = ref->base->openSound; | ||||
|         //const std::string &closeSound = ref->base->closeSound;
 | ||||
|         const std::string lockedSound = "LockedDoor"; | ||||
|         const std::string trapActivationSound = "Disarm Trap Fail"; | ||||
| 
 | ||||
|         if (ptr.getCellRef().lockLevel>0) | ||||
|         { | ||||
|             // TODO check for key
 | ||||
|             // TODO report failure to player (message, sound?). Look up behaviour of original MW.
 | ||||
|             std::cout << "Locked!" << std::endl; | ||||
|             environment.mSoundManager->playSound(lockedSound, 1.0, 1.0); | ||||
|             return boost::shared_ptr<MWWorld::Action> (new MWWorld::NullAction); | ||||
|         } | ||||
| 
 | ||||
|         // TODO check trap
 | ||||
|         if(!ptr.getCellRef().trap.empty()) | ||||
|         { | ||||
|             // Trap activation
 | ||||
|             std::cout << "Activated trap: " << ptr.getCellRef().trap << std::endl; | ||||
|             environment.mSoundManager->playSound(trapActivationSound, 1.0, 1.0); | ||||
|             ptr.getCellRef().trap = ""; | ||||
|             return boost::shared_ptr<MWWorld::Action> (new MWWorld::NullAction); | ||||
|         } | ||||
| 
 | ||||
|         if (ref->ref.teleport) | ||||
|         { | ||||
|  | @ -77,6 +92,7 @@ namespace MWClass | |||
|             if (environment.mWorld->getPlayer().getPlayer()==actor) | ||||
|             { | ||||
|                 // the player is using the door
 | ||||
|                 environment.mSoundManager->playSound(openSound, 1.0, 1.0); | ||||
|                 return boost::shared_ptr<MWWorld::Action> ( | ||||
|                     new MWWorld::ActionTeleportPlayer (ref->ref.destCell, ref->ref.doorDest)); | ||||
|             } | ||||
|  | @ -91,6 +107,9 @@ namespace MWClass | |||
|         { | ||||
|             // animated door
 | ||||
|             // TODO return action for rotating the door
 | ||||
| 
 | ||||
|             // This is a little pointless, but helps with testing
 | ||||
|             environment.mSoundManager->playSound(openSound, 1.0, 1.0); | ||||
|             return boost::shared_ptr<MWWorld::Action> (new MWWorld::NullAction); | ||||
|         } | ||||
|     } | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue