Implementing a simple XML based Scripting Language for an XNA Game
I'm working with a team on a RPG engine in C# and XNA. We're planning on targeting Windows and Windows Phone 7, but are running into issues with AI interactions and controlling player actions during cutscenes. FOr the most part, everything is extracted using the MVC design pattern, but abstracting all logic and movement into a controller could cause issues down the line. So the idea is to have an interface (IScriptEngine) that takes an IScriptObject and updates data in the map model accordingly. 
I was thinking about putting the scripts in an XML sort of syntax: 

    <Script Name="MoveNPC_1"> 
        <Action Command="MoveToTile" Target="NPC_1" Value="10,2"/> 
    </Script> 

And have an IScriptEngine parse it accordingly. I highly doubt parsing in a giant switch statement would be a good idea, but it's what I've been working with.

    switch(Action.Command)
    {
        case "MoveToTile":
          { 
             doMovement(Action.Value, Action.Target); 
             break;
          }
    }

Even my high school programming experience tells me that this is a bad idea, but I can't think of any other way around it.
Implementing a simple XML based Scripting Language for an XNA Game
===

I'm working with a team on a RPG engine in C# and XNA. We're planning on targeting Windows and Windows Phone 7, but are running into issues with AI interactions and controlling player actions during cutscenes. FOr the most part, everything is extracted using the MVC design pattern, but abstracting all logic and movement into a controller could cause issues down the line. So the idea is to have an interface (IScriptEngine) that takes an IScriptObject and updates data in the map model accordingly. 
I was thinking about putting the scripts in an XML sort of syntax: 

    <Script Name="MoveNPC_1"> 
        <Action Command="MoveToTile" Target="NPC_1" Value="10,2"/> 
    </Script> 

And have an IScriptEngine parse it accordingly. I highly doubt parsing in a giant switch statement would be a good idea, but it's what I've been working with.

    switch(Action.Command)
    {
        case "MoveToTile":
          { 
             doMovement(Action.Value, Action.Target); 
             break;
          }
    }

Even my high school programming experience tells me that this is a bad idea, but I can't think of any other way around it.