diff --git a/frontend/src/components/editor/SplitEditor.tsx b/frontend/src/components/editor/SplitEditor.tsx
index 8cc0349..2c93c0a 100644
--- a/frontend/src/components/editor/SplitEditor.tsx
+++ b/frontend/src/components/editor/SplitEditor.tsx
@@ -446,11 +446,11 @@ export default function SplitEditor({ splitFilePayload }: SplitEditorParams) {
-
+
setAttempts(Number(e.target.value))}
value={attempts ?? 0}
- id="attempts"
+ id="runattempts"
name="attempts"
inputMode="numeric"
/>
diff --git a/frontend/src/components/splitter/SegmentList.tsx b/frontend/src/components/splitter/SegmentList.tsx
index 442b9f0..bc0a0db 100644
--- a/frontend/src/components/splitter/SegmentList.tsx
+++ b/frontend/src/components/splitter/SegmentList.tsx
@@ -188,9 +188,39 @@ function isVisible(id: string, parentById: Map
, expandedP
}
export default function SegmentList({ sessionPayload, comparison }: SplitListParameters) {
+ const [completeClassName, setCompleteClassName] = React.useState("");
const activeRowRef = useRef(null);
const containerRef = useRef(null);
+ useEffect(() => {
+ let className = "";
+ if (sessionPayload.loaded_split_file &&
+ sessionPayload.current_run &&
+ sessionPayload.leaf_segments) {
+ if(Object.keys(sessionPayload.current_run.splits).length
+ == sessionPayload.leaf_segments.length) {
+ className = "complete";
+
+ const pb = sessionPayload.loaded_split_file.pb;
+ console.log(sessionPayload.loaded_split_file)
+ if (pb) {
+ const segments = sessionPayload.leaf_segments;
+ if (segments) {
+ const finalSplit = segments[segments.length - 1].id;
+ const finalTime = sessionPayload.current_run.splits[finalSplit].current_cumulative;
+ if (finalTime < pb.total_time) {
+ className += " pb";
+ }
+ }
+ }
+ }
+ setCompleteClassName(className);
+ } else {
+ setCompleteClassName("");
+ }
+
+ }, [sessionPayload]);
+
const targets = useMemo(() => {
let cumulative = 0;
const results: Targets = { cumulative: {}, individual: {} };
@@ -353,7 +383,7 @@ export default function SegmentList({ sessionPayload, comparison }: SplitListPar
// Delta pulled from last leaf vs its cumulative target
let parentDelta: JSX.Element | null = null;
- if (lastLeafId && lastLeafSplit) {
+ if (lastLeafId) {
const leafSeg = segmentById.get(lastLeafId);
const cTarget = targets.cumulative[lastLeafId] ?? null;
const iTarget = targets.individual[lastLeafId] ?? null;
@@ -363,19 +393,21 @@ export default function SegmentList({ sessionPayload, comparison }: SplitListPar
}
if (cTarget != null) {
- const delta = lastLeafSplit.current_cumulative - cTarget;
- parentDelta = getDeltaDisplayTime(delta);
+ if (lastLeafSplit != null) {
+ const delta = lastLeafSplit.current_cumulative - cTarget;
+ parentDelta = getDeltaDisplayTime(delta);
+ }
}
}
main.push(
- |
+ |
{toggle}
{segmentData.Segment.name}
|
- {parentDelta} |
- {parentComparison} |
+ {parentDelta} |
+ {parentComparison} |
,
);
continue;
@@ -423,26 +455,26 @@ export default function SegmentList({ sessionPayload, comparison }: SplitListPar
]);
return (
-
-
-
+
+
+
{sessionPayload.loaded_split_file?.game_name}
-
+
{sessionPayload.loaded_split_file?.game_category}
-
{sessionPayload.loaded_split_file?.attempts}
+ {sessionPayload.loaded_split_file?.attempts}
-
-
-
+
+
-
-
+
diff --git a/session/service.go b/session/service.go
index 1a259f3..bd09bc0 100644
--- a/session/service.go
+++ b/session/service.go
@@ -131,6 +131,7 @@ func (s *Service) SetLoadedSplitFile(sf SplitFile) {
s.currentSegmentIndex = -1
s.sessionState = Idle
s.dirty = false
+ s.loadedSplitFile.BuildStats()
logger.Infof(logModule, "%s loaded in session (segments total/leaf %d/%d)",
sf.GameName, len(sf.Segments), len(s.leafSegments))
}
@@ -151,6 +152,7 @@ func (s *Service) Split() SplitResult {
case Running:
return s.advanceRun()
case Finished:
+ s.loadedSplitFile.BuildStats()
s.resetLocked()
return SplitReset
case Paused:
@@ -326,7 +328,6 @@ func (s *Service) resetLocked() {
func (s *Service) PersistRunToSession() {
if s.currentRun != nil {
s.loadedSplitFile.Runs = append(s.loadedSplitFile.Runs, *s.currentRun)
- s.loadedSplitFile.BuildStats()
logger.Info(logModule, "run persisted to session, new stats built")
} else {
logger.Warn(logModule, "persist requested on nil current run")
diff --git a/skin/default-skin.zip b/skin/default-skin.zip
index e61bcf9..fc15023 100644
Binary files a/skin/default-skin.zip and b/skin/default-skin.zip differ