-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathWorldMapPoint.cs
More file actions
57 lines (50 loc) · 1.88 KB
/
Copy pathWorldMapPoint.cs
File metadata and controls
57 lines (50 loc) · 1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// This file is part of Project Hybrasyl.
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the Affero General Public License as published by
// the Free Software Foundation, version 3.
//
// This program is distributed in the hope that it will be useful, but
// without ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
// or FITNESS FOR A PARTICULAR PURPOSE. See the Affero General Public License
// for more details.
//
// You should have received a copy of the Affero General Public License along
// with this program. If not, see <http://www.gnu.org/licenses/>.
//
// (C) 2020-2023 ERISCO, LLC
//
// For contributors and individual authors please refer to CONTRIBUTORS.MD.
using System;
using System.Collections.Generic;
using System.Text;
namespace Hybrasyl.Xml.Objects;
public partial class WorldMapPoint
{
public WorldMap Parent { get; set; }
public int XOffset => X % 255;
public int YOffset => Y % 255;
public int XQuadrant => (X - XOffset) / 255;
public int YQuadrant => (Y - YOffset) / 255;
public string DestinationMap => Target.Value;
public byte DestinationX => Target.X;
public byte DestinationY => Target.Y;
public long Id => HashCode.Combine(Name, X, Y, Parent);
public override string PrimaryKey => Id.ToString();
public byte[] GetBytes()
{
var buffer = Encoding.ASCII.GetBytes(Name);
// X quadrant, offset, Y quadrant, offset, length of the name, the name, plus a 64-bit(?!) ID
var bytes = new List<byte>
{
(byte) XQuadrant,
(byte) XOffset,
(byte) YQuadrant,
(byte) YOffset,
(byte) Name.Length
};
bytes.AddRange(buffer);
bytes.AddRange(BitConverter.GetBytes(Id));
return bytes.ToArray();
}
}