progress.

starting on the monkeys appear block rn, and then i'll work on the monkey spawning logic. honestly should be pretty easy (and i DON'T think this will be something i look back on as if i was crazy 😄 )
This commit is contained in:
AstrlJelly 2023-07-03 01:49:44 -04:00
parent f6c4172b02
commit b2c1d1800d
12 changed files with 271 additions and 70 deletions

View file

@ -1554,6 +1554,60 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &866930355223492279
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6302321823436949001}
- component: {fileID: 6946175553819886035}
m_Layer: 0
m_Name: CameraAnchor
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6302321823436949001
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 866930355223492279}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 16600283237656001}
m_Father: {fileID: 1686621416582726728}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!95 &6946175553819886035
Animator:
serializedVersion: 5
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 866930355223492279}
m_Enabled: 1
m_Avatar: {fileID: 0}
m_Controller: {fileID: 9100000, guid: 246b91fc181c3804db2dacda8bcbffdd, type: 2}
m_CullingMode: 0
m_UpdateMode: 0
m_ApplyRootMotion: 0
m_LinearVelocityBlending: 0
m_StabilizeFeet: 0
m_WarningMessage:
m_HasTransformHierarchy: 1
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorStateOnDisable: 0
m_WriteDefaultValuesOnDisable: 0
--- !u!1 &870218628151596111
GameObject:
m_ObjectHideFlags: 0
@ -7106,7 +7160,7 @@ Transform:
- {fileID: 161246764106563782}
- {fileID: 37240736623304726}
m_Father: {fileID: 1686621416582726728}
m_RootOrder: 4
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1093770155466988112
GameObject:
@ -16370,7 +16424,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!4 &8942068904010798964
Transform:
m_ObjectHideFlags: 0
@ -17089,9 +17143,9 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4083551090923112138}
m_LocalRotation: {x: 0, y: 0, z: 0.02478112, w: 0.9996929}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.686, y: 0.686, z: 1}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3728413059694664764}
@ -17101,7 +17155,7 @@ Transform:
- {fileID: 3385939890402042842}
m_Father: {fileID: 1686621416582726728}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 2.84}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &8661769715595319216
MonoBehaviour:
m_ObjectHideFlags: 0
@ -19991,6 +20045,121 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &5647123591156934173
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3236094004826115546}
- component: {fileID: 3165267991157936857}
m_Layer: 0
m_Name: InnerShadow2_1
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3236094004826115546
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5647123591156934173}
m_LocalRotation: {x: -0, y: -0, z: -0.2935897, w: -0.9559316}
m_LocalPosition: {x: -0.15, y: 30.58, z: 0}
m_LocalScale: {x: 1.6764871, y: 1.6764871, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 799078516484724495}
m_RootOrder: 12
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 394.146}
--- !u!212 &3165267991157936857
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5647123591156934173}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: -102
m_Sprite: {fileID: 1353417970, guid: 391927dcfcfb8c144a3e80fec9636812, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 2.31, y: 5.18}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &5699160359285939637
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 16600283237656001}
m_Layer: 0
m_Name: Transform
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &16600283237656001
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5699160359285939637}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 13.582999, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6302321823436949001}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &5719803063497664328
GameObject:
m_ObjectHideFlags: 0
@ -21102,8 +21271,8 @@ Transform:
- {fileID: 4831968824892514561}
- {fileID: 5742479390175277464}
- {fileID: 6857749598573628903}
- {fileID: 6302321823436949001}
- {fileID: 3735448262030941676}
- {fileID: 6148760958697736643}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -21124,9 +21293,11 @@ MonoBehaviour:
scheduledInputs: []
firstEnable: 0
monkeyPlayer: {fileID: 5368117777341597701}
watchHoleParent: {fileID: 3735448262030941676}
yellowMonkey: {fileID: 3151069026564347634, guid: 224742d4a2c74034997943856f560054, type: 3}
pinkMonkey: {fileID: 0}
watchHoleParent: {fileID: 3735448262030941676}
monkeyParent: {fileID: 0}
cameraTransform: {fileID: 6302321823436949001}
--- !u!1 &6181011653585253546
GameObject:
m_ObjectHideFlags: 0
@ -35121,7 +35292,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
m_IsActive: 1
--- !u!4 &4782418002106772940
Transform:
m_ObjectHideFlags: 0
@ -36072,6 +36243,7 @@ Transform:
- {fileID: 1906196915926803593}
- {fileID: 5551552057628938175}
- {fileID: 4831997672405803729}
- {fileID: 3236094004826115546}
m_Father: {fileID: 1937947489430017238}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 54.726}
@ -36328,37 +36500,6 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &8937722919782571022
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6148760958697736643}
m_Layer: 0
m_Name: Monkeys
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6148760958697736643
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8937722919782571022}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1.7, y: 1.7, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1686621416582726728}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &8984321488255817024
GameObject:
m_ObjectHideFlags: 0

