Exemplo n.º 1
0
        public override void SetRoom(int roomIndex, IPlayerRoom room)
        {
            if ((uint)roomIndex >= MaxRoom)
            {
                throw new ArgumentOutOfRangeException(nameof(roomIndex));
            }

            room.Write().CopyTo(Data, RoomStart + (roomIndex * PlayerRoom2.SIZE));
        }
Exemplo n.º 2
0
        public static void DumpRoom(IPlayerRoom room, int index)
        {
            using var sfd = new SaveFileDialog
                  {
                      Filter = "New Horizons Player House Room (*.nhpr)|*.nhpr|" +
                               "New Horizons Player House Room (*.nhpr2)|*.nhpr2|" +
                               "All files (*.*)|*.*",
                      FileName = $"Room {index + 1}.{room.Extension}",
                  };
            if (sfd.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            var data = room.Write();

            File.WriteAllBytes(sfd.FileName, data);
        }
Exemplo n.º 3
0
        public static bool LoadRoom(MainSaveOffsets offsets, ref IPlayerRoom room, int index)
        {
            using var ofd = new OpenFileDialog
                  {
                      Filter = "New Horizons Player House Room (*.nhpr)|*.nhpr|" +
                               "New Horizons Player House Room (*.nhpr2)|*.nhpr2|" +
                               "All files (*.*)|*.*",
                      FileName = $"Room {index + 1}.{room.Extension}",
                  };
            if (ofd.ShowDialog() != DialogResult.OK)
            {
                return(false);
            }

            var path         = ofd.FileName;
            var expectLength = offsets.PlayerRoomSize;
            var fi           = new FileInfo(path);

            if (!PlayerRoomConverter.IsCompatible((int)fi.Length, expectLength))
            {
                WinFormsUtil.Error(string.Format(MessageStrings.MsgDataSizeMismatchImport, fi.Length, expectLength), path);
                return(false);
            }

            var data = File.ReadAllBytes(ofd.FileName);

            data = PlayerRoomConverter.GetCompatible(data, offsets.PlayerRoomSize);
            if (data.Length != expectLength)
            {
                WinFormsUtil.Error(MessageStrings.MsgCanceling, string.Format(MessageStrings.MsgDataSizeMismatchImport, fi.Length, expectLength), path);
                return(false);
            }

            room = offsets.ReadPlayerRoom(data);
            return(true);
        }
Exemplo n.º 4
0
 public RoomItemManager(IPlayerRoom room)
 {
     Layers = room.GetItemLayers();
     Room   = room;
     Debug.Assert(Layers.Length == LayerCount);
 }