Exemplo n.º 1
0
    /// <summary>
    /// 读取
    /// </summary>
    /// <param name="reader"></param>
    /// <param name="header"></param>
    public void Load(MyReader reader, int header)
    {
        //if (coroutine != null)
        //{
        //    StopCoroutine(coroutine);
        //}
        ClearMap();
        int x = 20, z = 15;

        if (header >= SaveLoadModule.version_1)
        {
            x = reader.ReadInt32();
            z = reader.ReadInt32();
        }

        bool isWrapping = header >= SaveLoadModule.version_5 && reader.ReadBoolean();

        if (x != cellCountX || z != cellCountZ || wrapping != isWrapping)
        {
            if (!CreateMap(x, z, isWrapping))
            {
                return;
            }
        }


        var originalImmediateMode = cellShaderData.ImmediateMode;

        cellShaderData.ImmediateMode = true;
        foreach (var item in cells)
        {
            item.Load(reader, header);
        }

        foreach (var item in cells)
        {
            item.RefreshPosition();
            item.Refresh();
        }

        if (header >= SaveLoadModule.version_2)
        {
            int unitCount = reader.ReadInt32();
            for (int i = 0; i < unitCount; i++)
            {
                HexUnit.Load(reader, this);
            }
        }

        cellShaderData.ImmediateMode = originalImmediateMode;
    }