Color event

This commit is contained in:
fu-majime 2024-04-01 15:22:59 +09:00
parent 5f58c9552e
commit f061ebcfeb
9 changed files with 558 additions and 206 deletions

View file

@ -981,7 +981,7 @@ SpriteRenderer:
m_SortingLayer: 0
m_SortingOrder: 3
m_Sprite: {fileID: 21300000, guid: 0f6862a559f12a84488f618e606bec2e, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 0.5411765}
m_Color: {r: 1, g: 1, b: 1, a: 0.41960785}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
@ -1191,7 +1191,6 @@ Transform:
- {fileID: 1588626132168789274}
- {fileID: 5118038246686077097}
- {fileID: 1945548446059564651}
- {fileID: 7115372295053300498}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -1233,6 +1232,21 @@ MonoBehaviour:
impactMaterial: {fileID: 2100000, guid: ab21c8af63622c646a685aa8b7c3c9a4, type: 2}
conveyerBelt: {fileID: 9075535989594452730}
blackout: {fileID: 3757292687665858054}
fillerRenderer:
- {fileID: 5394476682869087445}
- {fileID: 8336940640779813026}
- {fileID: 3164996977270515796}
- {fileID: 7828360752312686874}
otherRenderer:
- {fileID: 5193366646839469736}
- {fileID: 5660383285804467032}
- {fileID: 8778064963795826291}
- {fileID: 7995760259006827823}
- {fileID: 7154959971140400697}
- {fileID: 727036483507506023}
- {fileID: 68801378834844227}
- {fileID: 20845509605144322}
BGPlane: {fileID: 4596246901150042945}
--- !u!1 &7022196375650281210
GameObject:
m_ObjectHideFlags: 0
@ -1803,7 +1817,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
propertyPath: m_LocalPosition.x
value: -3.87
value: -3.84
objectReference: {fileID: 0}
- target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
propertyPath: m_LocalPosition.y
@ -1862,6 +1876,11 @@ SpriteRenderer:
m_CorrespondingSourceObject: {fileID: 670297123598137949, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
m_PrefabInstance: {fileID: 1298767332955391950}
m_PrefabAsset: {fileID: 0}
--- !u!212 &5660383285804467032 stripped
SpriteRenderer:
m_CorrespondingSourceObject: {fileID: 6668598056782333078, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
m_PrefabInstance: {fileID: 1298767332955391950}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &1484241650340684350
PrefabInstance:
m_ObjectHideFlags: 0
@ -1875,7 +1894,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
propertyPath: m_LocalPosition.x
value: -5.1
value: -5.07
objectReference: {fileID: 0}
- target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
propertyPath: m_LocalPosition.y
@ -1934,6 +1953,11 @@ SpriteRenderer:
m_CorrespondingSourceObject: {fileID: 670297123598137949, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
m_PrefabInstance: {fileID: 1484241650340684350}
m_PrefabAsset: {fileID: 0}
--- !u!212 &5193366646839469736 stripped
SpriteRenderer:
m_CorrespondingSourceObject: {fileID: 6668598056782333078, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
m_PrefabInstance: {fileID: 1484241650340684350}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &2691583618534683365
PrefabInstance:
m_ObjectHideFlags: 0
@ -1947,7 +1971,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
propertyPath: m_LocalPosition.x
value: -2.65
value: -2.62
objectReference: {fileID: 0}
- target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
propertyPath: m_LocalPosition.y
@ -2006,6 +2030,11 @@ Animator:
m_CorrespondingSourceObject: {fileID: 1889225549270412632, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
m_PrefabInstance: {fileID: 2691583618534683365}
m_PrefabAsset: {fileID: 0}
--- !u!212 &8778064963795826291 stripped
SpriteRenderer:
m_CorrespondingSourceObject: {fileID: 6668598056782333078, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
m_PrefabInstance: {fileID: 2691583618534683365}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &3638129006627686841
PrefabInstance:
m_ObjectHideFlags: 0
@ -2019,7 +2048,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
propertyPath: m_LocalPosition.x
value: 2.55
value: 2.58
objectReference: {fileID: 0}
- target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
propertyPath: m_LocalPosition.y
@ -2078,6 +2107,11 @@ SpriteRenderer:
m_CorrespondingSourceObject: {fileID: 670297123598137949, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
m_PrefabInstance: {fileID: 3638129006627686841}
m_PrefabAsset: {fileID: 0}
--- !u!212 &7995760259006827823 stripped
SpriteRenderer:
m_CorrespondingSourceObject: {fileID: 6668598056782333078, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
m_PrefabInstance: {fileID: 3638129006627686841}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &4593698792861692591
PrefabInstance:
m_ObjectHideFlags: 0
@ -2091,7 +2125,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
propertyPath: m_LocalPosition.x
value: 3.82
value: 3.85
objectReference: {fileID: 0}
- target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
propertyPath: m_LocalPosition.y
@ -2150,67 +2184,10 @@ SpriteRenderer:
m_CorrespondingSourceObject: {fileID: 670297123598137949, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
m_PrefabInstance: {fileID: 4593698792861692591}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &5998474256261010265
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 5681901217470064799}
m_Modifications:
- target: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3}
propertyPath: m_RootOrder
value: 3
objectReference: {fileID: 0}
- target: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3}
propertyPath: m_LocalPosition.y
value: -4.52
objectReference: {fileID: 0}
- target: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7038732336128464859, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3}
propertyPath: m_Name
value: BotSmall
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3}
--- !u!4 &7115372295053300498 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3566918977115226187, guid: 8041c7a98068d5c438ea1d3814c5fe8c, type: 3}
m_PrefabInstance: {fileID: 5998474256261010265}
--- !u!212 &7154959971140400697 stripped
SpriteRenderer:
m_CorrespondingSourceObject: {fileID: 6668598056782333078, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
m_PrefabInstance: {fileID: 4593698792861692591}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &6241264839279890417
PrefabInstance:
@ -2225,7 +2202,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
propertyPath: m_LocalPosition.x
value: 5.1
value: 5.13
objectReference: {fileID: 0}
- target: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
propertyPath: m_LocalPosition.y
@ -2269,6 +2246,11 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
--- !u!212 &727036483507506023 stripped
SpriteRenderer:
m_CorrespondingSourceObject: {fileID: 6668598056782333078, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}
m_PrefabInstance: {fileID: 6241264839279890417}
m_PrefabAsset: {fileID: 0}
--- !u!4 &5170411475464246758 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 1251315264588323351, guid: 672acf3ada15b4b44a8d1580bad1900c, type: 3}

View file

@ -26,7 +26,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 630223578108791356}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0.78, z: 0}
m_LocalPosition: {x: 0, y: 0.79, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
@ -133,7 +133,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1038822625059552157}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 1.66, z: 0}
m_LocalPosition: {x: 0, y: 1.67, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
@ -914,7 +914,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7716400162364290482}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0.68, z: 0}
m_LocalPosition: {x: 0, y: 0.67, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
@ -998,7 +998,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7983486945364815282}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 1.25, z: 0}
m_LocalPosition: {x: 0, y: 1.24, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []

View file

@ -15,7 +15,41 @@ AnimationClip:
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves: []
m_ScaleCurves: []
m_ScaleCurves:
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: {x: 1, y: 1, z: 1}
inSlope: {x: Infinity, y: Infinity, z: Infinity}
outSlope: {x: Infinity, y: Infinity, z: Infinity}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 0.33333334
value: {x: 1, y: 1, z: 1}
inSlope: {x: Infinity, y: Infinity, z: Infinity}
outSlope: {x: Infinity, y: Infinity, z: Infinity}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 0.41666666
value: {x: -1, y: 1, z: 1}
inSlope: {x: Infinity, y: Infinity, z: Infinity}
outSlope: {x: Infinity, y: Infinity, z: Infinity}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
path:
m_FloatCurves:
- curve:
serializedVersion: 2
@ -44,6 +78,14 @@ AnimationClip:
value: {fileID: -1887099881, guid: 4b169e5816c948044a7180609226f690, type: 3}
- time: 0.16666667
value: {fileID: 1609464891, guid: 4b169e5816c948044a7180609226f690, type: 3}
- time: 0.25
value: {fileID: -1887099881, guid: 4b169e5816c948044a7180609226f690, type: 3}
- time: 0.33333334
value: {fileID: -262485002, guid: 4b169e5816c948044a7180609226f690, type: 3}
- time: 0.41666666
value: {fileID: -1887099881, guid: 4b169e5816c948044a7180609226f690, type: 3}
- time: 0.5
value: {fileID: 1609464891, guid: 4b169e5816c948044a7180609226f690, type: 3}
attribute: m_Sprite
path:
classID: 212
@ -55,6 +97,13 @@ AnimationClip:
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 0
attribute: 3
script: {fileID: 0}
typeID: 4
customType: 0
isPPtrCurve: 0
- serializedVersion: 2
path: 3747441678
attribute: 2086281974
@ -73,12 +122,16 @@ AnimationClip:
- {fileID: -262485002, guid: 4b169e5816c948044a7180609226f690, type: 3}
- {fileID: -1887099881, guid: 4b169e5816c948044a7180609226f690, type: 3}
- {fileID: 1609464891, guid: 4b169e5816c948044a7180609226f690, type: 3}
- {fileID: -1887099881, guid: 4b169e5816c948044a7180609226f690, type: 3}
- {fileID: -262485002, guid: 4b169e5816c948044a7180609226f690, type: 3}
- {fileID: -1887099881, guid: 4b169e5816c948044a7180609226f690, type: 3}
- {fileID: 1609464891, guid: 4b169e5816c948044a7180609226f690, type: 3}
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 0.18333334
m_StopTime: 0.51666665
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
@ -113,6 +166,117 @@ AnimationClip:
path: Mask
classID: 1
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: Infinity
outSlope: Infinity
tangentMode: 103
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.33333334
value: 1
inSlope: Infinity
outSlope: Infinity
tangentMode: 103
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.41666666
value: -1
inSlope: Infinity
outSlope: Infinity
tangentMode: 103
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalScale.x
path:
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: Infinity
outSlope: Infinity
tangentMode: 103
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.33333334
value: 1
inSlope: Infinity
outSlope: Infinity
tangentMode: 103
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.41666666
value: 1
inSlope: Infinity
outSlope: Infinity
tangentMode: 103
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalScale.y
path:
classID: 4
script: {fileID: 0}
- curve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: Infinity
outSlope: Infinity
tangentMode: 103
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.33333334
value: 1
inSlope: Infinity
outSlope: Infinity
tangentMode: 103
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.41666666
value: 1
inSlope: Infinity
outSlope: Infinity
tangentMode: 103
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalScale.z
path:
classID: 4
script: {fileID: 0}
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0

View file

@ -1394,7 +1394,7 @@ TextureImporter:
width: 208
height: 228
alignment: 9
pivot: {x: 0.5, y: 0.07017544}
pivot: {x: 0.5, y: 0.065789476}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
@ -1415,7 +1415,7 @@ TextureImporter:
width: 208
height: 228
alignment: 9
pivot: {x: 0.5, y: 0.07017544}
pivot: {x: 0.5, y: 0.065789476}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
@ -1436,7 +1436,7 @@ TextureImporter:
width: 208
height: 262
alignment: 9
pivot: {x: 0.5, y: 0.07017544}
pivot: {x: 0.5769231, y: 0.06870229}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
@ -1457,7 +1457,7 @@ TextureImporter:
width: 208
height: 262
alignment: 9
pivot: {x: 0.5, y: 0.07017544}
pivot: {x: 0.53846157, y: 0.06870229}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
@ -1688,7 +1688,7 @@ TextureImporter:
width: 208
height: 228
alignment: 9
pivot: {x: 0.5, y: 0.07017544}
pivot: {x: 0.5, y: 0.065789476}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
@ -1982,7 +1982,7 @@ TextureImporter:
width: 336
height: 336
alignment: 0
pivot: {x: 0, y: 0}
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
@ -2005,6 +2005,7 @@ TextureImporter:
weights: []
secondaryTextures: []
nameFileIdTable:
Fillbots_main_0: 1077949263
Fillbots_main_1: -1329567388
Fillbots_main_104: 44479687
Fillbots_main_105: 43587656

View file

@ -2,6 +2,7 @@ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HeavenStudio.Util;
using Jukebox;
namespace HeavenStudio.Games.Loaders
{
@ -10,6 +11,25 @@ namespace HeavenStudio.Games.Loaders
{
public static Minigame AddGame(EventCaller eventCaller)
{
var botParams = new List<Param>()
{
new Param("alt", false, "Alternate OK"),
new Param("type", Scripts_Fillbots.EndAnim.Both, "Success Reaction", "Set the reaction of the Robot."),
new Param("stop", false, "Stop Conveyer", "Toggle if the conveyer should be stopped when finished."),
new Param("color", false, "Custom Color", "Toggle if the robot color should be changed.", new List<Param.CollapseParam>()
{
new Param.CollapseParam((x, _) => (bool)x, new string[] { "colorFuel", "colorLampOff", "colorLampOn" }),
}),
new Param("colorFuel", new Color(1f, 0.385f, 0.385f), "Fuel Color", "Set the color of the fuel."),
new Param("colorLampOff", new Color(0.635f, 0.635f, 0.185f), "Off Lamp Color", "Set the color of the off lamp."),
new Param("colorLampOn", new Color(1f, 1f, 0.42f), "On Lamp Color", "Set the color of the on lamp."),
};
var customBotParams = new List<Param>(botParams);
customBotParams.Insert(0,
new Param("size", Scripts_Fillbots.BotSize.Medium, "Size", "Set the size of the Robot.")
);
return new Minigame("fillbots", "Fillbots", "FFFFFF", false, false, new List<GameAction>()
{
new("bop", "Bop")
@ -30,89 +50,97 @@ namespace HeavenStudio.Games.Loaders
{
preFunction = delegate {
var e = eventCaller.currentEntity;
Fillbots.PreSpawnFillbot(e.beat, 3, (int)Scripts_Fillbots.BotSize.Medium, e["colorFuel"], e["colorLampOff"], e["colorLampOn"], e["type"], e["alt"]);
Fillbots.PreSpawnFillbot(e.beat, 3, (int)Scripts_Fillbots.BotSize.Medium, e["colorFuel"], e["colorLampOff"], e["colorLampOn"], e["type"], e["alt"], e["stop"], e["color"]);
},
defaultLength = 8f,
parameters = new List<Param>()
{
new Param("alt", false, "Alternate OK"),
new Param("type", Scripts_Fillbots.EndAnim.Both, "Success Reaction", "Set the reaction of the Robot."),
new Param("colorFuel", new Color(1f, 0.385f, 0.385f), "Fuel Color", "Set the color of the fuel."),
new Param("colorLampOff", new Color(0.635f, 0.635f, 0.185f), "Off Lamp Color", "Set the color of the off lamp."),
new Param("colorLampOn", new Color(1f, 1f, 0.42f), "On Lamp Color", "Set the color of the on lamp."),
},
parameters = botParams,
},
new GameAction("large", "Large Bot")
{
preFunction = delegate {
var e = eventCaller.currentEntity;
Fillbots.PreSpawnFillbot(e.beat, 7, (int)Scripts_Fillbots.BotSize.Large, e["colorFuel"], e["colorLampOff"], e["colorLampOn"], e["type"], e["alt"]);
Fillbots.PreSpawnFillbot(e.beat, 7, (int)Scripts_Fillbots.BotSize.Large, e["colorFuel"], e["colorLampOff"], e["colorLampOn"], e["type"], e["alt"], e["stop"], e["color"]);
},
defaultLength = 12f,
parameters = new List<Param>()
{
new Param("alt", false, "Alternate OK"),
new Param("type", Scripts_Fillbots.EndAnim.Both, "Success Reaction", "Set the reaction of the Robot."),
new Param("colorFuel", new Color(1f, 0.385f, 0.385f), "Fuel Color", "Set the color of the fuel."),
new Param("colorLampOff", new Color(0.635f, 0.635f, 0.185f), "Off Lamp Color", "Set the color of the off lamp."),
new Param("colorLampOn", new Color(1f, 1f, 0.42f), "On Lamp Color", "Set the color of the on lamp."),
},
parameters = botParams,
},
new GameAction("small", "Small Bot")
{
preFunction = delegate {
var e = eventCaller.currentEntity;
Fillbots.PreSpawnFillbot(e.beat, 1, (int)Scripts_Fillbots.BotSize.Small, e["colorFuel"], e["colorLampOff"], e["colorLampOn"], e["type"], e["alt"]);
Fillbots.PreSpawnFillbot(e.beat, 1, (int)Scripts_Fillbots.BotSize.Small, e["colorFuel"], e["colorLampOff"], e["colorLampOn"], e["type"], e["alt"], e["stop"], e["color"]);
},
defaultLength = 6f,
parameters = new List<Param>()
{
new Param("alt", false, "Alternate OK"),
new Param("type", Scripts_Fillbots.EndAnim.Both, "Success Reaction", "Set the reaction of the Robot."),
new Param("colorFuel", new Color(1f, 0.385f, 0.385f), "Fuel Color", "Set the color of the fuel."),
new Param("colorLampOff", new Color(0.635f, 0.635f, 0.185f), "Off Lamp Color", "Set the color of the off lamp."),
new Param("colorLampOn", new Color(1f, 1f, 0.42f), "On Lamp Color", "Set the color of the on lamp."),
},
parameters = botParams,
},
new GameAction("custom", "Custom Bot")
{
preFunction = delegate {
var e = eventCaller.currentEntity;
Fillbots.PreSpawnFillbot(e.beat, e.length-5, e["size"], e["colorFuel"], e["colorLampOff"], e["colorLampOn"], e["type"], e["alt"]);
Fillbots.PreSpawnFillbot(e.beat, e.length-5, e["size"], e["colorFuel"], e["colorLampOff"], e["colorLampOn"], e["type"], e["alt"], e["stop"], e["color"]);
},
defaultLength = 6f,
resizable = true,
parameters = new List<Param>()
{
new Param("size", Scripts_Fillbots.BotSize.Medium, "Size", "Set the size of the Robot."),
new Param("alt", false, "Alternate OK"),
new Param("type", Scripts_Fillbots.EndAnim.Both, "Success Reaction", "Set the reaction of the Robot."),
new Param("colorFuel", new Color(1f, 0.385f, 0.385f), "Fuel Color", "Set the color of the fuel."),
new Param("colorLampOff", new Color(0.635f, 0.635f, 0.185f), "Off Lamp Color", "Set the color of the off lamp."),
new Param("colorLampOn", new Color(1f, 1f, 0.42f), "On Lamp Color", "Set the color of the on lamp."),
},
parameters = customBotParams,
},
new GameAction("blackout", "Blackout")
{
function = delegate { Fillbots.instance.Blackout();},
defaultLength = 0.5f,
},
new GameAction("background", "Background Appearance")
new GameAction("background appearance", "Background Appearance")
{
function = delegate {
var e = eventCaller.currentEntity;
Fillbots.instance.BackgroundColorSet(e["colorImpact"], e["colorMeter1"], e["colorMeter2"], e["colorMeter3"], e["colorMeter4"], e["colorMeter5"], e["colorMeter6"]);
Fillbots.instance.BackgroundColorSet(e.beat, e.length, e["colorBGStart"], e["colorBGEnd"],
e["colorMetersStart"], e["colorMeter1Start"], e["colorMeter2Start"], e["colorMeter3Start"], e["colorMeter4Start"], e["colorMeter5Start"], e["colorMeter6Start"],
e["colorMetersEnd"], e["colorMeter1End"], e["colorMeter2End"], e["colorMeter3End"], e["colorMeter4End"], e["colorMeter5End"], e["colorMeter6End"],
e["separate"], e["ease"]);
},
defaultLength = 0.5f,
resizable = true,
parameters = new List<Param>()
{
new Param("colorBGStart", Color.white, "Start BG Color", "Set the color at the start of the event."),
new Param("colorBGEnd", Color.white, "End BG Color", "Set the color at the end of the event."),
new Param("ease", Util.EasingFunction.Ease.Instant, "Ease", "Set the easing of the action."),
new Param("separate", false, "Separate Meter Color", "Toggle if the robot color should be changed.", new List<Param.CollapseParam>()
{
new Param.CollapseParam((x, _) => !(bool)x, new string[] { "colorMetersStart", "colorMetersEnd" }),
new Param.CollapseParam((x, _) => (bool)x, new string[] { "colorMeter1Start", "colorMeter2Start", "colorMeter3Start", "colorMeter4Start", "colorMeter5Start", "colorMeter6Start",
"colorMeter1End", "colorMeter2End", "colorMeter3End", "colorMeter4End", "colorMeter5End", "colorMeter6End" }),
}),
new Param("colorMetersStart", new Color(1f, 0.88f, 0.88f), "Start Meter Color", "Set the color at the start of the event."),
new Param("colorMetersEnd", new Color(1f, 0.88f, 0.88f), "End Meter Color", "Set the color at the end of the event."),
new Param("colorMeter1Start", new Color(1f, 0.88f, 0.88f), "Start 1st Meter Color", "Set the color at the start of the event."),
new Param("colorMeter1End", new Color(1f, 0.88f, 0.88f), "End 1st Meter Color", "Set the color at the end of the event."),
new Param("colorMeter2Start", new Color(1f, 0.88f, 0.88f), "Start 2nd Meter Color", "Set the color at the start of the event."),
new Param("colorMeter2End", new Color(1f, 0.88f, 0.88f), "End 2nd Meter Color", "Set the color at the end of the event."),
new Param("colorMeter3Start", new Color(1f, 0.88f, 0.88f), "Start 3rd Meter Color", "Set the color at the start of the event."),
new Param("colorMeter3End", new Color(1f, 0.88f, 0.88f), "End 3rd Meter Color", "Set the color at the end of the event."),
new Param("colorMeter4Start", new Color(1f, 0.88f, 0.88f), "Start 4th Meter Color", "Set the color at the start of the event."),
new Param("colorMeter4End", new Color(1f, 0.88f, 0.88f), "End 4th Meter Color", "Set the color at the end of the event."),
new Param("colorMeter5Start", new Color(1f, 0.88f, 0.88f), "Start 5th Meter Color", "Set the color at the start of the event."),
new Param("colorMeter5End", new Color(1f, 0.88f, 0.88f), "End 5th Meter Color", "Set the color at the end of the event."),
new Param("colorMeter6Start", new Color(1f, 0.88f, 0.88f), "Start 6th Meter Color", "Set the color at the start of the event."),
new Param("colorMeter6End", new Color(1f, 0.88f, 0.88f), "End 6th Meter Color", "Set the color at the end of the event."),
}
},
new GameAction("object appearance", "Object Appearance")
{
function = delegate {
var e = eventCaller.currentEntity;
Fillbots.instance.ObjectColorSet(e["colorFuel"], e["colorLampOff"], e["colorLampOn"], e["colorImpact"], e["colorFiller"], e["colorConveyer"]);
},
defaultLength = 0.5f,
parameters = new List<Param>()
{
new Param("colorFuel", new Color(1f, 0.385f, 0.385f), "Fuel Color", "Set the color of the fuel."),
new Param("colorLampOff", new Color(0.635f, 0.635f, 0.185f), "Off Lamp Color", "Set the color of the off lamp."),
new Param("colorLampOn", new Color(1f, 1f, 0.42f), "On Lamp Color", "Set the color of the on lamp."),
new Param("colorImpact", new Color(1f, 0.59f, 0.01f), "Impact Color", "Set the color of the impact."),
new Param("colorMeter1", new Color(1f, 0.88f, 0.88f), "1st Meter Color", "Set the color of the fuel in the meter."),
new Param("colorMeter2", new Color(1f, 0.88f, 0.88f), "2nd Meter Color", "Set the color of the fuel in the meter."),
new Param("colorMeter3", new Color(1f, 0.88f, 0.88f), "3rd Meter Color", "Set the color of the fuel in the meter."),
new Param("colorMeter4", new Color(1f, 0.88f, 0.88f), "4th Meter Color", "Set the color of the fuel in the meter."),
new Param("colorMeter5", new Color(1f, 0.88f, 0.88f), "5th Meter Color", "Set the color of the fuel in the meter."),
new Param("colorMeter6", new Color(1f, 0.88f, 0.88f), "6th Meter Color", "Set the color of the fuel in the meter."),
new Param("colorFiller", Color.white, "Filler Color", "Set the color of the filler."),
new Param("colorConveyer", Color.white, "Conveyer Color", "Set the color of the conveyer."),
}
},
},
@ -142,6 +170,8 @@ namespace HeavenStudio.Games
public Color lampColorOn;
public EndAnim endAnim;
public bool altOK;
public bool stop;
public bool color;
}
private static List<QueuedFillbot> queuedBots = new List<QueuedFillbot>();
@ -150,12 +180,16 @@ namespace HeavenStudio.Games
[SerializeField] private NtrFillbot mediumBot;
[SerializeField] private NtrFillbot largeBot;
public Animator filler;
[System.NonSerialized] public bool fillerHolding;
[SerializeField] private Transform[] gears;
[SerializeField] private Animator[] meters;
[SerializeField] private SpriteRenderer[] metersFuel;
[SerializeField] private Material impactMaterial;
[SerializeField] private Animator conveyerBelt;
[SerializeField] private GameObject blackout;
[SerializeField] private SpriteRenderer[] fillerRenderer;
[SerializeField] private SpriteRenderer[] otherRenderer;
[SerializeField] private SpriteRenderer BGPlane;
[System.NonSerialized] public BotSize fillerPosition = BotSize.Medium;
@ -165,7 +199,11 @@ namespace HeavenStudio.Games
[NonSerialized] public float conveyerNormalizedOffset;
private ColorEase[] colorEases = new ColorEase[7];
private int toggleGlobal = 0;
private Color fuelColorGlobal = new Color(1f, 0.385f, 0.385f),
lampColorOffGlobal = new Color(0.635f, 0.635f, 0.185f),
lampColorOnGlobal = new Color(1f, 1f, 0.42f);
public static Fillbots instance;
@ -173,6 +211,16 @@ namespace HeavenStudio.Games
{
instance = this;
SetupBopRegion("fillbots", "bop", "auto");
colorEases = new ColorEase[] {
new(Color.white),
new(new Color(1f, 0.88f, 0.88f)),
new(new Color(1f, 0.88f, 0.88f)),
new(new Color(1f, 0.88f, 0.88f)),
new(new Color(1f, 0.88f, 0.88f)),
new(new Color(1f, 0.88f, 0.88f)),
new(new Color(1f, 0.88f, 0.88f)),
};
}
public override void OnBeatPulse(double beat)
@ -183,6 +231,15 @@ namespace HeavenStudio.Games
}
}
public override void OnPlay(double beat)
{
if (queuedBots.Count > 0) queuedBots.Clear();
foreach (var evt in scheduledInputs)
{
evt.Disable();
}
}
private void OnDestroy()
{
if (queuedBots.Count > 0) queuedBots.Clear();
@ -192,6 +249,34 @@ namespace HeavenStudio.Games
}
}
public override void OnStop(double beat) => EntityPreCheck(beat);
void EntityPreCheck(double beat)
{
if (gameManager == null) return;
List<RiqEntity> prevEntities = gameManager.Beatmap.Entities.FindAll(c => c.datamodel.Split(0) == "fillbots");
// init colors
RiqEntity bg = prevEntities.FindLast(c => c.beat <= beat && c.datamodel == "fillbots/background appearance");
RiqEntity obj = prevEntities.FindLast(c => c.beat <= beat && c.datamodel == "fillbots/object appearance");
if (bg != null)
{
BackgroundColorSet(bg.beat, bg.length, bg["colorBGStart"], bg["colorBGEnd"],
bg["colorMetersStart"], bg["colorMeter1Start"], bg["colorMeter2Start"], bg["colorMeter3Start"], bg["colorMeter4Start"], bg["colorMeter5Start"], bg["colorMeter6Start"],
bg["colorMetersEnd"], bg["colorMeter1End"], bg["colorMeter2End"], bg["colorMeter3End"], bg["colorMeter4End"], bg["colorMeter5End"], bg["colorMeter6End"],
bg["separate"], bg["ease"]);
}
if (obj != null)
{
ObjectColorSet(obj["colorFuel"], obj["colorLampOff"], obj["colorLampOn"], obj["colorImpact"], obj["colorFiller"], obj["colorConveyer"]);
}
else
{
ObjectColorSet(new Color(1f, 0.385f, 0.385f), new Color(0.635f, 0.635f, 0.185f), new Color(1f, 1f, 0.42f), new Color(1f, 0.59f, 0.01f), Color.white, Color.white);
}
}
private void Update()
{
var cond = Conductor.instance;
@ -201,7 +286,7 @@ namespace HeavenStudio.Games
{
foreach (var queuedBot in queuedBots)
{
SpawnFillbot(queuedBot.beat, queuedBot.holdLength, queuedBot.size, queuedBot.fuelColor, queuedBot.lampColorOff, queuedBot.lampColorOn, queuedBot.endAnim, queuedBot.altOK);
SpawnFillbot(queuedBot.beat, queuedBot.holdLength, queuedBot.size, queuedBot.fuelColor, queuedBot.lampColorOff, queuedBot.lampColorOn, queuedBot.endAnim, queuedBot.altOK, queuedBot.stop, queuedBot.color);
}
queuedBots.Clear();
}
@ -228,17 +313,19 @@ namespace HeavenStudio.Games
};
filler.DoScaledAnimationAsync("ReleaseWhiff" + sizeSuffix, 0.5f);
SoundByte.PlayOneShotGame("fillbots/armRetractionWhiff");
if (fillerHolding) SoundByte.PlayOneShotGame("fillbots/armRetractionPop");
}
UpdateConveyerBelt(conveyerStartBeat, conveyerNormalizedOffset);
UpdateBackgroundColor();
}
}
public static void PreSpawnFillbot(double beat, double holdLength, int size, Color fuelColor, Color lampColorOff, Color lampColorOn, int endAnim, bool altOK)
public static void PreSpawnFillbot(double beat, double holdLength, int size, Color fuelColor, Color lampColorOff, Color lampColorOn, int endAnim, bool altOK, bool stop, bool color)
{
if (GameManager.instance.currentGame == "fillbots")
{
instance.SpawnFillbot(beat, holdLength, (BotSize)size, fuelColor, lampColorOff, lampColorOn, (EndAnim)endAnim, altOK);
instance.SpawnFillbot(beat, holdLength, (BotSize)size, fuelColor, lampColorOff, lampColorOn, (EndAnim)endAnim, altOK, stop, color);
}
else
{
@ -252,11 +339,13 @@ namespace HeavenStudio.Games
lampColorOn = lampColorOn,
endAnim = (EndAnim)endAnim,
altOK = altOK,
stop = stop,
color = color,
});
}
}
private void SpawnFillbot(double beat, double holdLength, BotSize size, Color fuelColor, Color lampColorOff, Color lampColorOn, EndAnim endAnim, bool altOK)
private void SpawnFillbot(double beat, double holdLength, BotSize size, Color fuelColor, Color lampColorOff, Color lampColorOn, EndAnim endAnim, bool altOK, bool stop, bool color)
{
NtrFillbot Bot = size switch
{
@ -266,15 +355,11 @@ namespace HeavenStudio.Games
_ => throw new System.NotImplementedException()
};
NtrFillbot spawnedBot = Instantiate(Bot, transform);
if (holdLength > 0)
{
spawnedBot.holdLength = holdLength;
}
if (holdLength > 0) spawnedBot.holdLength = holdLength;
if (stop) spawnedBot.conveyerRestartLength = -1;
spawnedBot.startBeat = beat;
spawnedBot.fuelColor = fuelColor;
spawnedBot.lampColorOff = lampColorOff;
spawnedBot.lampColorOn = lampColorOn;
spawnedBot.endAnim = endAnim;
spawnedBot.altOK = altOK;
@ -282,13 +367,7 @@ namespace HeavenStudio.Games
var actions = new List<BeatAction.Action>();
var fallingBots = currentBots.FindAll(x => x.startBeat < beat && x.startBeat + 3 >= beat);
if (fallingBots is null) {
actions.Add(new BeatAction.Action(beat - 0.5, delegate
{
if (conveyerStartBeat != -1) conveyerNormalizedOffset = Conductor.instance.GetPositionFromBeat(conveyerStartBeat, 1);
conveyerStartBeat = -2;
}));
} else {
if (fallingBots.Count > 0) {
actions.Add(new BeatAction.Action(beat - 0.25, delegate
{
foreach (var bot in fallingBots)
@ -302,11 +381,27 @@ namespace HeavenStudio.Games
if (conveyerStartBeat != -1) conveyerNormalizedOffset = Conductor.instance.GetPositionFromBeat(conveyerStartBeat, 1);
conveyerStartBeat = -2;
}));
} else {
actions.Add(new BeatAction.Action(beat - 0.5, delegate
{
if (conveyerStartBeat != -1) conveyerNormalizedOffset = Conductor.instance.GetPositionFromBeat(conveyerStartBeat, 1);
conveyerStartBeat = -2;
}));
}
actions.Add(new BeatAction.Action(beat, delegate
{
if (!color)
{
fuelColor = fuelColorGlobal;
lampColorOff = lampColorOffGlobal;
lampColorOn = lampColorOnGlobal;
}
spawnedBot.InitColor(fuelColor, lampColorOff, lampColorOn);
}));
actions.Add(new BeatAction.Action(beat + 3, delegate
{
if (!PlayerInput.GetIsAction(InputAction_BasicPress)) filler.DoScaledAnimationAsync("FillerPrepare", 0.5f);
if (!PlayerInput.GetIsAction(InputAction_BasicPressing) && !fillerHolding) filler.DoScaledAnimationAsync("FillerPrepare", 0.5f);
conveyerStartBeat = beat + 3;
fillerPosition = size;
}));
@ -341,6 +436,12 @@ namespace HeavenStudio.Games
}, 0.5f);
toggle ^= 1;
}
var danceBots = currentBots.FindAll(x => x.botState is BotState.Dance);
foreach (var bot in danceBots)
{
bot.SuccessDance();
}
}
private void UpdateConveyerBelt(double startBeat, float offset)
@ -364,14 +465,74 @@ namespace HeavenStudio.Games
blackout.SetActive(!blackout.activeSelf);
}
public void BackgroundColorSet(Color impact, Color meter1, Color meter2, Color meter3, Color meter4, Color meter5, Color meter6)
public void BackgroundColorSet(double beat, float length, Color BGStart, Color BGEnd,
Color metersStart, Color meter1Start, Color meter2Start, Color meter3Start, Color meter4Start, Color meter5Start, Color meter6Start,
Color metersEnd, Color meter1End, Color meter2End, Color meter3End, Color meter4End, Color meter5End, Color meter6End,
bool separate, int colorEaseSet)
{
impactMaterial.SetColor("_ColorAlpha", impact);
colorEases = new ColorEase[] {
new(beat, length, BGStart, BGEnd, colorEaseSet),
new(beat, length, meter1Start, meter1End, colorEaseSet),
new(beat, length, meter2Start, meter2End, colorEaseSet),
new(beat, length, meter3Start, meter3End, colorEaseSet),
new(beat, length, meter4Start, meter4End, colorEaseSet),
new(beat, length, meter5Start, meter5End, colorEaseSet),
new(beat, length, meter6Start, meter6End, colorEaseSet),
};
if (!separate)
{
for (int i = 1; i < 7; i++)
{
colorEases[i] = new(beat, length, metersStart, metersEnd, colorEaseSet);
}
}
UpdateBackgroundColor();
// this.bg.color = BG;
// foreach (var renderer in otherRenderer)
// {
// renderer.color = BG;
// }
// if (separate)
// {
// var colors = new Color[] {meter1, meter2, meter3, meter4, meter5, meter6};
// for (int i = 0; i < metersFuel.Length; i++)
// {
// metersFuel[i].color = colors[i];
// }
// }
// else
// {
// for (int i = 0; i < metersFuel.Length; i++)
// {
// metersFuel[i].color = meters;
// }
// }
}
public void ObjectColorSet(Color fuelColor, Color lampColorOff, Color lampColorOn, Color impact, Color filler, Color conveyer)
{
fuelColorGlobal = fuelColor; lampColorOffGlobal = lampColorOff; lampColorOnGlobal = lampColorOn;
impactMaterial.SetColor("_ColorAlpha", impact);
this.conveyerBelt.GetComponent<SpriteRenderer>().color = conveyer;
foreach (var renderer in fillerRenderer)
{
renderer.color = filler;
}
}
private void UpdateBackgroundColor()
{
BGPlane.color = colorEases[0].GetColor();
foreach (var renderer in otherRenderer)
{
renderer.color = colorEases[0].GetColor();
}
var colors = new Color[] {meter1, meter2, meter3, meter4, meter5, meter6};
for (int i = 0; i < metersFuel.Length; i++)
{
metersFuel[i].color = colors[i];
metersFuel[i].color = colorEases[i+1].GetColor();
}
}
}

