From b7f2b8f5a79a613d7943c854766136a533c265b7 Mon Sep 17 00:00:00 2001 From: KeyboardCombination Date: Sun, 30 Apr 2023 15:58:10 -0400 Subject: [PATCH] dynamic casting, extra sounds, fixes --- Parts.png | Bin 0 -> 1129 bytes content/sounds/clickfast.wav | Bin 0 -> 460 bytes content/sounds/flashbulb.wav | Bin 0 -> 1140 bytes src/include/Enum.h | 2 +- src/source/Application.cpp | 3 +- src/source/DataModelV2/DataModelInstance.cpp | 4 +-- src/source/DataModelV2/GuiRootInstance.cpp | 12 +++++--- src/source/DataModelV2/PartInstance.cpp | 30 ++++++++++++++++++- src/source/DataModelV2/SoundService.cpp | 24 +++++++++++++++ 9 files changed, 66 insertions(+), 9 deletions(-) create mode 100644 Parts.png create mode 100644 content/sounds/clickfast.wav create mode 100644 content/sounds/flashbulb.wav diff --git a/Parts.png b/Parts.png new file mode 100644 index 0000000000000000000000000000000000000000..6a0cafe0ab5627fbb8f0e5df24170d7e9b8fe2ce GIT binary patch literal 1129 zcmV-v1eW`WP)J&))a2RgE$HwIeeU8sxjY)a5zXSfG~ zfH>Cf@u;whYS{f%&gV0BhD$fWwBvm0o3$XOnEzbMP|pa^7CcRa1AsPlG=MG=KwS`O zDal+qSnBf=ukA$tR|0#p+K%~LfT z(v7qOY3u>I&4Bc{Tz%UeP#>_kANO9y@~HZ z6}DDK%3z60n)(*c)sYw4N%iDMx>5A`1bT_U#v zi2&U+w^m`!aG$_4yG6!WKzmF>-Q||-P7eiTl$+_Ooj|j2z(-aZ#CGePjPIR7JsoMP zK(m}>0L|{x6Z(&UPAx-=Kz=-Z%Qe5g`u;xGHxEy_T4|9+t;GptXgwKo&-yUCQS5n4w zTS%{n{@xPT9~}npB`AC3M-a_*?Lm{;I4^z`_n26Tg6kk^cZzb#$a7ecyIA(yIC+0YEOfwOpuK$|V3mBF@q^aNY#C z0CdgLwAgV)ZRcPxp5?f^j#d`1`8W5lc76KiTcxnEeR`vKtp5Ib zXYgER^7cZ=*V=pc?$n&m9N$=I{!9I{ee^E(G}C_b<(m}clNC2 zK=zP{T1dhGiU`swiAc{XxL8C{$eC>ikgyK!iar({7$V3#!aM=75SVnS2t5z60i{8k z`6%RwhLRA>WylGllws%xoOLOuk`lx)=AO?f#}urlH}Bt$A4q4^wRCDNdpX|8TZ(EL hhO*hP>$Xm|D>jn%F2*!fE$vnmRcl!Q{0D6Q#xwu` literal 0 HcmV?d00001 diff --git a/content/sounds/flashbulb.wav b/content/sounds/flashbulb.wav new file mode 100644 index 0000000000000000000000000000000000000000..5fa553654216c5a4800b1b22c8344af4b80eb52b GIT binary patch literal 1140 zcmYLJO>fgc5OoCyBrcq|lE1)(GX*tLB%p{QxF&6yR8>gb+QnYmyI!xo{-~1FiJ~Y} zRm3kvyjdsdM)vN`yqS6P#>%%&yFGetSw9bd91VWCtyh+19pLx=jb)w#>xDJwow&@TIdbM7!mq4d7Vvc=vIUE@HaO{ahr8*8+$T{;|j|EYjPgf6{$3L?? zl`5ai7xe^jG4njS>v4C1aVD)nsy4RMW+BIW2XbNq;m1tb01Vv~OG% z2$^b~rAkIYz@?tfS4+brk%1pdjp!mx&@B%`=DUtP9y=^fQiPB#f&dC$WGV0Ky2_Pc zo@3iCVKS{jOfcUE?@%h8>*8)w6{x3BFpik#d+s%4b6wB#e8yN1L{g?XM2t?bfF&>%#*5xEkj}^uBbN{q%YlUp)5jg5^c`>>@hFN+#xz6Yd6DN0 z9m+*%wWfh^s7Sry@rXO-DHENS)g8uEm3gMX7woq*C^bq3v>1eBBtpZIlrThbZ@AM& zq_#J6*`Fzlv@pu-0~;$j=!9ZXglec5aU%%uW+`PzZMS5LZX`kP=o~uik`af!pgW_9 zZvq<=WHUe`CYh+v&V_iAyUB@A^h&iG_wKzfxHCNM4eJJPrb8Xkn0Ir2g5m@oa5e=^ zQX>)sCXK0ZgWeJrpE@Vs-{Bvj^QC><`FQ;GHO_}`TkV_k^VZ4L?YQ4M8Vt_QTnC85 T&oAL^k9y8U>%;Bn)Uy5q$9fk( literal 0 HcmV?d00001 diff --git a/src/include/Enum.h b/src/include/Enum.h index 0643d95..62b009c 100644 --- a/src/include/Enum.h +++ b/src/include/Enum.h @@ -37,7 +37,7 @@ namespace Enum enum Value { NoSound = 0, Victory = 1, Boing = 2, Bomb = 3, Ping = 4, Break = 5, Splat = 6, Swoosh = 7, - Snap = 8, Page = 9 + Snap = 8, Page = 9, Click = 10, Clock = 11, Step = 12, StepOn = 13, }; } } \ No newline at end of file diff --git a/src/source/Application.cpp b/src/source/Application.cpp index 2d92505..838adcc 100644 --- a/src/source/Application.cpp +++ b/src/source/Application.cpp @@ -8,6 +8,7 @@ #include "DataModelV2/ImageButtonInstance.h" #include "DataModelV2/DataModelInstance.h" #include "DataModelV2/GuiRootInstance.h" +#include "DataModelV2/SoundService.h" #include "XplicitNgine/XplicitNgine.h" #include "CameraController.h" #include "AudioPlayer.h" @@ -512,7 +513,7 @@ void Application::onMouseWheel(int x,int y,short delta) if (mouseOnScreen==true) if (cameraController.onMouseWheel(x, y, delta)) { - AudioPlayer::playSound(cameraSound); + _dataModel->getSoundService()->playSound(_dataModel->getSoundService()->findFirstChild("Step")); } tool->onMouseScroll(mouse); } diff --git a/src/source/DataModelV2/DataModelInstance.cpp b/src/source/DataModelV2/DataModelInstance.cpp index 8fe3380..5c25dc1 100644 --- a/src/source/DataModelV2/DataModelInstance.cpp +++ b/src/source/DataModelV2/DataModelInstance.cpp @@ -593,7 +593,7 @@ bool DataModelInstance::getOpen() of.lpstrFile = szFile ; of.lpstrFile[0]='\0'; of.nMaxFile=500; - of.lpstrTitle="Hello"; + of.lpstrTitle="Open"; of.Flags = OFN_FILEMUSTEXIST; ShowCursor(TRUE); BOOL file = GetOpenFileName(&of); @@ -616,7 +616,7 @@ bool DataModelInstance::getOpenModel() of.lpstrFile = szFile ; of.lpstrFile[0]='\0'; of.nMaxFile=500; - of.lpstrTitle="Hello"; + of.lpstrTitle="Open"; of.Flags = OFN_FILEMUSTEXIST; ShowCursor(TRUE); BOOL file = GetOpenFileName(&of); diff --git a/src/source/DataModelV2/GuiRootInstance.cpp b/src/source/DataModelV2/GuiRootInstance.cpp index 63e9d2a..6e2f46c 100644 --- a/src/source/DataModelV2/GuiRootInstance.cpp +++ b/src/source/DataModelV2/GuiRootInstance.cpp @@ -6,6 +6,7 @@ #include "DataModelV2/ImageButtonInstance.h" #include "DataModelV2/ToggleImageButtonInstance.h" #include "DataModelV2/GuiRootInstance.h" +#include "DataModelV2/SelectionService.h" #include "DataModelV2/ImageButtonInstance.h" #include "Globals.h" #include "StringFunctions.h" @@ -502,6 +503,9 @@ void GuiRootInstance::update() Instance * obj3 = this->findFirstChild("UnGroup"); Instance * obj4 = this->findFirstChild("Rotate"); Instance * obj5 = this->findFirstChild("Tilt"); + + SelectionService* SelectionSvc = g_dataModel->getSelectionService(); + if(obj != NULL && obj2 != NULL && obj3 != NULL && obj4 !=NULL && obj5 != NULL && obj6 != NULL) { BaseButtonInstance* button = (BaseButtonInstance*)obj; @@ -516,8 +520,8 @@ void GuiRootInstance::update() button4->disabled = true; button5->disabled = true; button6->disabled = true; - for(size_t i = 0; i < g_dataModel->getSelectionService()->getSelection().size(); i++) - if(g_dataModel->getSelectionService()->getSelection()[i]->canDelete) + for(size_t i = 0; i < SelectionSvc->getSelection().size(); i++) + if(SelectionSvc->getSelection()[i]->canDelete) { button->disabled = false; button4->disabled = false; @@ -525,11 +529,11 @@ void GuiRootInstance::update() button6->disabled = false; - if (g_dataModel->getSelectionService()->getSelection().size() > 1){ + if (SelectionSvc->getSelection().size() > 1){ button2->disabled = false; } - if (g_dataModel->getSelectionService()->getSelection()[i]->getClassName() == "GroupInstance"){ + if (dynamic_cast(SelectionSvc->getSelection()[i])){ button3->disabled = false; } diff --git a/src/source/DataModelV2/PartInstance.cpp b/src/source/DataModelV2/PartInstance.cpp index 8463f2b..fce479e 100644 --- a/src/source/DataModelV2/PartInstance.cpp +++ b/src/source/DataModelV2/PartInstance.cpp @@ -495,6 +495,14 @@ static TCHAR* strSoundType(int option) return "Swoosh"; case Enum::Sound::Page: return "Page"; + case Enum::Sound::Click: + return "Click"; + case Enum::Sound::Clock: + return "Clock"; + case Enum::Sound::Step: + return "Step"; + case Enum::Sound::StepOn: + return "StepOn"; } return "NoSound"; } @@ -521,6 +529,14 @@ static Enum::Sound::Value EnumOnTouchSoundType(TCHAR* option) return Enum::Sound::Ping; if(strcmp("Snap", option) == 0) return Enum::Sound::Snap; + if(strcmp("Click", option) == 0) + return Enum::Sound::Click; + if(strcmp("Clock", option) == 0) + return Enum::Sound::Clock; + if(strcmp("Step", option) == 0) + return Enum::Sound::Step; + if(strcmp("StepOn", option) == 0) + return Enum::Sound::StepOn; return Enum::Sound::NoSound; } @@ -585,6 +601,18 @@ void PartInstance::onTouch() case Enum::Sound::Swoosh: sndService->playSound(sndService->findFirstChild("Swoosh")); break; + case Enum::Sound::Click: + sndService->playSound(sndService->findFirstChild("Click")); + break; + case Enum::Sound::Clock: + sndService->playSound(sndService->findFirstChild("Clock")); + break; + case Enum::Sound::Step: + sndService->playSound(sndService->findFirstChild("Step")); + break; + case Enum::Sound::StepOn: + sndService->playSound(sndService->findFirstChild("StepOn")); + break; } } @@ -728,7 +756,7 @@ std::vector PartInstance::getProperties() "What sound plays when touched", (LPARAM)strSoundType(OnTouchSound), PIT_COMBO, - TEXT("NoSound\0Victory\0Boing\0Break\0Snap\0Bomb\0Splat\0Page\0Ping\0Swoosh\0") + TEXT("NoSound\0Victory\0Boing\0Break\0Snap\0Bomb\0Splat\0Page\0Ping\0Swoosh\0Click\0Clock\0Step\0StepOn") )); sprintf_s(changeScoreTxt, "%d", changeScore); diff --git a/src/source/DataModelV2/SoundService.cpp b/src/source/DataModelV2/SoundService.cpp index bd26307..7a6b3b8 100644 --- a/src/source/DataModelV2/SoundService.cpp +++ b/src/source/DataModelV2/SoundService.cpp @@ -67,6 +67,30 @@ SoundService::SoundService() stockSound->setName("Page"); stockSound->setSoundId("/content/sounds/pageturn.wav"); stockSound->setParent(this); + + // Click + stockSound = new SoundInstance(); + stockSound->setName("Click"); + stockSound->setSoundId("/content/sounds/switch.wav"); + stockSound->setParent(this); + + // Clock + stockSound = new SoundInstance(); + stockSound->setName("Clock"); + stockSound->setSoundId("/content/sounds/clickfast.wav"); + stockSound->setParent(this); + + // Step + stockSound = new SoundInstance(); + stockSound->setName("Step"); + stockSound->setSoundId("/content/sounds/SWITCH3.wav"); + stockSound->setParent(this); + + // StepOn + stockSound = new SoundInstance(); + stockSound->setName("StepOn"); + stockSound->setSoundId("/content/sounds/flashbulb.wav"); + stockSound->setParent(this); } SoundService::~SoundService(void)