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