Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Script
- {
- List<IScriptItem> m_items = new List<IScriptItem>();
- GameResource m_gameResource;
- int m_itemIndex;
- String m_filename;
- bool m_shouldDelete;
- public Script(String filename, GameResource resource)
- {
- m_filename = filename;
- m_gameResource = resource;
- DataNode rootNode = DataNodeResource.getDataNode(@"Content\scripts\" + filename);
- m_itemIndex = 0;
- addFromNode(rootNode);
- }
- public void setDeleted()
- {
- m_shouldDelete = true;
- }
- public String getFilename()
- {
- return m_filename;
- }
- public bool shouldDelete()
- {
- return m_shouldDelete;
- }
- void addFromNode(DataNode node)
- {
- int nodeCount = node.getNodeCount();
- for (int nodeIndex = 0; nodeIndex < nodeCount; ++nodeIndex)
- {
- DataNode thisNode = node.getNode(nodeIndex);
- String itemType = thisNode.getName(); IScriptItem itemToAdd = null;
- if ( itemType == "wait" ) // replace these else-ifs with your favourite String -> Object building logic
- {
- itemToAdd = new ScriptItems.Wait();
- }
- else if ( itemType == "play_cue" )
- {
- itemToAdd = new ScriptItems.PlayCue();
- }
- if (itemToAdd != null)
- {
- itemToAdd.baseSetup(m_gameResource); // set up base
- itemToAdd.setup(thisNode); // pass data to item set up
- m_items.Add(itemToAdd);
- }
- else
- {
- // throw an exception or do some error thing here - you've tried to use a command in your script which doesn't exist!
- }
- }
- }
- public bool run(float dt)
- {
- bool shouldBreak = false;
- while ( true )
- {
- if ( m_itemIndex >= (int)m_items.Count )
- {
- return false;
- }
- if ( shouldBreak )
- {
- return true;
- }
- m_items[m_itemIndex].run(dt);
- shouldBreak = m_items[m_itemIndex].shouldUpdateGame();
- if ( m_items[m_itemIndex].isComplete() )
- {
- ++m_itemIndex;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement