summaryrefslogtreecommitdiff
path: root/MouseNet.cs
blob: bb2987bbe329384ba5cca1d47685f19b0324051e (plain)
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
using OnekoOnline.Net;

namespace OnekoOnline;

class MouseNet : Mouse
{
    readonly User MyUser;

    float InvisibleTimer;

    MouseNet(ClientUser user, Bitmap cursor) : base(cursor)
    {
        MyUser = user;
        Name = user.Username!;

        Client.UserDisconnected += disconnectedUser => {
            if (disconnectedUser == MyUser) Dispose();
        };

        Client.PacketRecived += (reader, user, packetType) => {
            if (user != MyUser || packetType != PacketType.MouseState) return;

            Position = reader.GetVector2();
            bool clicked = reader.GetBool();
            if (clicked) Clicked?.Invoke(this);
            InvisibleTimer = 0f;
        };

        Client.ServerDisconnected += Dispose;
    }

    public override void Update(float delta)
    {
        InvisibleTimer += delta;
        Visible = InvisibleTimer < 0.3f;
    }

    public static void SpawnNetMouse(ClientUser user)
    {
        Bitmap cursor = Bitmap.Deserialize(user.CursorSprite);
        MouseNet NewMouse = new(user, cursor);
    }
}