HeavenStudioPlus/Assets/Scripts/Common/SuperScroll.cs
AstrlJelly 2c1394feb6 Munchy Monk Finalized (#432)
* stache stuff (still needs more work but yeah)

* new icon (TEMPORARY ICON!!!)
* some placeholder animations
* more two two jank fixed, almost there

* superscroll + fixing early misses

* made a few temporary changes to superscroll.cs, i will be modifying it further for ease of use but for now it isn't permanent
* made real progress on stopping repeat inputs
 -game is basically broken for the time being, but i wanna push this so nothing theoretically breaks. ill fix it all tomorrow when im less tired

* it's been a while since i've committed my changes

* modifiers work again (idk if i broke that in this commit or it was already broken)
* stacking logic is here!!! it always uses the latest objects' hit/miss/early function so it should be perfect. i might be able to improve on efficiency tho
 -FollowHand animation is broken again unfortunately :(
* dumplings can now be individually colored, and are assigned their colors in Start(). the smear's colors are defined on Hit() (HitFunction() to be specific) , so that even when there are multiple stacked dumplings, they'll all be accurate.

maybe some other stuff but i cannot remember

* clean-up + integral fixes

onto Monk Move and SingleSuperScroll
i think ill add some more comments too

* fixed some missing/early stuff + a check for whether you can hit or not
* fixed FollowHand animation and the squishing/dumpling on top
* cleaned up a ton of unused variables + checks + anims
* added unused sound sequences
 -ig if somebody knows how to use them they can implement them but idk how to and it's not worth figuring out rn
* more work on superscroll; there seems to be too many changes to the structure of the script to keep the single scrolling in with the tile scrolling, will combine if necessary tho
* fanClub/arisa_dab

* monk move!!

still working on singlesuperscroll 😭
but i got the monk moving!!

* a few optimizations + starting on new singlesuperscroll

* ok ScrollObject is usable now

oh my GOD i need to optimize how it looks and functions but rn it works like it will when it's done (theoretically)
ev do ur work

* a few things + new icon!!

* scroll speeds are good now

* finished except for the stache bop

😭 😭 😭 😭 😭 why isn't it working

* im pring this now

---------

Co-authored-by: ev <85412919+evdial@users.noreply.github.com>
2023-05-23 04:09:46 +00:00

77 lines
No EOL
2.1 KiB
C#

using UnityEngine;
namespace HeavenStudio.Common
{
public class SuperScroll : MonoBehaviour
{
#region Private
[SerializeField] private Material _shader;
[SerializeField]
private Renderer _renderer;
[SerializeField]
private Sprite _sprite;
#endregion
#region Public
public float NormalizedX = 0.0f;
public float NormalizedY = 0.0f;
public Vector2 Normalized { get { return new Vector2(NormalizedX, NormalizedY); } set { NormalizedX = value.x; NormalizedY = value.y; } }
public bool AutoScroll;
public float AutoScrollX;
public float AutoScrollY;
public float TileX = 1.0f;
public float TileY = 1.0f;
public Vector2 Tile { get { return new Vector2(TileX, TileY); } set { TileX = value.x; TileY = value.y; } }
public Material Material => _renderer.material;
#endregion
#region MonoBehaviour
private void Start()
{
_renderer.material = _shader;
var spriteRect = _sprite.rect;
var tex = CropTexture(_sprite.texture, new Rect(spriteRect.x, spriteRect.y, spriteRect.width, spriteRect.height));
tex.wrapMode = TextureWrapMode.Repeat;
Material.mainTexture = tex;
}
public void LateUpdate()
{
_renderer.material.mainTextureScale = Tile;
_renderer.material.mainTextureOffset = new Vector2(NormalizedX, -NormalizedY) * Tile;
if (AutoScroll) {
float songPos = Conductor.instance.songPositionInBeats/100;
NormalizedX = songPos*AutoScrollX;
NormalizedY = songPos*AutoScrollY;
}
}
#endregion
#region Custom
private Texture2D CropTexture(Texture2D original, Rect rect)
{
var colors = original.GetPixels((int)rect.x, (int)rect.y, (int)rect.width, (int)rect.height);
var newTex = new Texture2D((int)rect.width, (int)rect.height);
newTex.SetPixels(colors);
newTex.Apply();
return newTex;
}
#endregion
}
}