コード例 #1
0
 public Sprite FrameForDirection(OrthoDir facing)
 {
     return(FrameBySlot(0, facing));
 }
コード例 #2
0
ファイル: MapEvent.cs プロジェクト: psywombats/solochara
    // public abstract

    // if we moved in this direction, where in screenspace would we end up?
    public abstract Vector3 CalculateOffsetPositionPx(OrthoDir dir);
コード例 #3
0
    private bool TryStep(OrthoDir dir)
    {
        Vector2Int vectors = Event.Position;
        Vector2Int vsd     = dir.XY2D();
        Vector2Int target  = vectors + vsd;

        Chara.Facing = dir;
        List <MapEvent> targetEvents = Event.Map.GetEventsAt(target);

        List <MapEvent> toCollide = new List <MapEvent>();
        var             passable  = vsd.y == 0 && Event.CanPassAt(target);

        foreach (MapEvent targetEvent in targetEvents)
        {
            toCollide.Add(targetEvent);
        }
        if (!Event.CanPassAt(target))
        {
            passable = false;
        }

        if (passable)
        {
            WantsToTrack = true;
            StartCoroutine(CoUtils.RunParallel(new IEnumerator[] {
                CoUtils.RunWithCallback(Event.StepRoutine(dir), () => {
                    foreach (var targetEvent in toCollide)
                    {
                        if (targetEvent.IsSwitchEnabled)
                        {
                            targetEvent.GetComponent <Dispatch>().Signal(MapEvent.EventCollide, this);
                        }
                    }
                    foreach (var targetEvent in Event.Map.GetEvents <MapEvent>())
                    {
                        if (targetEvent.IsSwitchEnabled)
                        {
                            targetEvent.GetComponent <Dispatch>().Signal(MapEvent.EventStep, this);
                        }
                    }
                    if (toCollide.Count == 0)
                    {
                        Global.Instance().Maps.ActiveMap.OnStepEnded();
                    }
                }),
                OnStepStartRoutine(),
            }, this));
        }
        else
        {
            foreach (var targetEvent in toCollide)
            {
                if (targetEvent.IsSwitchEnabled)
                {
                    targetEvent.GetComponent <Dispatch>().Signal(MapEvent.EventCollide, this);
                }
            }
        }

        return(true);
    }
コード例 #4
0
 public Sprite FrameBySlot(int x, OrthoDir facing)
 {
     return(FrameByExplicitSlot(x, facing.Ordinal()));
 }
コード例 #5
0
 public void FaceToward(MapEvent other)
 {
     Facing = Parent.DirectionTo(other);
 }
コード例 #6
0
 public void Populate(Unit unit)
 {
     Populate(unit.FieldSpriteTag);
     facing = unit.IsDead ? OrthoDir.North : OrthoDir.South;
 }
コード例 #7
0
ファイル: SpellSelector.cs プロジェクト: psywombats/solochara
 private void AddKey(OrthoDir dir)
 {
     downButtons.Add(dir);
     UpdateHighlight();
 }
コード例 #8
0
ファイル: MapEvent3D.cs プロジェクト: psywombats/solochara
 public override Vector3 CalculateOffsetPositionPx(OrthoDir dir)
 {
     return(PositionPx + dir.Px3D());
 }
コード例 #9
0
ファイル: MapEvent2D.cs プロジェクト: SkankinGarbage/mgne
 public override Vector2Int OffsetForTiles(OrthoDir dir)
 {
     return(dir.XY2D());
 }
コード例 #10
0
 public void FaceToward(IntVector2 pos)
 {
     facing = OrthoDirExtensions.DirectionOf(pos - GetComponent <MapEvent>().positionXY);
 }
コード例 #11
0
ファイル: MapEvent.cs プロジェクト: SkankinGarbage/mgne
 // if this event were to move in a direction, how would that affect coordinates?
 public abstract Vector2Int OffsetForTiles(OrthoDir dir);