chrisgregan
10 years ago
8 changed files with 165 additions and 37 deletions
@ -0,0 +1,79 @@
|
||||
using UnityEngine; |
||||
using System.Collections; |
||||
using System.Collections.Generic; |
||||
using System; |
||||
|
||||
namespace Fungus |
||||
{ |
||||
|
||||
[CommandInfo("Scripting", |
||||
"Else If", |
||||
"Marks the start of a sequence block to be executed when the preceding If statement is False and the test expression is true.")] |
||||
[AddComponentMenu("")] |
||||
public class ElseIf : If |
||||
{ |
||||
|
||||
public override void OnEnter() |
||||
{ |
||||
System.Type previousCommandType = parentSequence.GetPreviousActiveCommandType(); |
||||
|
||||
if (previousCommandType == typeof(If) || |
||||
previousCommandType == typeof(ElseIf) ) |
||||
{ |
||||
// Else If behaves the same as an If command |
||||
EvaluateCondition(); |
||||
} |
||||
else |
||||
{ |
||||
// Else If behaves mostly like an Else command, |
||||
// but will also jump to a following Else command. |
||||
|
||||
// Stop if this is the last command in the list |
||||
if (commandIndex >= parentSequence.commandList.Count - 1) |
||||
{ |
||||
Stop(); |
||||
return; |
||||
} |
||||
|
||||
// Find the next End command at the same indent level as this Else If command |
||||
int indent = indentLevel; |
||||
for (int i = commandIndex + 1; i < parentSequence.commandList.Count; ++i) |
||||
{ |
||||
Command command = parentSequence.commandList[i]; |
||||
|
||||
if (command.indentLevel == indent) |
||||
{ |
||||
System.Type type = command.GetType(); |
||||
if (//type == typeof(Else) || |
||||
type == typeof(EndIf) || // Legacy support for old EndIf command |
||||
type == typeof(End)) |
||||
{ |
||||
// Execute command immediately after the Else or End command |
||||
Continue(command.commandIndex + 1); |
||||
return; |
||||
} |
||||
} |
||||
} |
||||
|
||||
// No End command found |
||||
Stop(); |
||||
} |
||||
} |
||||
|
||||
public override bool OpenBlock() |
||||
{ |
||||
return true; |
||||
} |
||||
|
||||
public override bool CloseBlock() |
||||
{ |
||||
return true; |
||||
} |
||||
|
||||
public override Color GetButtonColor() |
||||
{ |
||||
return new Color32(253, 253, 150, 255); |
||||
} |
||||
} |
||||
|
||||
} |
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2 |
||||
guid: 18c5e8d46183346b59f64b820e71f97f |
||||
MonoImporter: |
||||
serializedVersion: 2 |
||||
defaultReferences: [] |
||||
executionOrder: 0 |
||||
icon: {instanceID: 0} |
||||
userData: |
Loading…
Reference in new issue