@@ -1808,8 +1808,10 @@ void LvlItemProperties::on_PROPS_NPCDirLeft_clicked()
18081808 {
18091809 if ((item->data (ITEM_TYPE).toString () == " NPC" )/* &&((item->data(2).toInt()==npcPtr))*/ )
18101810 {
1811- selData.npc .push_back (((ItemNPC *)item)->m_data );
1812- ((ItemNPC *)item)->changeDirection (-1 );
1811+ ItemNPC *npc = qgraphicsitem_cast<ItemNPC *>(item);
1812+ Q_ASSERT (npc);
1813+ selData.npc .push_back (npc->m_data );
1814+ npc->changeDirection (-1 );
18131815 // break;
18141816 }
18151817 }
@@ -1840,9 +1842,10 @@ void LvlItemProperties::on_PROPS_NPCDirRand_clicked()
18401842 {
18411843 if ((item->data (ITEM_TYPE).toString () == " NPC" )/* &&((item->data(2).toInt()==npcPtr))*/ )
18421844 {
1843- selData.npc .push_back (((ItemNPC *)item)->m_data );
1844- ((ItemNPC *)item)->changeDirection (0 );
1845-
1845+ ItemNPC *npc = qgraphicsitem_cast<ItemNPC *>(item);
1846+ Q_ASSERT (npc);
1847+ selData.npc .push_back (npc->m_data );
1848+ npc->changeDirection (0 );
18461849 // break;
18471850 }
18481851 }
@@ -1872,8 +1875,10 @@ void LvlItemProperties::on_PROPS_NPCDirRight_clicked()
18721875 {
18731876 if ((item->data (ITEM_TYPE).toString () == " NPC" )/* &&((item->data(2).toInt()==npcPtr))*/ )
18741877 {
1875- selData.npc .push_back (((ItemNPC *)item)->m_data );
1876- ((ItemNPC *)item)->changeDirection (1 );
1878+ ItemNPC *npc = qgraphicsitem_cast<ItemNPC *>(item);
1879+ Q_ASSERT (npc);
1880+ selData.npc .push_back (npc->m_data );
1881+ npc->changeDirection (1 );
18771882 // break;
18781883 }
18791884 }
@@ -1901,8 +1906,10 @@ void LvlItemProperties::on_PROPS_NpcFri_clicked(bool checked)
19011906 {
19021907 if ((item->data (ITEM_TYPE).toString () == " NPC" )/* &&((item->data(2).toInt()==npcPtr))*/ )
19031908 {
1904- selData.npc .push_back (((ItemNPC *)item)->m_data );
1905- ((ItemNPC *)item)->setFriendly (checked);
1909+ ItemNPC *npc = qgraphicsitem_cast<ItemNPC *>(item);
1910+ Q_ASSERT (npc);
1911+ selData.npc .push_back (npc->m_data );
1912+ npc->setFriendly (checked);
19061913 // break;
19071914 }
19081915 }
@@ -1931,8 +1938,10 @@ void LvlItemProperties::on_PROPS_NPCNoMove_clicked(bool checked)
19311938 {
19321939 if ((item->data (ITEM_TYPE).toString () == " NPC" )/* &&((item->data(2).toInt()==npcPtr))*/ )
19331940 {
1934- selData.npc .push_back (((ItemNPC *)item)->m_data );
1935- ((ItemNPC *)item)->setNoMovable (checked);
1941+ ItemNPC *npc = qgraphicsitem_cast<ItemNPC *>(item);
1942+ Q_ASSERT (npc);
1943+ selData.npc .push_back (npc->m_data );
1944+ npc->setNoMovable (checked);
19361945 // break;
19371946 }
19381947 }
@@ -1961,8 +1970,10 @@ void LvlItemProperties::on_PROPS_NpcBoss_clicked(bool checked)
19611970 {
19621971 if ((item->data (ITEM_TYPE).toString () == " NPC" )/* &&((item->data(2).toInt()==npcPtr))*/ )
19631972 {
1964- selData.npc .push_back (((ItemNPC *)item)->m_data );
1965- ((ItemNPC *)item)->setLegacyBoss (checked);
1973+ ItemNPC *npc = qgraphicsitem_cast<ItemNPC *>(item);
1974+ Q_ASSERT (npc);
1975+ selData.npc .push_back (npc->m_data );
1976+ npc->setLegacyBoss (checked);
19661977 // break;
19671978 }
19681979 }
@@ -2070,7 +2081,9 @@ void LvlItemProperties::on_PROPS_NPCSpecialSpin_valueChanged(int arg1)
20702081 {
20712082 if (item->data (ITEM_TYPE).toString () == " NPC" )
20722083 {
2073- LevelNPC npc = ((ItemNPC *)item)->m_data ;
2084+ ItemNPC *npcI = qgraphicsitem_cast<ItemNPC *>(item);
2085+ Q_ASSERT (npcI);
2086+ LevelNPC npc = npcI->m_data ;
20742087
20752088 // Inherit preferences from contained NPC if this NPC a container
20762089 obj_npc &t_npc = getNpcProps (npc, mw ());
@@ -2081,9 +2094,9 @@ void LvlItemProperties::on_PROPS_NPCSpecialSpin_valueChanged(int arg1)
20812094 if (t_npc.setup .special_spin_value_offset != m_npcSpecSpinOffset) // wrong offset, go to next one
20822095 continue ;
20832096
2084- selData.npc .push_back (((ItemNPC *)item) ->m_data );
2085- ((ItemNPC *)item) ->m_data .special_data = arg1 - m_npcSpecSpinOffset;
2086- ((ItemNPC *)item) ->arrayApply ();
2097+ selData.npc .push_back (npcI ->m_data );
2098+ npcI ->m_data .special_data = arg1 - m_npcSpecSpinOffset;
2099+ npcI ->arrayApply ();
20872100 }
20882101 }
20892102 edit->scene ->m_history ->addChangeSettings (selData, HistorySettings::SETTING_SPECIAL_DATA, QVariant (arg1 - m_npcSpecSpinOffset));
@@ -2175,7 +2188,8 @@ void LvlItemProperties::processNpcContainerButton(QPushButton *btn)
21752188 {
21762189 if ((item->data (ITEM_TYPE).toString () == " NPC" )/* &&((item->data(ITEM_ARRAY_ID).toInt()==blockPtr))*/ )
21772190 {
2178- ItemNPC *npcI = ((ItemNPC *)item);
2191+ ItemNPC *npcI = qgraphicsitem_cast<ItemNPC*>(item);
2192+ Q_ASSERT (npcI);
21792193 selData.npc .push_back (npcI->m_data );
21802194 if (ui->PROPS_NPCContaiter == btn)
21812195 npcI->setIncludedNPC (selected_npc);
@@ -2234,17 +2248,19 @@ void LvlItemProperties::on_PROPS_NPCSpecialBox_currentIndexChanged(int index)
22342248 {
22352249 if (item->data (ITEM_TYPE).toString () == " NPC" )
22362250 {
2237- LevelNPC npc = ((ItemNPC *)item)->m_data ;
2251+ ItemNPC *npcI = qgraphicsitem_cast<ItemNPC*>(item);
2252+ Q_ASSERT (npcI);
2253+ LevelNPC npc = npcI->m_data ;
22382254
22392255 // Inherit preferences from contained NPC if this NPC a container
22402256 obj_npc &t_npc = getNpcProps (npc, mw ());
22412257
22422258 if (t_npc.setup .special_type != 0 ) // wrong type, go to next one
22432259 continue ;
22442260
2245- selData.npc .push_back (((ItemNPC *)item) ->m_data );
2246- ((ItemNPC *)item) ->m_data .special_data = index;
2247- ((ItemNPC *)item) ->arrayApply ();
2261+ selData.npc .push_back (npcI ->m_data );
2262+ npcI ->m_data .special_data = index;
2263+ npcI ->arrayApply ();
22482264 }
22492265 }
22502266 edit->scene ->m_history ->addChangeSettings (selData, HistorySettings::SETTING_SPECIAL_DATA, QVariant (index));
@@ -2317,9 +2333,11 @@ void LvlItemProperties::on_PROPS_NPCGenType_currentIndexChanged(int index)
23172333 {
23182334 if (item->data (ITEM_TYPE).toString () == " NPC" )
23192335 {
2320- modData.npc .push_back (((ItemNPC *)item)->m_data );
2321- ((ItemNPC *)item)->setGenerator (((ItemNPC *)item)->m_data .generator ,
2322- ((ItemNPC *)item)->m_data .generator_direct ,
2336+ ItemNPC *npc = qgraphicsitem_cast<ItemNPC*>(item);
2337+ Q_ASSERT (npc);
2338+ modData.npc .push_back (npc->m_data );
2339+ npc->setGenerator (npc->m_data .generator ,
2340+ npc->m_data .generator_direct ,
23232341 index + 1
23242342 );
23252343 }
@@ -2411,10 +2429,11 @@ void LvlItemProperties::on_PROPS_NpcLayer_currentIndexChanged(int arg1i)
24112429 edit->LvlData .meta .modified = true ;
24122430 for (QGraphicsItem *item : items)
24132431 {
2432+ ItemNPC *npc = qgraphicsitem_cast<ItemNPC *>(item);
24142433 if (item->data (ITEM_TYPE).toString () == " NPC" )
24152434 {
2416- modData.npc .push_back (((ItemNPC *)item) ->m_data );
2417- ((ItemNPC *)item) ->setLayer (arg1);
2435+ modData.npc .push_back (npc ->m_data );
2436+ npc ->setLayer (arg1);
24182437 }
24192438 }
24202439 edit->scene ->m_history ->addChangedLayer (modData, arg1);
@@ -2450,12 +2469,13 @@ void LvlItemProperties::on_PROPS_NpcAttachLayer_currentIndexChanged(int arg1i)
24502469 {
24512470 if (item->data (ITEM_TYPE).toString () == " NPC" )
24522471 {
2453- modData.npc .push_back (((ItemNPC *)item)->m_data );
2472+ ItemNPC *npc = qgraphicsitem_cast<ItemNPC *>(item);
2473+ modData.npc .push_back (npc->m_data );
24542474 if (ui->PROPS_NpcAttachLayer ->currentIndex () > 0 )
2455- ((ItemNPC *)item) ->m_data .attach_layer = arg1;
2475+ npc ->m_data .attach_layer = arg1;
24562476 else
2457- ((ItemNPC *)item) ->m_data .attach_layer .clear ();
2458- ((ItemNPC *)item) ->arrayApply ();
2477+ npc ->m_data .attach_layer .clear ();
2478+ npc ->arrayApply ();
24592479 }
24602480 }
24612481 if (ui->PROPS_NpcAttachLayer ->currentIndex () > 0 )
@@ -2493,12 +2513,13 @@ void LvlItemProperties::on_PROPS_NpcEventActivate_currentIndexChanged(int arg1i)
24932513 {
24942514 if (item->data (ITEM_TYPE).toString () == " NPC" )
24952515 {
2496- modData.npc .push_back (((ItemNPC *)item)->m_data );
2516+ ItemNPC *npc = qgraphicsitem_cast<ItemNPC *>(item);
2517+ modData.npc .push_back (npc->m_data );
24972518 if (ui->PROPS_NpcEventActivate ->currentIndex () > 0 )
2498- ((ItemNPC *)item) ->m_data .event_activate = arg1;
2519+ npc ->m_data .event_activate = arg1;
24992520 else
2500- ((ItemNPC *)item) ->m_data .event_activate = " " ;
2501- ((ItemNPC *)item) ->arrayApply ();
2521+ npc ->m_data .event_activate . clear () ;
2522+ npc ->arrayApply ();
25022523 }
25032524 }
25042525 if (ui->PROPS_NpcEventActivate ->currentIndex () > 0 )
@@ -2536,12 +2557,14 @@ void LvlItemProperties::on_PROPS_NpcEventDeath_currentIndexChanged(int arg1i)
25362557 {
25372558 if (item->data (ITEM_TYPE).toString () == " NPC" )
25382559 {
2539- modData.npc .push_back (((ItemNPC *)item)->m_data );
2560+ ItemNPC *npc = qgraphicsitem_cast<ItemNPC *>(item);
2561+ Q_ASSERT (npc);
2562+ modData.npc .push_back (npc->m_data );
25402563 if (ui->PROPS_NpcEventDeath ->currentIndex () > 0 )
2541- ((ItemNPC *)item) ->m_data .event_die = arg1;
2564+ npc ->m_data .event_die = arg1;
25422565 else
2543- ((ItemNPC *)item) ->m_data .event_die = " " ;
2544- ((ItemNPC *)item) ->arrayApply ();
2566+ npc ->m_data .event_die . clear () ;
2567+ npc ->arrayApply ();
25452568 }
25462569 }
25472570 if (ui->PROPS_NpcEventDeath ->currentIndex () > 0 )
@@ -2579,12 +2602,14 @@ void LvlItemProperties::on_PROPS_NpcEventTalk_currentIndexChanged(int arg1i)
25792602 {
25802603 if (item->data (ITEM_TYPE).toString () == " NPC" )
25812604 {
2582- modData.npc .push_back (((ItemNPC *)item)->m_data );
2605+ ItemNPC *npc = qgraphicsitem_cast<ItemNPC*>(item);
2606+ Q_ASSERT (npc);
2607+ modData.npc .push_back (npc->m_data );
25832608 if (ui->PROPS_NpcEventTalk ->currentIndex () > 0 )
2584- ((ItemNPC *)item) ->m_data .event_talk = arg1;
2609+ npc ->m_data .event_talk = arg1;
25852610 else
2586- ((ItemNPC *)item) ->m_data .event_talk = " " ;
2587- ((ItemNPC *)item) ->arrayApply ();
2611+ npc ->m_data .event_talk . clear () ;
2612+ npc ->arrayApply ();
25882613 }
25892614 }
25902615 if (ui->PROPS_NpcEventTalk ->currentIndex () > 0 )
@@ -2622,12 +2647,14 @@ void LvlItemProperties::on_PROPS_NpcEventEmptyLayer_currentIndexChanged(int arg1
26222647 {
26232648 if (item->data (ITEM_TYPE).toString () == " NPC" )
26242649 {
2625- modData.npc .push_back (((ItemNPC *)item)->m_data );
2650+ ItemNPC *npc = qgraphicsitem_cast<ItemNPC*>(item);
2651+ Q_ASSERT (npc);
2652+ modData.npc .push_back (npc->m_data );
26262653 if (ui->PROPS_NpcEventEmptyLayer ->currentIndex () > 0 )
2627- ((ItemNPC *)item) ->m_data .event_emptylayer = arg1;
2654+ npc ->m_data .event_emptylayer = arg1;
26282655 else
2629- ((ItemNPC *)item) ->m_data .event_emptylayer = " " ;
2630- ((ItemNPC *)item) ->arrayApply ();
2656+ npc ->m_data .event_emptylayer . clear () ;
2657+ npc ->arrayApply ();
26312658 }
26322659 }
26332660 if (ui->PROPS_NpcEventEmptyLayer ->currentIndex () > 0 )
0 commit comments