-
Notifications
You must be signed in to change notification settings - Fork 45
/
Copy pathPacket.cs
119 lines (100 loc) · 3.42 KB
/
Packet.cs
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
using System;
using System.Collections.ObjectModel;
using Newtonsoft.Json;
namespace MixchSitePlugin
{
public class Packet
{
[JsonProperty("kind")]
public int Kind { get; set; }
[JsonProperty("user_id")]
public int UserId
{
get { return IsSystemMessage() || Anonymous == 1 ? 0 : _userId; }
set { _userId = value; }
}
private int _userId;
[JsonProperty("name")]
public string Name
{
get { return IsSystemMessage() ? "" : _name; }
set { _name = value; }
}
private string _name;
[JsonProperty("created")]
public int Created { get; set; }
[JsonProperty("body")]
public string Body { get; set; }
[JsonProperty("resource_id")]
public int ResourceId { get; set; }
[JsonProperty("count")]
public int Count { get; set; }
[JsonProperty("title")]
public string Title { get; set; }
[JsonProperty("elapsed")]
public int Elapsed { get; set; }
[JsonProperty("display_point")]
public int DisplayPoint { get; set; }
[JsonProperty("status")]
public int Status { get; set; }
[JsonProperty("anonymous")]
public int Anonymous { get; set; }
public bool IsSystemMessage()
{
switch ((MixchMessageType)Kind)
{
case MixchMessageType.Share:
case MixchMessageType.EnterNewbie:
case MixchMessageType.EnterLevel:
case MixchMessageType.Follow:
case MixchMessageType.EnterFanclub:
return true;
}
return false;
}
public bool IsStatus()
{
return (MixchMessageType)Kind == MixchMessageType.Status;
}
public bool HasMessage()
{
return !string.IsNullOrEmpty(Message());
}
public string Message()
{
switch ((MixchMessageType)Kind)
{
case MixchMessageType.Comment:
case MixchMessageType.Share:
case MixchMessageType.EnterNewbie:
case MixchMessageType.EnterLevel:
case MixchMessageType.Follow:
case MixchMessageType.EnterFanclub:
return Body;
case MixchMessageType.SuperComment:
return $"【スパコメ {ItemName()}】{Body}";
case MixchMessageType.Stamp:
return $"【スタンプ】「{ItemName()}」で応援しました";
case MixchMessageType.PoiPoi:
return $"【アイテム】{Count}個の「{ItemName()}」で応援しました";
case MixchMessageType.Item:
case MixchMessageType.CoinBox:
return $"【アイテム】「{ItemName()}」で応援しました";
}
return "";
}
public string PoiPoiKey()
{
return $"{UserId}_{ResourceId}";
}
public string DisplayPointString()
{
return String.Format("盛り上がり度: {0:#,0}", DisplayPoint);
}
private string ItemName()
{
var name = Item.NameByResourceId(ResourceId);
return !string.IsNullOrEmpty(name) ? name : $"名称不明(id={ResourceId})";
}
}
}