public void checkObjectCollision(LLESprite playerCharacter, LLEPlayerData playerData, KeyboardState keyboardState, KeyboardState prevKeyboardState) { mPlayerCharacter = playerCharacter; for (int i = 0; i < mapObjects.Count; i++) { if (mapObjects[i] != null && mapObjects[i].getSprite() != null && mapObjects[i].getSprite().isVisible()) { LLESprite target = mapObjects[i].getSprite(); if (mapObjects[i].isColliding() == true && playerCharacter.isCollidingMap(new Vector4(target.getX(), target.getY(), target.getHeight(), target.getWidth()), new Vector2(cameraX, cameraY), true, true, 4) == true) { if ((playerCharacter.getDirection() == LLESprite.DIRECTION_UP || playerCharacter.getDirection() == LLESprite.DIRECTION_LEFT_UP || playerCharacter.getDirection() == LLESprite.DIRECTION_RIGHT_UP) && keyboardState.IsKeyDown(Keys.Z) == true && prevKeyboardState.IsKeyDown(Keys.Z) == false) { if (mapObjects[i].getScriptName().Replace("NONE", "" ).Replace(" ", "") != "") { playerCharacter.setAttacking(false); scriptProcessor.extractObjectVariables(mapObjects[i]); scriptProcessor.executeScript(msgManager, playerData); } break; } } } } }
public void executeScript(LLEMessageManager msgManager, LLEPlayerData playerData) { XmlTextReader xmlParser = new XmlTextReader("LemonPlatformEditor/ContentDatabase/Scripts/" + targetObject.getScriptName() + ".xml"); while (xmlParser.Read()) { if (xmlParser.NodeType == XmlNodeType.Element) { tagName = xmlParser.Name; switch (tagName) { case "ScriptScope": case "SetSprite": case "VerifyVariable": case "SetVariable": case "MessageBalloon": case "SetTargetVariable": case "SetTargetSprite": case "SetScriptVisibility": case "GiveItem": case "HasItem": case "RemoveItem": case "PlayerData.HasWeapon": { command = tagName; break; } } } else if (xmlParser.NodeType == XmlNodeType.EndElement) { if (xmlParser.Name == "ScriptScope") { ignoreTags = false; } } else if (xmlParser.NodeType == XmlNodeType.Text) { if (!ignoreTags) { switch (tagName) { case "ObjectName": { externObjectName = xmlParser.Value; break; } case "ObjectVisible": { objectVisible = xmlParser.Value; setObjectVisibility(); break; } case "VariableName": { variableName = xmlParser.Value; break; } case "VariableValue": { variableValue = xmlParser.Value; if (command == "SetVariable") { setScriptVariable(); } else if (command == "SetTargetVariable") { setExternalVariable(); } break; } case "TargetSprite": { externSprite = xmlParser.Value; if (command == "SetTargetSprite") { setExternalSprite(); } break; } case "ItemName": { itemName = xmlParser.Value; break; } case "IsTrue": { trueConditionScope = xmlParser.Value; break; } case "IsFalse": { falseConditionScope = xmlParser.Value; if (command == "VerifyVariable") { if (verifyVariableValue()) { scriptScopeName = trueConditionScope; } else { scriptScopeName = falseConditionScope; } } else if (command == "HasItem") { if(hasItem(itemName)) { scriptScopeName = trueConditionScope; } else { scriptScopeName = falseConditionScope; } } break; } case "ScopeName": { if (command == "ScriptScope") { if (scriptScopeName != xmlParser.Value) { ignoreTags = true; } } break; } case "SetSprite": { objectSprite = xmlParser.Value; setObjectSprite(); break; } case "PlayerData.HasWeapon": { playerData.mHasWeapon = Convert.ToBoolean(xmlParser.Value); break; } case "GiveItem": { addItemToInventory(xmlParser.Value); break; } case "RemoveItem": { removeItemFromInventory(xmlParser.Value); break; } case "Target": { if (command == "MessageBalloon") { mMessageTarget = xmlParser.Value; } break; } case "EventMsgIcon": { eventMsg = true; eventMsgIcon = xmlParser.Value; break; } case "Text": { if (command == "MessageBalloon") { msgManager.setFocusEntity(mMessageTarget); msgManager.addMessage(xmlParser.Value, eventMsg, eventMsgIcon); eventMsgIcon = ""; eventMsg = false; } break; } } } } } xmlParser.Close(); }