Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
ziqian zhang
Grasscutter
Commits
12146ff0
Commit
12146ff0
authored
Jun 26, 2022
by
Akka
Committed by
Melledy
Jun 29, 2022
Browse files
implement the music game
parent
977f1ca2
Changes
32
Show whitespace changes
Inline
Side-by-side
src/main/java/emu/grasscutter/server/packet/recv/HandlerMusicGameGetBeatmapReq.java
0 → 100644
View file @
12146ff0
package
emu.grasscutter.server.packet.recv
;
import
emu.grasscutter.game.activity.musicgame.MusicGameBeatmap
;
import
emu.grasscutter.net.packet.Opcodes
;
import
emu.grasscutter.net.packet.PacketHandler
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.proto.MusicGameGetBeatmapReqOuterClass
;
import
emu.grasscutter.server.game.GameSession
;
import
emu.grasscutter.server.packet.send.PacketMusicGameGetBeatmapRsp
;
@Opcodes
(
PacketOpcodes
.
MusicGameGetBeatmapReq
)
public
class
HandlerMusicGameGetBeatmapReq
extends
PacketHandler
{
@Override
public
void
handle
(
GameSession
session
,
byte
[]
header
,
byte
[]
payload
)
throws
Exception
{
var
req
=
MusicGameGetBeatmapReqOuterClass
.
MusicGameGetBeatmapReq
.
parseFrom
(
payload
);
var
musicGameBeatmap
=
MusicGameBeatmap
.
getByShareId
(
req
.
getMusicShareId
());
if
(
musicGameBeatmap
==
null
){
return
;
}
session
.
send
(
new
PacketMusicGameGetBeatmapRsp
(
musicGameBeatmap
.
toBriefProto
().
build
(),
musicGameBeatmap
.
toProto
(),
req
));
}
}
src/main/java/emu/grasscutter/server/packet/recv/HandlerMusicGameSearchBeatmapReq.java
0 → 100644
View file @
12146ff0
package
emu.grasscutter.server.packet.recv
;
import
emu.grasscutter.game.activity.musicgame.MusicGameBeatmap
;
import
emu.grasscutter.net.packet.Opcodes
;
import
emu.grasscutter.net.packet.PacketHandler
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.proto.MusicGameSearchBeatmapReqOuterClass
;
import
emu.grasscutter.server.game.GameSession
;
import
emu.grasscutter.server.packet.send.PacketMusicGameSearchBeatmapRsp
;
@Opcodes
(
PacketOpcodes
.
MusicGameSearchBeatmapReq
)
public
class
HandlerMusicGameSearchBeatmapReq
extends
PacketHandler
{
@Override
public
void
handle
(
GameSession
session
,
byte
[]
header
,
byte
[]
payload
)
throws
Exception
{
var
req
=
MusicGameSearchBeatmapReqOuterClass
.
MusicGameSearchBeatmapReq
.
parseFrom
(
payload
);
var
musicGameBeatmap
=
MusicGameBeatmap
.
getByShareId
(
req
.
getMusicShareId
());
if
(
musicGameBeatmap
==
null
){
session
.
send
(
new
PacketMusicGameSearchBeatmapRsp
(
11153
,
req
.
getUnknownEnum1
()));
return
;
}
session
.
send
(
new
PacketMusicGameSearchBeatmapRsp
(
musicGameBeatmap
.
toBriefProto
().
build
(),
req
.
getUnknownEnum1
()));
}
}
src/main/java/emu/grasscutter/server/packet/recv/HandlerMusicGameSettleReq.java
View file @
12146ff0
package
emu.grasscutter.server.packet.recv
;
import
emu.grasscutter.game.activity.musicgame.MusicGameActivityHandler
;
import
emu.grasscutter.game.activity.musicgame.MusicGamePlayerData
;
import
emu.grasscutter.game.props.ActivityType
;
import
emu.grasscutter.game.props.WatcherTriggerType
;
import
emu.grasscutter.net.packet.Opcodes
;
import
emu.grasscutter.net.packet.PacketHandler
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.proto.MusicGameSettleReqOuterClass
;
import
emu.grasscutter.server.game.GameSession
;
import
emu.grasscutter.server.packet.send.PacketActivityInfoNotify
;
import
emu.grasscutter.server.packet.send.PacketMusicGameSettleRsp
;
@Opcodes
(
PacketOpcodes
.
MusicGameSettleReq
)
...
...
@@ -15,15 +19,40 @@ public class HandlerMusicGameSettleReq extends PacketHandler {
public
void
handle
(
GameSession
session
,
byte
[]
header
,
byte
[]
payload
)
throws
Exception
{
var
req
=
MusicGameSettleReqOuterClass
.
MusicGameSettleReq
.
parseFrom
(
payload
);
var
playerData
=
session
.
getPlayer
().
getActivityManager
().
getPlayerActivityDataByActivityType
(
ActivityType
.
NEW_ACTIVITY_MUSIC_GAME
);
if
(
playerData
.
isEmpty
()){
return
;
}
var
handler
=
(
MusicGameActivityHandler
)
playerData
.
get
().
getActivityHandler
();
boolean
isNewRecord
=
false
;
// check if custom beatmap
if
(
req
.
getMusicShareId
()
==
0
){
session
.
getPlayer
().
getActivityManager
().
triggerWatcher
(
WatcherTriggerType
.
TRIGGER_FLEUR_FAIR_MUSIC_GAME_REACH_SCORE
,
String
.
valueOf
(
req
.
getMusicBasicId
()),
String
.
valueOf
(
req
.
getScore
())
);
isNewRecord
=
handler
.
setMusicGameRecord
(
playerData
.
get
(),
MusicGamePlayerData
.
MusicGameRecord
.
of
()
.
musicId
(
req
.
getMusicBasicId
())
.
maxCombo
(
req
.
getMaxCombo
())
.
maxScore
(
req
.
getScore
())
.
build
());
// update activity info
session
.
send
(
new
PacketActivityInfoNotify
(
handler
.
toProto
(
playerData
.
get
())));
}
else
{
handler
.
setMusicGameCustomBeatmapRecord
(
playerData
.
get
(),
MusicGamePlayerData
.
CustomBeatmapRecord
.
of
()
.
musicShareId
(
req
.
getMusicShareId
())
.
score
(
req
.
getMaxCombo
())
.
settle
(
req
.
getSuccess
())
.
build
());
}
//session.send(new PacketMusicGameSettleRsp(req.getMusicBasicId()));
session
.
send
(
new
PacketMusicGameSettleRsp
(
req
.
getMusicBasicId
()));
session
.
send
(
new
PacketMusicGameSettleRsp
(
req
.
getMusicBasicId
(),
req
.
getMusicShareId
(),
isNewRecord
));
}
}
src/main/java/emu/grasscutter/server/packet/recv/HandlerMusicGameStartReq.java
View file @
12146ff0
...
...
@@ -14,7 +14,7 @@ public class HandlerMusicGameStartReq extends PacketHandler {
public
void
handle
(
GameSession
session
,
byte
[]
header
,
byte
[]
payload
)
throws
Exception
{
var
req
=
MusicGameStartReqOuterClass
.
MusicGameStartReq
.
parseFrom
(
payload
);
session
.
send
(
new
PacketMusicGameStartRsp
(
req
.
getMusicBasicId
()));
session
.
send
(
new
PacketMusicGameStartRsp
(
req
.
getMusicBasicId
()
,
req
.
getMusicShareId
()
));
}
}
src/main/java/emu/grasscutter/server/packet/send/PacketActivityTakeWatcherRewardRsp.java
0 → 100644
View file @
12146ff0
package
emu.grasscutter.server.packet.send
;
import
emu.grasscutter.net.packet.BasePacket
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.proto.ActivityTakeWatcherRewardRspOuterClass
;
public
class
PacketActivityTakeWatcherRewardRsp
extends
BasePacket
{
public
PacketActivityTakeWatcherRewardRsp
(
int
activityId
,
int
watcherId
)
{
super
(
PacketOpcodes
.
ActivityTakeWatcherRewardRsp
);
var
proto
=
ActivityTakeWatcherRewardRspOuterClass
.
ActivityTakeWatcherRewardRsp
.
newBuilder
();
proto
.
setActivityId
(
activityId
)
.
setWatcherId
(
watcherId
);
this
.
setData
(
proto
);
}
}
src/main/java/emu/grasscutter/server/packet/send/PacketGetActivityInfoRsp.java
View file @
12146ff0
...
...
@@ -14,7 +14,7 @@ public class PacketGetActivityInfoRsp extends BasePacket {
var
proto
=
GetActivityInfoRsp
.
newBuilder
();
activityIdList
.
stream
()
.
map
(
activityManager:
:
getInfoProto
)
.
map
(
activityManager:
:
getInfoProto
ByActivityId
)
.
forEach
(
proto:
:
addActivityInfoList
);
this
.
setData
(
proto
);
...
...
src/main/java/emu/grasscutter/server/packet/send/PacketMusicGameCreateBeatmapRsp.java
0 → 100644
View file @
12146ff0
package
emu.grasscutter.server.packet.send
;
import
emu.grasscutter.net.packet.BasePacket
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.proto.MusicGameCreateBeatmapRspOuterClass
;
import
emu.grasscutter.net.proto.MusicGameUnknown1EnumOuterClass
;
public
class
PacketMusicGameCreateBeatmapRsp
extends
BasePacket
{
public
PacketMusicGameCreateBeatmapRsp
(
long
musicShareId
,
MusicGameUnknown1EnumOuterClass
.
MusicGameUnknown1Enum
unknownEnum1
)
{
super
(
PacketOpcodes
.
MusicGameCreateBeatmapRsp
);
var
proto
=
MusicGameCreateBeatmapRspOuterClass
.
MusicGameCreateBeatmapRsp
.
newBuilder
();
proto
.
setMusicShareId
(
musicShareId
)
.
setUnknownEnum1
(
unknownEnum1
);
this
.
setData
(
proto
);
}
}
src/main/java/emu/grasscutter/server/packet/send/PacketMusicGameGetBeatmapRsp.java
0 → 100644
View file @
12146ff0
package
emu.grasscutter.server.packet.send
;
import
emu.grasscutter.net.packet.BasePacket
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.proto.MusicBeatmapOuterClass
;
import
emu.grasscutter.net.proto.MusicBriefInfoOuterClass
;
import
emu.grasscutter.net.proto.MusicGameGetBeatmapReqOuterClass
;
import
emu.grasscutter.net.proto.MusicGameGetBeatmapRspOuterClass
;
public
class
PacketMusicGameGetBeatmapRsp
extends
BasePacket
{
public
PacketMusicGameGetBeatmapRsp
(
MusicBriefInfoOuterClass
.
MusicBriefInfo
briefInfo
,
MusicBeatmapOuterClass
.
MusicBeatmap
musicRecord
,
MusicGameGetBeatmapReqOuterClass
.
MusicGameGetBeatmapReq
req
)
{
super
(
PacketOpcodes
.
MusicGameGetBeatmapRsp
);
var
proto
=
MusicGameGetBeatmapRspOuterClass
.
MusicGameGetBeatmapRsp
.
newBuilder
();
proto
.
setMusicBriefInfo
(
briefInfo
)
.
setMusicShareId
(
briefInfo
.
getMusicShareId
())
.
setMusicRecord
(
musicRecord
)
.
setUnknownEnum1
(
req
.
getUnknownEnum1
())
.
setReqType
(
req
.
getReqType
())
;
this
.
setData
(
proto
);
}
}
src/main/java/emu/grasscutter/server/packet/send/PacketMusicGameSearchBeatmapRsp.java
0 → 100644
View file @
12146ff0
package
emu.grasscutter.server.packet.send
;
import
emu.grasscutter.net.packet.BasePacket
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.proto.MusicBriefInfoOuterClass
;
import
emu.grasscutter.net.proto.MusicGameSearchBeatmapRspOuterClass
;
import
emu.grasscutter.net.proto.MusicGameUnknown1EnumOuterClass
;
public
class
PacketMusicGameSearchBeatmapRsp
extends
BasePacket
{
public
PacketMusicGameSearchBeatmapRsp
(
int
ret
,
MusicGameUnknown1EnumOuterClass
.
MusicGameUnknown1Enum
unknownEnum1
)
{
super
(
PacketOpcodes
.
MusicGameSearchBeatmapRsp
);
var
proto
=
MusicGameSearchBeatmapRspOuterClass
.
MusicGameSearchBeatmapRsp
.
newBuilder
();
proto
.
setRetcode
(
ret
)
.
setUnknownEnum1
(
unknownEnum1
);
this
.
setData
(
proto
);
}
public
PacketMusicGameSearchBeatmapRsp
(
MusicBriefInfoOuterClass
.
MusicBriefInfo
briefInfo
,
MusicGameUnknown1EnumOuterClass
.
MusicGameUnknown1Enum
unknownEnum1
)
{
super
(
PacketOpcodes
.
MusicGameSearchBeatmapRsp
);
var
proto
=
MusicGameSearchBeatmapRspOuterClass
.
MusicGameSearchBeatmapRsp
.
newBuilder
();
proto
.
setMusicBriefInfo
(
briefInfo
)
.
setUnknownEnum1
(
unknownEnum1
);
this
.
setData
(
proto
);
}
}
src/main/java/emu/grasscutter/server/packet/send/PacketMusicGameSettleRsp.java
View file @
12146ff0
...
...
@@ -6,13 +6,14 @@ import emu.grasscutter.net.proto.MusicGameSettleRspOuterClass;
public
class
PacketMusicGameSettleRsp
extends
BasePacket
{
public
PacketMusicGameSettleRsp
(
int
musicBasicId
)
{
public
PacketMusicGameSettleRsp
(
int
musicBasicId
,
long
musicShareId
,
boolean
isNewRecord
)
{
super
(
PacketOpcodes
.
MusicGameSettleRsp
);
var
proto
=
MusicGameSettleRspOuterClass
.
MusicGameSettleRsp
.
newBuilder
();
proto
.
setMusicBasicId
(
musicBasicId
)
.
setIsNewRecord
(
true
);
.
setMusicShareId
(
musicShareId
)
.
setIsNewRecord
(
isNewRecord
);
this
.
setData
(
proto
);
}
...
...
src/main/java/emu/grasscutter/server/packet/send/PacketMusicGameStartRsp.java
View file @
12146ff0
...
...
@@ -6,12 +6,13 @@ import emu.grasscutter.net.proto.MusicGameStartRspOuterClass;
public
class
PacketMusicGameStartRsp
extends
BasePacket
{
public
PacketMusicGameStartRsp
(
int
musicBasicId
)
{
public
PacketMusicGameStartRsp
(
int
musicBasicId
,
long
musicShareId
)
{
super
(
PacketOpcodes
.
MusicGameStartRsp
);
var
proto
=
MusicGameStartRspOuterClass
.
MusicGameStartRsp
.
newBuilder
();
proto
.
setMusicBasicId
(
musicBasicId
);
proto
.
setMusicBasicId
(
musicBasicId
)
.
setMusicShareId
(
musicShareId
);
this
.
setData
(
proto
);
}
...
...
src/main/resources/defaults/data/ActivityConfig.json
View file @
12146ff0
...
...
@@ -2,6 +2,7 @@
{
"activityId"
:
5072
,
"activityType"
:
2202
,
"scheduleId"
:
5072001
,
"meetCondList"
:
[
5072001
,
5072002
,
...
...
@@ -9,7 +10,10 @@
5072004
,
5072005
,
5072006
,
5072007
5072007
,
5072008
,
5072009
,
5072013
],
"beginTime"
:
"2022-05-01T00:00:00+08:00"
,
"endTime"
:
"2023-05-01T00:00:00+08:00"
...
...
Prev
1
2
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment