Example #1
0
    public void NextState(IOnPointObject obj)
    {
        if (obj.GetObjType() != ObjectType.Reflector)
        {
            return;
        }

        Vector2Int index    = obj.GetCurrentIndex();
        int        state    = obj.GetCurrentState();
        int        pivotNum = state;

        int setState = state;

        for (int i = 0; i < 6; i++)
        {
            setState++;
            setState %= 6;

            int pointIndex = pointIndex = index.x + index.y * 10;

            if (setState == 0)
            {
                GetPointData(pointIndex, (Pivot)Enum.ToObject(typeof(Pivot), state - 1)).SetObjectType(ObjectType.None);
                obj.SetState(-1);
                return;
            }

            pivotNum = setState;
            if (setState != 0)
            {
                pivotNum--;
            }


            Pivot     pivot = (Pivot)Enum.ToObject(typeof(Pivot), pivotNum);
            PointData data  = GetPointData(pointIndex, pivot);

            if (data == null)
            {
                continue;
            }

            if (data.CanSetObject())
            {
                GetPointData(pointIndex, (Pivot)Enum.ToObject(typeof(Pivot), state != 0 ? state - 1 : state)).SetObjectType(ObjectType.None);
                obj.SetState(setState);
                obj.SetPosition(data.GetPosition());
                obj.SetPointIndex(index);
                data.SetObjectType(obj.GetObjType());
                return;
            }
            else if (setState == 1)
            {
                if (state == 0)
                {
                    obj.SetState(setState);
                    obj.SetPosition(data.GetPosition());
                    obj.SetPointIndex(index);
                    data.SetObjectType(obj.GetObjType());
                    return;
                }
            }
        }
    }