From a33894f70a49c686dfca36362ee49eb9e984c0b3 Mon Sep 17 00:00:00 2001 From: Mino Date: Sat, 10 Mar 2018 00:06:44 +0900 Subject: [PATCH] Add a qte event command --- .../DebugCommand/DebugCommandHandler.cpp | 31 +++++++++++++++++++ .../sapphire_zone/Zone/InstanceContent.cpp | 28 +++++++++++++++++ .../sapphire_zone/Zone/InstanceContent.h | 4 +++ 3 files changed, 63 insertions(+) diff --git a/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp b/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp index 3051e091..0aaa4e7f 100644 --- a/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp +++ b/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp @@ -792,4 +792,35 @@ void Core::DebugCommandHandler::instance( char* data, Entity::Player &player, bo player.getCurrentZone()->setCurrentFestival( 0 ); } + else if ( subCommand == "qte_start" ) + { + auto instance = boost::dynamic_pointer_cast< InstanceContent >( player.getCurrentZone() ); + if ( !instance ) + return; + + player.sendDebug( "qte start" ); + instance->startQte(); + } + else if ( subCommand == "event_start" ) + { + auto instance = boost::dynamic_pointer_cast< InstanceContent >( player.getCurrentZone() ); + if ( !instance ) + return; + + player.sendDebug( "evt start" ); + instance->startEventCutscene(); + } + else if ( subCommand == "event_end" ) + { + auto instance = boost::dynamic_pointer_cast< InstanceContent >( player.getCurrentZone() ); + if ( !instance ) + return; + + player.sendDebug( "evt end" ); + instance->endEventCutscene(); + } + else + { + player.sendDebug( "Unknown sub command." ); + } } diff --git a/src/servers/sapphire_zone/Zone/InstanceContent.cpp b/src/servers/sapphire_zone/Zone/InstanceContent.cpp index aaac6a62..af90f57d 100644 --- a/src/servers/sapphire_zone/Zone/InstanceContent.cpp +++ b/src/servers/sapphire_zone/Zone/InstanceContent.cpp @@ -271,6 +271,34 @@ void Core::InstanceContent::setBranch( uint8_t value ) } } +void Core::InstanceContent::startQte() +{ + for ( const auto& playerIt : m_playerMap ) + { + auto player = playerIt.second; + player->queuePacket( ActorControlPacket143( player->getId(), DirectorUpdate, getDirectorId(), 0x8000000A ) ); + } +} + +void Core::InstanceContent::startEventCutscene() +{ + // TODO: lock player movement + for ( const auto& playerIt : m_playerMap ) + { + auto player = playerIt.second; + player->queuePacket( ActorControlPacket143( player->getId(), DirectorUpdate, getDirectorId(), 0x80000008 ) ); + } +} + +void Core::InstanceContent::endEventCutscene() +{ + for ( const auto& playerIt : m_playerMap ) + { + auto player = playerIt.second; + player->queuePacket( ActorControlPacket143( player->getId(), DirectorUpdate, getDirectorId(), 0x80000009 ) ); + } +} + void Core::InstanceContent::onRegisterEObj( Entity::EventObjectPtr object ) { if( object->getName() != "none" ) diff --git a/src/servers/sapphire_zone/Zone/InstanceContent.h b/src/servers/sapphire_zone/Zone/InstanceContent.h index 0dad9d5c..8ed28c71 100644 --- a/src/servers/sapphire_zone/Zone/InstanceContent.h +++ b/src/servers/sapphire_zone/Zone/InstanceContent.h @@ -46,6 +46,10 @@ public: void setSequence( uint8_t value ); void setBranch( uint8_t value ); + void startQte(); + void startEventCutscene(); + void endEventCutscene(); + boost::shared_ptr< Core::Data::InstanceContent > getInstanceContentInfo() const; uint32_t getInstanceContentId() const;