コード例 #1
0
ファイル: Track.cs プロジェクト: kkeenn1124/techmania
    public new PackedDragNote Pack()
    {
        PackedDragNote packed = new PackedDragNote();

        packed.packedNote = base.Pack();
        foreach (DragNode node in nodes)
        {
            packed.packedNodes.Add(node.Pack());
        }
        return(packed);
    }
コード例 #2
0
ファイル: Track.cs プロジェクト: kkeenn1124/techmania
    public static DragNote Unpack(PackedDragNote packed)
    {
        Note     unpackedNote = Note.Unpack(packed.packedNote);
        DragNote dragNote     = new DragNote()
        {
            type  = unpackedNote.type,
            pulse = unpackedNote.pulse,
            lane  = unpackedNote.lane,
            sound = unpackedNote.sound,
            nodes = new List <DragNode>()
        };

        foreach (string packedNode in packed.packedNodes)
        {
            dragNote.nodes.Add(DragNode.Unpack(packedNode));
        }
        return(dragNote);
    }
コード例 #3
0
    public new PackedDragNote Pack()
    {
        PackedDragNote packed = new PackedDragNote();

        if (IsExtended())
        {
            // Enums will be formatted as strings.
            packed.packedNote = $"E|{type}|{pulse}|{lane}|{volumePercent}|{panPercent}|{(int)curveType}|{sound}";
        }
        else
        {
            packed.packedNote = $"{type}|{pulse}|{lane}|{sound}";
        }
        foreach (DragNode node in nodes)
        {
            packed.packedNodes.Add(node.Pack());
        }
        return(packed);
    }
コード例 #4
0
    public static DragNote Unpack(PackedDragNote packed)
    {
        char[] delim = new char[] { '|' };
        // Beware that the "sound" portion may contain |.
        string[] splits = packed.packedNote.Split(delim, 2);
        DragNote dragNote;

        // Extended?
        if (splits[0] == "E")
        {
            splits   = packed.packedNote.Split(delim, 8);
            dragNote = new DragNote()
            {
                pulse         = int.Parse(splits[2]),
                lane          = int.Parse(splits[3]),
                volumePercent = int.Parse(splits[4]),
                panPercent    = int.Parse(splits[5]),
                curveType     = (CurveType)int.Parse(splits[6]),
                sound         = splits[7]
            };
        }
        else
        {
            splits   = packed.packedNote.Split(delim, 4);
            dragNote = new DragNote()
            {
                pulse = int.Parse(splits[1]),
                lane  = int.Parse(splits[2]),
                sound = splits[3]
            };
        }

        dragNote.type      = NoteType.Drag;
        dragNote.endOfScan = false;
        dragNote.nodes     = new List <DragNode>();
        foreach (string packedNode in packed.packedNodes)
        {
            dragNote.nodes.Add(DragNode.Unpack(packedNode));
        }
        return(dragNote);
    }