View file

@ -11,8 +11,8 @@ namespace HeavenStudio.Games.Scripts_Fillbots
[SerializeField] private Sprite[] sprites;
[SerializeField] private SpriteRenderer fullBody;
[System.NonSerialized] public Color lampColorOff;
[System.NonSerialized] public Color lampColorOn;
[System.NonSerialized] public Color lampColorOff = new Color(0.635f, 0.635f, 0.185f);
[System.NonSerialized] public Color lampColorOn = new Color(1f, 1f, 0.42f);
public enum LampState
{

View file

@ -19,6 +19,7 @@ namespace HeavenStudio.Games.Scripts_Fillbots
Ace,
Just,
Ng,
Dance,
}
public enum EndAnim
@ -34,10 +35,7 @@ namespace HeavenStudio.Games.Scripts_Fillbots
[SerializeField] private BotSize size;
public double holdLength = 4f;
[SerializeField] private float limbFallHeight = 15f;
[System.NonSerialized] public Color fuelColor;
[System.NonSerialized] public Color lampColorOff;
[System.NonSerialized] public Color lampColorOn;
double conveyerRestartLength = 0.5;
[System.NonSerialized] public double conveyerRestartLength = 0.5;
[System.NonSerialized] public double startBeat = -1;
private double conveyerStartBeat = -1;
@ -79,7 +77,8 @@ namespace HeavenStudio.Games.Scripts_Fillbots
private Sound fillSound;
private BotState botState = BotState.Idle;
private BotState _botState = BotState.Idle;
public BotState botState { get { return _botState; }}
private bool isExplode = false;
[System.NonSerialized] public bool isStack;
private double stackBeat, stackLength;
@ -117,7 +116,7 @@ namespace HeavenStudio.Games.Scripts_Fillbots
public void MoveConveyer(float normalized, float lerpDistance, float flyDistance = 0)
{
if (botState is BotState.Holding)
if (_botState is BotState.Holding)
{
StopConveyer();
return;
@ -125,7 +124,7 @@ namespace HeavenStudio.Games.Scripts_Fillbots
transform.position = new Vector3(Mathf.LerpUnclamped(startPos.x, startPos.x + lerpDistance, normalized),
Mathf.LerpUnclamped(startPos.y, startPos.y + flyDistance, normalized));
if (normalized >= 5)
if (normalized >= 8)
{
game.currentBots.Remove(this);
Destroy(gameObject);
@ -152,21 +151,6 @@ namespace HeavenStudio.Games.Scripts_Fillbots
{
conveyerStartBeat = startBeat + 3;
fullBodyMaterial = fullBody.GetComponent<SpriteRenderer>().material;
fullBodyMaterial.SetColor("_ColorBravo", fuelColor);
fullBodyMaterial.SetColor("_ColorAlpha", lampColorOff);
Material botMaterial;
botMaterial = head.GetComponent<SpriteRenderer>().material;
botMaterial.SetColor("_ColorAlpha", lampColorOff);
fuelFill.color = fuelColor;
var full = fullBody.GetComponent<FullBody>();
full.lampColorOff = lampColorOff;
full.lampColorOn = lampColorOn;
BeatAction.New(game, new List<BeatAction.Action>()
{
new BeatAction.Action(startBeat, delegate { legs.Play("Impact", 0, 0); legsHaveFallen = true; legsTrans.position = new Vector3(legsTrans.position.x, legsPosY); }),
@ -189,18 +173,38 @@ namespace HeavenStudio.Games.Scripts_Fillbots
_ => throw new System.NotImplementedException()
};
MultiSound.Play(new MultiSound.Sound[]
List<MultiSound.Sound> sounds = new();
float normalizedBeat = Conductor.instance.GetPositionFromBeat(startBeat, 1);
Debug.Log(Mathf.Max(normalizedBeat-0.1f, 0));
for (int i = (int)Mathf.Ceil(Mathf.Max(normalizedBeat-0.1f, 0)); i <= 2; i++)
{
new MultiSound.Sound("fillbots/" + sizePrefix + "Fall", startBeat),
new MultiSound.Sound("fillbots/" + sizePrefix + "Fall", startBeat + 1),
new MultiSound.Sound("fillbots/" + sizePrefix + "Fall", startBeat + 2),
});
sounds.Add(new("fillbots/" + sizePrefix + "Fall", startBeat + i));
}
if (sounds.Count > 0) MultiSound.Play(sounds.ToArray(), true, true);
game.ScheduleInput(startBeat, 4, Fillbots.InputAction_BasicPress, JustHold, Empty, Empty);
game.currentBots.Add(this);
}
public void InitColor(Color fuelColor, Color lampColorOff, Color lampColorOn)
{
fullBodyMaterial = fullBody.GetComponent<SpriteRenderer>().material;
fullBodyMaterial.SetColor("_ColorBravo", fuelColor);
fullBodyMaterial.SetColor("_ColorAlpha", lampColorOff);
Material botMaterial;
botMaterial = head.GetComponent<SpriteRenderer>().material;
botMaterial.SetColor("_ColorAlpha", lampColorOff);
fuelFill.color = fuelColor;
var full = fullBody.GetComponent<FullBody>();
full.lampColorOff = lampColorOff;
full.lampColorOn = lampColorOn;
}
private void Update()
{
var cond = Conductor.instance;
@ -243,17 +247,24 @@ namespace HeavenStudio.Games.Scripts_Fillbots
}
if (headHasFallen && bodyHasFallen && legsHaveFallen)
{
float normalizedBeat = cond.GetPositionFromBeat(this.conveyerStartBeat, conveyerLength);
if (normalizedBeat >= 0)
if (this.conveyerStartBeat >= 0)
{
if (botState is BotState.Ace) MoveConveyer(normalizedBeat, lerpDistance, flyDistance);
else if (botState is BotState.Idle) MoveConveyer(normalizedBeat, lerpIdleDistance);
else MoveConveyer(normalizedBeat, lerpDistance);
float normalizedBeat = cond.GetPositionFromBeat(this.conveyerStartBeat, conveyerLength);
if (normalizedBeat >= 0)
{
if (_botState is BotState.Ace) MoveConveyer(normalizedBeat, lerpDistance, flyDistance);
else if (_botState is BotState.Idle) MoveConveyer(normalizedBeat, lerpIdleDistance);
else MoveConveyer(normalizedBeat, lerpDistance);
}
}
else
{
StopConveyer();
}
}
}
if (botState is BotState.Holding)
if (_botState is BotState.Holding)
{
float normalizedBeat = cond.GetPositionFromBeat(startBeat + 4, holdLength);
float normalizedExplodeBeat = cond.GetPositionFromBeat(startBeat + 4, holdLength + 0.25);
@ -284,6 +295,7 @@ namespace HeavenStudio.Games.Scripts_Fillbots
BeatAction.New(game, new List<BeatAction.Action>()
{
new BeatAction.Action(startBeat + holdLength + 5.5, delegate {
game.fillerHolding = false;
SoundByte.PlayOneShotGame("fillbots/explosion");
game.currentBots.Remove(this);
Destroy(gameObject);
@ -304,10 +316,19 @@ namespace HeavenStudio.Games.Scripts_Fillbots
}
fillSound.KillLoop(0);
beepEvent.enabled = false;
botState = BotState.Ng;
_botState = BotState.Ng;
game.fillerHolding = false;
normalizedFill = normalizedBeat;
this.conveyerStartBeat = cond.songPositionInBeats + conveyerRestartLength;
if (game.conveyerStartBeat == -1) game.conveyerStartBeat = this.conveyerStartBeat;
if (conveyerRestartLength >= 0)
{
this.conveyerStartBeat = cond.songPositionInBeats + conveyerRestartLength;
if (game.conveyerStartBeat == -1) game.conveyerStartBeat = this.conveyerStartBeat;
}
else
{
this.conveyerStartBeat = -1;
game.conveyerStartBeat = -1;
}
releaseEvent.Disable();
}
}
@ -339,7 +360,8 @@ namespace HeavenStudio.Games.Scripts_Fillbots
game.conveyerStartBeat = -1;
conveyerLength = 1;
transform.position = new Vector3(0, transform.position.y, 0);
botState = BotState.Holding;
_botState = BotState.Holding;
game.fillerHolding = true;
fullBody.DoScaledAnimationAsync("Hold", 1f);
SoundByte.PlayOneShotGame("fillbots/beep");
fillSound = SoundByte.PlayOneShotGame("fillbots/water", -1, 1 / (float)(holdLength / 3), 1, true);
@ -357,8 +379,16 @@ namespace HeavenStudio.Games.Scripts_Fillbots
{
fillSound.KillLoop(0);
beepEvent.enabled = false;
this.conveyerStartBeat = caller.timer + caller.startBeat + conveyerRestartLength;
if (game.conveyerStartBeat != -2) game.conveyerStartBeat = this.conveyerStartBeat;
if (conveyerRestartLength >= 0)
{
this.conveyerStartBeat = caller.timer + caller.startBeat + conveyerRestartLength;
if (game.conveyerStartBeat != -2) game.conveyerStartBeat = this.conveyerStartBeat;
}
else
{
this.conveyerStartBeat = -1;
game.conveyerStartBeat = -1;
}
string sizeSuffix = game.fillerPosition switch
{
@ -369,26 +399,26 @@ namespace HeavenStudio.Games.Scripts_Fillbots
};
if (state >= 1f)
{
botState = BotState.Ng;
_botState = BotState.Ng;
SoundByte.PlayOneShotGame("fillbots/miss");
game.filler.DoScaledAnimationAsync("ReleaseWhiff" + sizeSuffix, 0.5f);
SoundByte.PlayOneShotGame("fillbots/armRetraction2");
SoundByte.PlayOneShotGame("fillbots/armRetractionPop");
fullBody.DoScaledAnimationAsync("ReleaseLate", 0.5f);
return;
}
else if (state <= -1f)
{
botState = BotState.Ng;
_botState = BotState.Ng;
SoundByte.PlayOneShotGame("fillbots/miss");
game.filler.DoScaledAnimationAsync("ReleaseWhiff" + sizeSuffix, 0.5f);
SoundByte.PlayOneShotGame("fillbots/armRetraction2");
SoundByte.PlayOneShotGame("fillbots/armRetractionPop");
fullBody.DoScaledAnimationAsync("ReleaseEarly", 0.5f);
return;
}
if ((endAnim is EndAnim.Both && state == 0) || endAnim is EndAnim.Ace)
{
botState = BotState.Ace;
_botState = BotState.Ace;
BeatAction.New(game, new List<BeatAction.Action>()
{
new BeatAction.Action(caller.startBeat + caller.timer + 0.5, delegate {
@ -398,19 +428,28 @@ namespace HeavenStudio.Games.Scripts_Fillbots
}
else
{
botState = BotState.Just;
// No, Sync to Bop
BeatAction.New(game, new List<BeatAction.Action>()
_botState = BotState.Just;
if (size is BotSize.Small)
{
new BeatAction.Action(caller.startBeat + caller.timer + 1, delegate {
fullBody.DoScaledAnimationAsync("Success", 0.5f);
}),
new BeatAction.Action(caller.startBeat + caller.timer + 2, delegate {
fullBody.DoScaledAnimationAsync("Success", 0.5f);
}),
});
BeatAction.New(game, new List<BeatAction.Action>()
{
new BeatAction.Action(caller.startBeat + caller.timer + 1, delegate {
fullBody.DoScaledAnimationAsync("Success", 0.5f);
}),
});
}
else
{
BeatAction.New(game, new List<BeatAction.Action>()
{
new BeatAction.Action(caller.startBeat + caller.timer + 0.9, delegate {
_botState = BotState.Dance;
}),
});
}
}
game.fillerHolding = false;
game.filler.DoScaledAnimationAsync("Release" + sizeSuffix, 0.5f);
SoundByte.PlayOneShotGame("fillbots/armRetraction");
fullBody.DoScaledAnimationAsync("Release", 1f);
@ -431,6 +470,11 @@ namespace HeavenStudio.Games.Scripts_Fillbots
private void Empty(PlayerActionEvent caller) { }
public void SuccessDance()
{
fullBody.DoScaledAnimationAsync("Success", 0.5f);
}
public bool ReportBeat(ref double lastReportedBeat)
{
var cond = Conductor.instance;