S7-01 + S7-02
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
using GameFramework.Event;
|
||||
using GameFramework.Fsm;
|
||||
using GameFramework.Procedure;
|
||||
using System;
|
||||
using GeometryTD.CustomEvent;
|
||||
using GeometryTD.CustomUtility;
|
||||
using GeometryTD.Definition;
|
||||
using GeometryTD.UI;
|
||||
using UnityGameFramework.Runtime;
|
||||
@@ -34,13 +36,19 @@ namespace GeometryTD.Procedure
|
||||
GameEntry.EventNode.OnInit();
|
||||
GameEntry.CombatNode.OnInit(LevelThemeType.Plain);
|
||||
GameEntry.ShopNode.OnInit();
|
||||
GameEntry.PlayerInventory?.OnInit();
|
||||
|
||||
string runId = Guid.NewGuid().ToString("N");
|
||||
int runSeed = RunStateFactory.CreateRunSeed();
|
||||
BackpackInventoryData initialInventory = InventorySeedUtility.CreateSampleInventory(runSeed);
|
||||
GameEntry.PlayerInventory?.OnInit(initialInventory);
|
||||
|
||||
_currentRunState = RunStateFactory.CreateFixedRun(
|
||||
LevelThemeType.Plain,
|
||||
GameEntry.PlayerInventory != null
|
||||
? GameEntry.PlayerInventory.GetInventorySnapshot()
|
||||
: null);
|
||||
: initialInventory,
|
||||
runId,
|
||||
runSeed);
|
||||
|
||||
_repoFormUseCase = new RepoFormUseCase();
|
||||
GameEntry.UIRouter.BindUIUseCase(UIFormType.RepoForm, _repoFormUseCase);
|
||||
@@ -259,6 +267,7 @@ namespace GeometryTD.Procedure
|
||||
GameEntry.CombatNode.StartCombat(
|
||||
currentNode.LinkedLevelId,
|
||||
_currentRunState.RunId,
|
||||
_currentRunState.RunSeed,
|
||||
currentNode.NodeId,
|
||||
currentNode.NodeType,
|
||||
currentNode.SequenceIndex);
|
||||
@@ -273,6 +282,7 @@ namespace GeometryTD.Procedure
|
||||
case RunNodeType.Shop:
|
||||
GameEntry.ShopNode.StartShop(
|
||||
_currentRunState.RunId,
|
||||
_currentRunState.RunSeed,
|
||||
currentNode.NodeId,
|
||||
currentNode.NodeType,
|
||||
currentNode.SequenceIndex);
|
||||
|
||||
@@ -71,11 +71,13 @@ namespace GeometryTD.Procedure
|
||||
|
||||
internal RunState(
|
||||
string runId,
|
||||
int runSeed,
|
||||
LevelThemeType themeType,
|
||||
List<RunNodeState> nodes,
|
||||
BackpackInventoryData runInventorySnapshot)
|
||||
{
|
||||
RunId = string.IsNullOrWhiteSpace(runId) ? Guid.NewGuid().ToString("N") : runId;
|
||||
RunSeed = runSeed == 0 ? RunStateFactory.CreateRunSeed() : runSeed;
|
||||
ThemeType = themeType;
|
||||
_nodes = nodes ?? new List<RunNodeState>();
|
||||
RunInventorySnapshot = InventoryCloneUtility.CloneInventory(runInventorySnapshot);
|
||||
@@ -85,6 +87,8 @@ namespace GeometryTD.Procedure
|
||||
|
||||
public string RunId { get; internal set; }
|
||||
|
||||
public int RunSeed { get; internal set; }
|
||||
|
||||
public LevelThemeType ThemeType { get; internal set; }
|
||||
|
||||
public int CurrentNodeIndex { get; internal set; }
|
||||
|
||||
@@ -8,17 +8,19 @@ namespace GeometryTD.Procedure
|
||||
public static RunState CreateFixedRun(
|
||||
LevelThemeType themeType,
|
||||
BackpackInventoryData initialInventorySnapshot,
|
||||
string runId = null)
|
||||
string runId = null,
|
||||
int runSeed = 0)
|
||||
{
|
||||
IReadOnlyList<RunNodeSeed> fixedNodeSeeds = FixedRunNodeSequenceBuilder.Build(themeType);
|
||||
return Create(themeType, initialInventorySnapshot, fixedNodeSeeds, runId);
|
||||
return Create(themeType, initialInventorySnapshot, fixedNodeSeeds, runId, runSeed);
|
||||
}
|
||||
|
||||
public static RunState Create(
|
||||
LevelThemeType themeType,
|
||||
BackpackInventoryData initialInventorySnapshot,
|
||||
IEnumerable<RunNodeSeed> nodeSeeds,
|
||||
string runId = null)
|
||||
string runId = null,
|
||||
int runSeed = 0)
|
||||
{
|
||||
List<RunNodeState> nodes = new List<RunNodeState>();
|
||||
if (nodeSeeds != null)
|
||||
@@ -44,7 +46,13 @@ namespace GeometryTD.Procedure
|
||||
}
|
||||
}
|
||||
|
||||
return new RunState(runId, themeType, nodes, initialInventorySnapshot);
|
||||
return new RunState(runId, runSeed, themeType, nodes, initialInventorySnapshot);
|
||||
}
|
||||
|
||||
public static int CreateRunSeed()
|
||||
{
|
||||
int seed = System.Guid.NewGuid().GetHashCode();
|
||||
return seed == 0 ? 1 : seed;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user