File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -82,7 +82,16 @@ namespace zenkit {
8282 chr = static_cast <unsigned char >(_m_buffer->read_char ());
8383 _m_column += 1 ;
8484
85- while (chr != ' "' && chr != ' \n ' && chr != ' )' ) {
85+ // Modded. Some mods may include `(` and/or `)` in their strings. For this reason we need to handle
86+ // all of these cases:
87+ // registerMesh ("Some_File Name(WithBrackets).ASC")
88+ // registerMesh ("Some_File Name.ASC")
89+ // registerMesh ("Some_File Name.ASC"
90+ // registerMesh ("Some_File Name.ASC)
91+ // registerMesh ("Some_File Name.ASC
92+ unsigned char prev = ' \0 ' ;
93+ while (chr != ' "' && chr != ' \n ' ) {
94+ if (!std::isspace (chr)) prev = chr;
8695 _m_value.push_back (static_cast <char >(chr));
8796 chr = static_cast <unsigned char >(_m_buffer->read_char ());
8897 _m_column += 1 ;
@@ -94,6 +103,7 @@ namespace zenkit {
94103 _m_column -= 1 ;
95104 }
96105
106+ if (prev == ' )' ) _m_value.pop_back ();
97107 return MdsToken::STRING;
98108 }
99109
Original file line number Diff line number Diff line change @@ -15,6 +15,13 @@ TEST_SUITE("ModelScript") {
1515 CHECK_EQ (script.skeleton .disable_mesh , true );
1616 CHECK_EQ (script.skeleton .name , " TestModelMesh.asc" );
1717
18+ CHECK_EQ (script.meshes [0 ], " AnotherTestModelMesh1.asc" );
19+ CHECK_EQ (script.meshes [1 ], " AnotherTestModelMesh2.asc" );
20+ CHECK_EQ (script.meshes [2 ], " AnotherTestModelMesh3.asc" );
21+ CHECK_EQ (script.meshes [3 ], " AnotherTestModelMesh4.asc" );
22+ CHECK_EQ (script.meshes [4 ], " AnotherTestModelMesh5.asc" );
23+ CHECK_EQ (script.meshes [5 ], " AnotherTestModelMesh(6).asc" );
24+
1825 CHECK_EQ (script.animations .size (), 2 );
1926 CHECK_EQ (script.animations [0 ].name , " aniName1" );
2027 CHECK_EQ (script.animations [0 ].layer , 111 );
Original file line number Diff line number Diff line change @@ -2,6 +2,10 @@ Model("TestModel") {
22 meshAndTree("TestModelMesh.asc" DONT_USE_MESH)
33 registerMesh("AnotherTestModelMesh1.asc")
44 registerMesh("AnotherTestModelMesh2.asc")
5+ registerMesh("AnotherTestModelMesh3.asc"
6+ registerMesh("AnotherTestModelMesh4.asc
7+ registerMesh("AnotherTestModelMesh5.asc)
8+ registerMesh("AnotherTestModelMesh(6).asc")
59
610 // A comment.
711
You can’t perform that action at this time.
0 commit comments