View file

@ -178,6 +178,7 @@ GameObject:
m_Component:
- component: {fileID: 7591110402097765485}
- component: {fileID: 7211266264008123551}
- component: {fileID: 6706979151958862924}
m_Layer: 0
m_Name: YellowMonkey
m_TagString: Untagged
@ -194,7 +195,7 @@ Transform:
m_GameObject: {fileID: 3151069026564347634}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_LocalScale: {x: 1.02, y: 1.02, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 8722027174825287830}
@ -230,6 +231,17 @@ Animator:
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorStateOnDisable: 0
m_WriteDefaultValuesOnDisable: 0
--- !u!210 &6706979151958862924
SortingGroup:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3151069026564347634}
m_Enabled: 1
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 100
--- !u!1 &4343136497418508153
GameObject:
m_ObjectHideFlags: 0

View file

@ -821,6 +821,6 @@ AnimationClip:
functionName: UpdateRotation
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 6
floatParameter: -6
intParameter: 0
messageOptions: 0

View file

@ -1134,7 +1134,7 @@ AnimationClip:
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopTime: 0
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0

View file

@ -431,7 +431,7 @@ AnimationClip:
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopTime: 0
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0

View file

@ -563,7 +563,7 @@ AnimationClip:
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopTime: 0
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0

View file

@ -546,7 +546,7 @@ AnimationClip:
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopTime: 0
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0

View file

@ -517,7 +517,7 @@ AnimationClip:
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopTime: 0
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0

View file

@ -580,7 +580,7 @@ AnimationClip:
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopTime: 0
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0

View file

@ -551,7 +551,7 @@ AnimationClip:
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 1
m_LoopTime: 0
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0

View file

