Takes a String and a Class name and computes spell based variable such as Class level. @param aSpell The spell object @param aString the variable to evaluate @return String
(final CharacterSpell aSpell, String aString)
| 5412 | * @return String |
| 5413 | */ |
| 5414 | public String parseSpellString(final CharacterSpell aSpell, String aString) |
| 5415 | { |
| 5416 | String aSpellClass = aSpell.getVariableSource(this); |
| 5417 | |
| 5418 | if (aSpellClass.isEmpty()) |
| 5419 | { |
| 5420 | return aString; |
| 5421 | } |
| 5422 | |
| 5423 | // Only want to replace items between ()'s |
| 5424 | while (aString.lastIndexOf('(') >= 0) |
| 5425 | { |
| 5426 | boolean found = false; |
| 5427 | |
| 5428 | final int start = aString.indexOf('('); |
| 5429 | int end = 0; |
| 5430 | int level = 0; |
| 5431 | |
| 5432 | for (int i = start; i < aString.length(); i++) |
| 5433 | { |
| 5434 | if (aString.charAt(i) == '(') |
| 5435 | { |
| 5436 | level++; |
| 5437 | } else if (aString.charAt(i) == ')') |
| 5438 | { |
| 5439 | level--; |
| 5440 | if (level == 0) |
| 5441 | { |
| 5442 | end = i; |
| 5443 | break; |
| 5444 | } |
| 5445 | } |
| 5446 | } |
| 5447 | |
| 5448 | /* |
| 5449 | * int x = CoreUtility.innerMostStringStart(aString); int y = |
| 5450 | * CoreUtility.innerMostStringEnd(aString); // bounds checking if |
| 5451 | * ((start > end) || (start >= aString.length())) { break; } if |
| 5452 | * ((end <= 0) || (end >= aString.length())) { break; } |
| 5453 | */ |
| 5454 | final String inCalc = aString.substring(start + 1, end); |
| 5455 | |
| 5456 | String replacement = "0"; |
| 5457 | |
| 5458 | final Float fVal = getVariableValue(aSpell, inCalc, aSpellClass); |
| 5459 | if (!CoreUtility.doublesEqual(fVal, 0.0f) || (inCalc.contains("MIN")) |
| 5460 | || (inCalc.contains("MAX")) || inCalc.toUpperCase().contains("MIN(") |
| 5461 | || inCalc.toUpperCase().contains("MAX(")) |
| 5462 | { |
| 5463 | found = true; |
| 5464 | replacement = String.valueOf(fVal.intValue()); |
| 5465 | } |
| 5466 | |
| 5467 | if (found) |
| 5468 | { |
| 5469 | aString = aString.substring(0, start) + replacement + aString.substring(end + 1); |
| 5470 | } else |
| 5471 | { |
no test coverage detected