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
ffeff92d
Commit
ffeff92d
authored
Jul 23, 2022
by
hartie95
Committed by
Luke H-W
Jul 26, 2022
Browse files
2.7+ prerendered cutscene support
parent
938b54c2
Changes
5
Hide whitespace changes
Inline
Side-by-side
src/main/java/emu/grasscutter/data/GameData.java
View file @
ffeff92d
...
@@ -8,6 +8,7 @@ import java.util.Map;
...
@@ -8,6 +8,7 @@ import java.util.Map;
import
emu.grasscutter.Grasscutter
;
import
emu.grasscutter.Grasscutter
;
import
emu.grasscutter.data.binout.*
;
import
emu.grasscutter.data.binout.*
;
import
emu.grasscutter.game.quest.QuestEncryptionKey
;
import
emu.grasscutter.utils.Utils
;
import
emu.grasscutter.utils.Utils
;
import
emu.grasscutter.data.excels.*
;
import
emu.grasscutter.data.excels.*
;
import
it.unimi.dsi.fastutil.ints.Int2ObjectLinkedOpenHashMap
;
import
it.unimi.dsi.fastutil.ints.Int2ObjectLinkedOpenHashMap
;
...
@@ -25,6 +26,7 @@ public class GameData {
...
@@ -25,6 +26,7 @@ public class GameData {
private
static
final
Map
<
String
,
OpenConfigEntry
>
openConfigEntries
=
new
HashMap
<>();
private
static
final
Map
<
String
,
OpenConfigEntry
>
openConfigEntries
=
new
HashMap
<>();
private
static
final
Map
<
String
,
ScenePointEntry
>
scenePointEntries
=
new
HashMap
<>();
private
static
final
Map
<
String
,
ScenePointEntry
>
scenePointEntries
=
new
HashMap
<>();
private
static
final
Int2ObjectMap
<
MainQuestData
>
mainQuestData
=
new
Int2ObjectOpenHashMap
<>();
private
static
final
Int2ObjectMap
<
MainQuestData
>
mainQuestData
=
new
Int2ObjectOpenHashMap
<>();
private
static
final
Int2ObjectMap
<
QuestEncryptionKey
>
questsKeys
=
new
Int2ObjectOpenHashMap
<>();
private
static
final
Int2ObjectMap
<
HomeworldDefaultSaveData
>
homeworldDefaultSaveData
=
new
Int2ObjectOpenHashMap
<>();
private
static
final
Int2ObjectMap
<
HomeworldDefaultSaveData
>
homeworldDefaultSaveData
=
new
Int2ObjectOpenHashMap
<>();
private
static
final
Int2ObjectMap
<
SceneNpcBornData
>
npcBornData
=
new
Int2ObjectOpenHashMap
<>();
private
static
final
Int2ObjectMap
<
SceneNpcBornData
>
npcBornData
=
new
Int2ObjectOpenHashMap
<>();
...
@@ -163,6 +165,10 @@ public class GameData {
...
@@ -163,6 +165,10 @@ public class GameData {
return
mainQuestData
;
return
mainQuestData
;
}
}
public
static
Int2ObjectMap
<
QuestEncryptionKey
>
getMainQuestEncryptionMap
()
{
return
questsKeys
;
}
public
static
Int2ObjectMap
<
HomeworldDefaultSaveData
>
getHomeworldDefaultSaveData
()
{
public
static
Int2ObjectMap
<
HomeworldDefaultSaveData
>
getHomeworldDefaultSaveData
()
{
return
homeworldDefaultSaveData
;
return
homeworldDefaultSaveData
;
}
}
...
...
src/main/java/emu/grasscutter/data/ResourceLoader.java
View file @
ffeff92d
package
emu.grasscutter.data
;
package
emu.grasscutter.data
;
import
java.io.*
;
import
java.lang.reflect.Type
;
import
java.nio.file.Files
;
import
java.nio.file.Path
;
import
java.util.*
;
import
java.util.Map.Entry
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
import
emu.grasscutter.data.binout.*
;
import
emu.grasscutter.game.world.SpawnDataEntry
;
import
emu.grasscutter.scripts.SceneIndexManager
;
import
emu.grasscutter.utils.Utils
;
import
lombok.SneakyThrows
;
import
org.reflections.Reflections
;
import
com.google.gson.JsonElement
;
import
com.google.gson.JsonElement
;
import
com.google.gson.annotations.SerializedName
;
import
com.google.gson.annotations.SerializedName
;
import
com.google.gson.reflect.TypeToken
;
import
com.google.gson.reflect.TypeToken
;
import
emu.grasscutter.Grasscutter
;
import
emu.grasscutter.Grasscutter
;
import
emu.grasscutter.data.binout.*
;
import
emu.grasscutter.data.binout.AbilityModifier.AbilityConfigData
;
import
emu.grasscutter.data.binout.AbilityModifier.AbilityConfigData
;
import
emu.grasscutter.data.binout.AbilityModifier.AbilityModifierAction
;
import
emu.grasscutter.data.binout.AbilityModifier.AbilityModifierAction
;
import
emu.grasscutter.data.binout.AbilityModifier.AbilityModifierActionType
;
import
emu.grasscutter.data.binout.AbilityModifier.AbilityModifierActionType
;
import
emu.grasscutter.data.common.PointData
;
import
emu.grasscutter.data.common.PointData
;
import
emu.grasscutter.data.common.ScenePointConfig
;
import
emu.grasscutter.data.common.ScenePointConfig
;
import
emu.grasscutter.game.world.SpawnDataEntry.*
;
import
emu.grasscutter.game.quest.QuestEncryptionKey
;
import
emu.grasscutter.game.world.SpawnDataEntry
;
import
emu.grasscutter.game.world.SpawnDataEntry.GridBlockId
;
import
emu.grasscutter.game.world.SpawnDataEntry.SpawnGroupEntry
;
import
emu.grasscutter.scripts.SceneIndexManager
;
import
emu.grasscutter.utils.Utils
;
import
it.unimi.dsi.fastutil.ints.Int2ObjectMap
;
import
it.unimi.dsi.fastutil.ints.Int2ObjectMap
;
import
lombok.SneakyThrows
;
import
org.reflections.Reflections
;
import
static
emu
.
grasscutter
.
config
.
Configuration
.*;
import
java.io.*
;
import
java.lang.reflect.Type
;
import
java.nio.file.Files
;
import
java.nio.file.Path
;
import
java.util.*
;
import
java.util.Map.Entry
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
import
static
emu
.
grasscutter
.
config
.
Configuration
.
RESOURCE
;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
import
static
emu
.
grasscutter
.
utils
.
Language
.
translate
;
public
class
ResourceLoader
{
public
class
ResourceLoader
{
...
@@ -417,6 +417,18 @@ public class ResourceLoader {
...
@@ -417,6 +417,18 @@ public class ResourceLoader {
GameData
.
getMainQuestDataMap
().
put
(
mainQuest
.
getId
(),
mainQuest
);
GameData
.
getMainQuestDataMap
().
put
(
mainQuest
.
getId
(),
mainQuest
);
}
}
try
(
Reader
reader
=
DataLoader
.
loadReader
(
"QuestEncryptionKeys.json"
))
{
List
<
QuestEncryptionKey
>
keys
=
Grasscutter
.
getGsonFactory
().
fromJson
(
reader
,
TypeToken
.
getParameterized
(
List
.
class
,
QuestEncryptionKey
.
class
).
getType
());
Int2ObjectMap
<
QuestEncryptionKey
>
questEncryptionMap
=
GameData
.
getMainQuestEncryptionMap
();
keys
.
forEach
(
key
->
questEncryptionMap
.
put
(
key
.
getMainQuestId
(),
key
));
Grasscutter
.
getLogger
().
info
(
"loaded {} quest keys."
,
questEncryptionMap
.
size
());
}
catch
(
Exception
e
)
{
Grasscutter
.
getLogger
().
error
(
"Unable to load quest keys."
,
e
);
}
Grasscutter
.
getLogger
().
debug
(
"Loaded "
+
GameData
.
getMainQuestDataMap
().
size
()
+
" MainQuestDatas."
);
Grasscutter
.
getLogger
().
debug
(
"Loaded "
+
GameData
.
getMainQuestDataMap
().
size
()
+
" MainQuestDatas."
);
}
}
...
...
src/main/java/emu/grasscutter/game/quest/GameMainQuest.java
View file @
ffeff92d
...
@@ -132,7 +132,8 @@ public class GameMainQuest {
...
@@ -132,7 +132,8 @@ public class GameMainQuest {
ParentQuest
.
Builder
proto
=
ParentQuest
.
newBuilder
()
ParentQuest
.
Builder
proto
=
ParentQuest
.
newBuilder
()
.
setParentQuestId
(
getParentQuestId
())
.
setParentQuestId
(
getParentQuestId
())
.
setIsFinished
(
isFinished
())
.
setIsFinished
(
isFinished
())
.
setParentQuestState
(
getState
().
getValue
());
.
setParentQuestState
(
getState
().
getValue
())
.
setCutsceneEncryptionKey
(
QuestManager
.
getQuestKey
(
parentQuestId
));
for
(
GameQuest
quest
:
this
.
getChildQuests
().
values
())
{
for
(
GameQuest
quest
:
this
.
getChildQuests
().
values
())
{
ChildQuest
childQuest
=
ChildQuest
.
newBuilder
()
ChildQuest
childQuest
=
ChildQuest
.
newBuilder
()
...
...
src/main/java/emu/grasscutter/game/quest/QuestEncryptionKey.java
0 → 100644
View file @
ffeff92d
package
emu.grasscutter.game.quest
;
import
lombok.AccessLevel
;
import
lombok.Data
;
import
lombok.experimental.FieldDefaults
;
@Data
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
QuestEncryptionKey
{
int
mainQuestId
;
long
encryptionKey
;
}
src/main/java/emu/grasscutter/game/quest/QuestManager.java
View file @
ffeff92d
...
@@ -2,8 +2,6 @@ package emu.grasscutter.game.quest;
...
@@ -2,8 +2,6 @@ package emu.grasscutter.game.quest;
import
java.util.*
;
import
java.util.*
;
import
java.util.function.Consumer
;
import
java.util.function.Consumer
;
import
java.util.stream.Collectors
;
import
emu.grasscutter.Grasscutter
;
import
emu.grasscutter.Grasscutter
;
import
emu.grasscutter.data.GameData
;
import
emu.grasscutter.data.GameData
;
import
emu.grasscutter.data.binout.MainQuestData
;
import
emu.grasscutter.data.binout.MainQuestData
;
...
@@ -23,6 +21,11 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
...
@@ -23,6 +21,11 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
public
class
QuestManager
extends
BasePlayerManager
{
public
class
QuestManager
extends
BasePlayerManager
{
private
final
Int2ObjectMap
<
GameMainQuest
>
quests
;
private
final
Int2ObjectMap
<
GameMainQuest
>
quests
;
public
static
long
getQuestKey
(
int
mainQuestId
){
QuestEncryptionKey
questEncryptionKey
=
GameData
.
getMainQuestEncryptionMap
().
get
(
mainQuestId
);
return
questEncryptionKey
!=
null
?
questEncryptionKey
.
getEncryptionKey
()
:
0L
;
}
public
QuestManager
(
Player
player
)
{
public
QuestManager
(
Player
player
)
{
super
(
player
);
super
(
player
);
this
.
quests
=
new
Int2ObjectOpenHashMap
<>();
this
.
quests
=
new
Int2ObjectOpenHashMap
<>();
...
...
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