@ -38,7 +38,7 @@ namespace HeavenStudio.Games.Scripts_MonkeyWatch
// animation events
public void UpdateRotation(float rot)
{
gameObject.transform.eulerAngles -= new Vector3(0, 0, rot);
gameObject.transform.localEulerAngles += new Vector3(0, 0, rot);
// offset the rotation of the particle effects so that they're always upright
YellowStars.transform.eulerAngles = Vector3.zero;

View file

@ -18,21 +18,29 @@ namespace HeavenStudio.Games.Loaders
{
function = delegate {
var e = eventCaller.currentEntity;
MonkeyWatch.instance.MonkeysAppear(e.beat, e.length);
MonkeyWatch.instance.MonkeysAppear(e.beat, e.length, e["amount"]);
},
defaultLength = 2f,
parameters = new List<Param>()
{
new Param("amount", new EntityTypes.Integer(1, 8, 4), "Monkeys to spawn", "How many monkeys will spawn over the course of this block"),
},
defaultLength = 8f,
resizable = true
},
new GameAction("startClapping", "Start Clapping")
{
function = delegate {
var e = eventCaller.currentEntity;
MonkeyWatch.instance.Clapping(e.beat);
MonkeyWatch.StartClapping(e.beat, e["start"]);
},
parameters = new List<Param>()
{
new Param("start", new EntityTypes.Integer(0, 0, 60), "Start Where", "Where on the clock will the monkey start? (Set to zero to be automatic)"),
},
defaultLength = 2f,
inactiveFunction = delegate {
var e = eventCaller.currentEntity;
MonkeyWatch.ClappingInactive(e.beat);
MonkeyWatch.StartClapping(e.beat, e["start"]);
},
},
new GameAction("offbeatMonkeys", "Offbeat Monkeys")
@ -41,7 +49,6 @@ namespace HeavenStudio.Games.Loaders
parameters = new List<Param>()
{
new Param("mute", false, "Mute Cue", "Mute the offbeat monkeys's cue"),
new Param("custom", false, "Custom Cue", "Place the \"Custom Monkey\" block 2 beats after the start of this one to create a custom pink monkey cue."),
},
resizable = true,
inactiveFunction = delegate {
@ -89,9 +96,11 @@ namespace HeavenStudio.Games
[SerializeField] MonkeyClicker monkeyPlayer;
[Header("Objects")]
[SerializeField] Transform watchHoleParent;
[SerializeField] GameObject yellowMonkey;
[SerializeField] GameObject pinkMonkey;
[SerializeField] Transform watchHoleParent;
[SerializeField] Transform monkeyParent;
public Transform cameraTransform;
// unserialized variables below
public enum SfxTypes
@ -106,6 +115,7 @@ namespace HeavenStudio.Games
Dictionary<double, OffbeatMonkey> offbeatMonkeys = new Dictionary<double, OffbeatMonkey>();
List<RiqEntity> customMonkeys = new List<RiqEntity>();
List<GameObject> watchHoles = new List<GameObject>();
List<Animator> activeMonkeys = new List<Animator>();
public struct OffbeatMonkey
{
@ -117,21 +127,25 @@ namespace HeavenStudio.Games
static OffbeatMonkey wantOffbeat;
static double wantClapping = double.MinValue;
public static bool startedClapping;
int lastMonkeyClapped;
bool cameraMove;
int currentMonkey;
static int lastMonkeySpawned;
public static MonkeyWatch instance;
void Awake()
{
instance = this;
var songPos = Conductor.instance.songPositionInBeats;
customMonkeys = EventCaller.GetAllInGameManagerList("monkeyWatch", new string[] { "customMonkey" });
var offbeatEvents = EventCaller.GetAllInGameManagerList("monkeyWatch", new string[] { "offbeatMonkeys" });
for (int i = 0; i < offbeatEvents.Count; i++)
{
if (offbeatEvents[i].beat >= Conductor.instance.songPositionInBeats)
if (offbeatEvents[i].beat >= songPos)
{
offbeatMonkeys.Add(
Mathf.Round((float)offbeatEvents[i].beat),
Mathf.Round((float)offbeatEvents[i].beat),
new OffbeatMonkey{
mute = offbeatEvents[i]["mute"],
length = offbeatEvents[i].length,
@ -140,15 +154,27 @@ namespace HeavenStudio.Games
}
}
var clapEvents = EventCaller.GetAllInGameManagerList("monkeyWatch", new string[] { "startClapping" });
var appearEvents = EventCaller.GetAllInGameManagerList("monkeyWatch", new string[] { "monkeysAppear" });
if (appearEvents.Count == 0 || clapEvents.Find(x => x.beat >= songPos).beat < appearEvents.Find(x => x.beat >= songPos).beat) {
MonkeysAppear(songPos, 0, 4);
}
monkeyPlayer.UpdateRotation(lastMonkeySpawned*6);
// put all the watch holes in a list
for (int i = 0; i < watchHoleParent.childCount; i++) {
watchHoles.Add(watchHoleParent.GetChild(i).gameObject);
Debug.Log(watchHoleParent.GetChild(i).name);
}
Update();
}
private void Start()
private void Start()
{
GameCamera.additionalPosition = new Vector3(0, 17.7f, 0);
Update();
}
public override void OnGameSwitch(double beat)
@ -178,30 +204,53 @@ namespace HeavenStudio.Games
startedClapping = false;
}
foreach (var evt in scheduledInputs)
{
evt.Disable();
}
foreach (var evt in scheduledInputs) evt.Disable();
}
public void Update()
{
if (cameraMove) {
cameraTransform.transform.eulerAngles += Vector3.back * (6 * Time.deltaTime);
}
GameCamera.additionalPosition = cameraTransform.GetChild(0).position;
}
public void MonkeysAppear(double beat, float length)
public void MonkeysAppear(double beat, float length, int monkeyAmount)
{
var appear = new List<BeatAction.Action>();
for (int i = 0; i < monkeyAmount; i++)
{
var x = i;
appear.Add(new BeatAction.Action(beat + (x / (monkeyAmount / length)), delegate {
Debug.Log(watchHoles[x].transform.position);
activeMonkeys.Add(Instantiate(yellowMonkey, watchHoles[x].transform.position, new Quaternion(0, 0, 0, 0), watchHoleParent).GetComponent<Animator>());
}));
}
BeatAction.New(gameObject, appear);
}
public static void ClappingInactive(double beat)
public static void StartClapping(double beat, int start)
{
if (GameManager.instance.currentGame is "monkeyWatch") {
instance.Clapping(beat);
} else {
ClappingInactive(beat);
if (lastMonkeySpawned != 0) lastMonkeySpawned = start;
}
}
static void ClappingInactive(double beat)
{
wantClapping = beat;
startedClapping = true;
}
public void Clapping(double beat, double inputCheck = double.MinValue)
void Clapping(double beat, double inputCheck = double.MinValue)
{
//activeMonkeys[currentMonkey].DoScaledAnimationAsync("YellowPrepareDown", 0.5f);
currentMonkey++;
cameraMove = true;
//cameraTransform.transform.eulerAngles += Vector3.back*6;
if (offbeatMonkeys.ContainsKey(beat)) {
var monkeys = customMonkeys.FindAll(x => x.beat >= beat + 2 && x.beat < beat + offbeatMonkeys[beat].length);
PinkMonkeys(beat, offbeatMonkeys[beat].length, offbeatMonkeys[beat].mute, monkeys);
@ -287,7 +336,6 @@ namespace HeavenStudio.Games
void Just(float state, bool isYellow)
{
lastMonkeyClapped++;
string whichAnim = "PlayerClap";
if (state >= 1f || state <= -1f) {
SoundByte.PlayOneShot("miss");