File confec.cpp changed (mode: 100644) (index 6a713e7..76d9309) |
... |
... |
void Render(){ |
4683 |
4683 |
std::string val_str = |
std::string val_str = |
4684 |
4684 |
param.substr( space_at + 1 ); |
param.substr( space_at + 1 ); |
4685 |
4685 |
char* p; |
char* p; |
4686 |
|
long double num = |
|
4687 |
|
std::strtold( val_str.c_str(), &p ); |
|
4688 |
|
if( *p ){ |
|
4689 |
|
// Non-numeric value. |
|
4690 |
|
convo.setVariable( |
|
4691 |
|
param.substr( 0, space_at ), |
|
4692 |
|
convo.getVariable( val_str ) |
|
4693 |
|
); |
|
4694 |
|
}else{ |
|
4695 |
|
// Numeric value. |
|
4696 |
|
convo.setVariable( |
|
4697 |
|
param.substr( 0, space_at ), |
|
4698 |
|
(double)num |
|
4699 |
|
); |
|
4700 |
|
} |
|
|
4686 |
|
double num = std::strtod( val_str.c_str(), &p ); |
|
4687 |
|
convo.operate( convo.getOperation( |
|
4688 |
|
param.substr( 0, space_at ), |
|
4689 |
|
num, |
|
4690 |
|
*p ? val_str : "" // Value is a string? |
|
4691 |
|
) ); |
4701 |
4692 |
} |
} |
4702 |
4693 |
}else if( str.length() >= 5 |
}else if( str.length() >= 5 |
4703 |
4694 |
&& str.substr( 0, 5 ) == "/help" ){ |
&& str.substr( 0, 5 ) == "/help" ){ |
File include/dialogue.h changed (mode: 100755) (index 05aee01..d57bf57) |
... |
... |
class Talk { |
66 |
66 |
void setVariable( std::string key, double valueNumber ); |
void setVariable( std::string key, double valueNumber ); |
67 |
67 |
int parseJSON( std::string &text ); |
int parseJSON( std::string &text ); |
68 |
68 |
std::string stringifyNumber( double n ); |
std::string stringifyNumber( double n ); |
69 |
|
Talk( std::string filePath = "" ); |
|
70 |
|
private: |
|
|
69 |
|
Operation getOperation( std::string key, double valueNumber, std::string valueKey ); |
71 |
70 |
void operate( Operation o ); |
void operate( Operation o ); |
72 |
71 |
void transformString( std::string &str ); |
void transformString( std::string &str ); |
|
72 |
|
Talk( std::string filePath = "" ); |
73 |
73 |
}; |
}; |
74 |
74 |
|
|
75 |
75 |
void Talk::go( std::string id ){ |
void Talk::go( std::string id ){ |
|
... |
... |
int Talk::parseJSON( std::string &text ){ |
242 |
242 |
for( auto s : allocatedDocument.document.root.getObject() ){ |
for( auto s : allocatedDocument.document.root.getObject() ){ |
243 |
243 |
std::vector<Operation> exec; |
std::vector<Operation> exec; |
244 |
244 |
for( auto o : s.value["exec"].getObject() ){ |
for( auto o : s.value["exec"].getObject() ){ |
245 |
|
std::string key = viewToString( o.name ); |
|
246 |
|
char op = ':'; |
|
247 |
|
if( key.length() > 0 && key.find_last_of( "=!<>?%*/+-_" ) == key.length() - 1 ){ |
|
248 |
|
op = key.back(); |
|
249 |
|
key.resize( key.length() - 1 ); |
|
250 |
|
} |
|
251 |
|
exec.push_back( { |
|
252 |
|
key, |
|
253 |
|
op, |
|
|
245 |
|
exec.push_back( getOperation( |
|
246 |
|
viewToString( o.name ), |
254 |
247 |
o.value.getDouble(), |
o.value.getDouble(), |
255 |
248 |
o.value.isString() ? viewToString( o.value.getString() ) : "" |
o.value.isString() ? viewToString( o.value.getString() ) : "" |
256 |
|
} ); |
|
|
249 |
|
) ); |
257 |
250 |
} |
} |
258 |
251 |
std::vector<std::string> lines; |
std::vector<std::string> lines; |
259 |
252 |
for( auto l : s.value["lines"].getArray() ) lines.push_back( viewToString( l.getString() ) ); |
for( auto l : s.value["lines"].getArray() ) lines.push_back( viewToString( l.getString() ) ); |
|
... |
... |
Talk::Talk( std::string filePath ){ |
310 |
303 |
} |
} |
311 |
304 |
} |
} |
312 |
305 |
|
|
|
306 |
|
Operation Talk::getOperation( std::string key, double valueNumber, std::string valueKey ){ |
|
307 |
|
char op = ':'; |
|
308 |
|
if( key.length() > 0 && key.find_last_of( "=!<>?%*/+-_" ) == key.length() - 1 ){ |
|
309 |
|
op = key.back(); |
|
310 |
|
key.resize( key.length() - 1 ); |
|
311 |
|
} |
|
312 |
|
return { |
|
313 |
|
key, |
|
314 |
|
op, |
|
315 |
|
valueNumber, |
|
316 |
|
valueKey |
|
317 |
|
}; |
|
318 |
|
} |
|
319 |
|
|
313 |
320 |
void Talk::operate( Operation o ){ |
void Talk::operate( Operation o ){ |
314 |
321 |
double in = o.valueNumber, out = getVariable( o.key ); |
double in = o.valueNumber, out = getVariable( o.key ); |
315 |
322 |
if( o.valueKey.length() > 0 ){ |
if( o.valueKey.length() > 0 ){ |