mirror of
https://github.com/Ratstail91/Mementos.git
synced 2025-11-29 02:24:28 +11:00
Committed everything
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
using Ink.Runtime;
|
||||
|
||||
namespace Ink.Runtime
|
||||
{
|
||||
/// <summary>
|
||||
/// Internal structure used to point to a particular / current point in the story.
|
||||
/// Where Path is a set of components that make content fully addressable, this is
|
||||
/// a reference to the current container, and the index of the current piece of
|
||||
/// content within that container. This scheme makes it as fast and efficient as
|
||||
/// possible to increment the pointer (move the story forwards) in a way that's as
|
||||
/// native to the internal engine as possible.
|
||||
/// </summary>
|
||||
public struct Pointer
|
||||
{
|
||||
public Container container;
|
||||
public int index;
|
||||
|
||||
public Pointer (Container container, int index)
|
||||
{
|
||||
this.container = container;
|
||||
this.index = index;
|
||||
}
|
||||
|
||||
public Runtime.Object Resolve ()
|
||||
{
|
||||
if (index < 0) return container;
|
||||
if (container == null) return null;
|
||||
if (container.content.Count == 0) return container;
|
||||
if (index >= container.content.Count) return null;
|
||||
return container.content [index];
|
||||
|
||||
}
|
||||
|
||||
public bool isNull {
|
||||
get {
|
||||
return container == null;
|
||||
}
|
||||
}
|
||||
|
||||
public Path path {
|
||||
get {
|
||||
if( isNull ) return null;
|
||||
|
||||
if (index >= 0)
|
||||
return container.path.PathByAppendingComponent (new Path.Component(index));
|
||||
else
|
||||
return container.path;
|
||||
}
|
||||
}
|
||||
|
||||
public override string ToString ()
|
||||
{
|
||||
if (container == null)
|
||||
return "Ink Pointer (null)";
|
||||
|
||||
return "Ink Pointer -> " + container.path.ToString () + " -- index " + index;
|
||||
}
|
||||
|
||||
public static Pointer StartOf (Container container)
|
||||
{
|
||||
return new Pointer {
|
||||
container = container,
|
||||
index = 0
|
||||
};
|
||||
}
|
||||
|
||||
public static Pointer Null = new Pointer { container = null, index = -1 };
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user