public void EnterStage(string pose, StageDistance distance, StagePosition facing, bool Skip)
    {
        Start(); // just incase this gets called before start, somehow;



        visual.sprite = GetPose(pose);
        ChangeDistance(distance);
        ChangeFacing(facing);


        var awhite = Color.white;

        awhite.a = 0;

        if (Skip)
        {
            visual.color     = Color.white;
            BackSprite.color = awhite;
        }
        else
        {
            Entering         = true;
            visual.color     = awhite;
            BackSprite.color = awhite;
            //visual.gameObject.DispatchEvent(Events.Fade, new FadeEvent(Color.white, SpriteSwitchSpeed));
        }
    }
 public CastDirectionEvent(string person, string pose = "", StageDistance Dis = StageDistance.Center, StagePosition Pos = StagePosition.Center, StagePosition face = StagePosition.Right)
 {
     character       = person;
     Pose            = pose;
     Direction       = Pos;
     Distance        = Dis;
     FacingDirection = face;
 }
    public CastDirectionEvent(string person, string calls)
    {
        character = person;
        Pose      = "None";

        string[] directions = calls.Split(',');

        foreach (string call in directions)
        {
            //MonoBehaviour.print(call);
            var calling = call.Replace(" ", "");

            switch (calling.ToLower())
            {
            case "exit":
                Exiting = true;
                break;

            case "left":
                FacingDirection = StagePosition.Left;
                break;

            case "right":
                FacingDirection = StagePosition.Right;
                break;

            case "close":
                Distance = StageDistance.Close;
                break;

            case "medium":
                Distance = StageDistance.Center;
                break;

            case "far":
                Distance = StageDistance.Far;
                break;

            case "stage_right":
                Direction = StagePosition.Right;
                break;

            case "stage_left":
                Direction = StagePosition.Left;
                break;

            case "stage_center":
                Direction = StagePosition.Center;
                break;

            default:
                Pose = calling;
                break;
            }
        }
    }
 public CharacterIntermission(CharacterIntermission copy_)
 {
     chara = copy_.chara;
     Dir   = copy_.Dir;
     face  = copy_.face;
     Dis   = copy_.Dis;
     PosX  = copy_.PosX;
     PosY  = copy_.PosY;
     Name  = copy_.Name;
 }
    public void ChangeDistance(StageDistance distance)
    {
        if (distance == StageDistance.None)
        {
            return;
        }

        Distance = distance;
        float scale = Distances[(int)distance].Scale;

        transform.localScale = new Vector3(scale, scale, scale);
        transform.position   = new Vector3(transform.position.x, Distances[(int)distance].Offset, transform.position.z);
    }