refactoring

This commit is contained in:
msk
2023-10-11 02:57:24 -07:00
parent b282dd21cd
commit 3685a9e680
3 changed files with 48 additions and 59 deletions
+43 -40
View File
@@ -3,55 +3,58 @@ using System;
using System.Linq; using System.Linq;
using WacK; using WacK;
public partial class SnapArrows : HBoxContainer namespace WacK.Things.TunnelObjects
{ {
private TextureRect[] arrows = new TextureRect[20]; public partial class SnapArrows : HBoxContainer
// Called when the node enters the scene tree for the first time.
public override void _Ready()
{ {
var c = GetChildren(); private TextureRect[] arrows = new TextureRect[20];
for(int i = 0; i < 20; ++i)
{
arrows[i] = (TextureRect) c[i];
}
}
/// <summary> // Called when the node enters the scene tree for the first time.
/// Make sure to run as CallDeferred if constructing! public override void _Ready()
/// </summary>
/// <param name="pos"></param>
/// <param name="size"></param>
/// <param name="isIn"></param>
public void Init(int pos, int size, bool isIn)
{
var nVis = Math.Clamp(size / 3, 1, 20);
for(int i = 0; i < arrows.Count(); ++i)
{ {
if (i < nVis) var c = GetChildren();
for(int i = 0; i < 20; ++i)
{ {
arrows[i].Visible = true; arrows[i] = (TextureRect) c[i];
((ShaderMaterial)arrows[i].Material)
.SetShaderParameter("isIn", isIn);
}
else
{
arrows[i].Visible = false;
} }
} }
// shrink /// <summary>
var s = Size; /// Make sure to run as CallDeferred if constructing!
s.X = 0; /// </summary>
Size = s; /// <param name="pos"></param>
/// <param name="size"></param>
/// <param name="isIn"></param>
public void Init(int pos, int size, bool isIn)
{
var nVis = Math.Clamp(size / 3, 1, 20);
var (posPx, sizePx) = Util.PixelizeNote(pos, size); for(int i = 0; i < arrows.Count(); ++i)
var noteCtrPos = posPx + sizePx / 2; {
if (i < nVis)
{
arrows[i].Visible = true;
((ShaderMaterial)arrows[i].Material)
.SetShaderParameter("isIn", isIn);
}
else
{
arrows[i].Visible = false;
}
}
// reposition // shrink
var p = Position; var s = Size;
p.X = -Size.X / 2 + noteCtrPos; s.X = 0;
Position = p; Size = s;
var (posPx, sizePx) = Util.PixelizeNote(pos, size);
var noteCtrPos = posPx + sizePx / 2;
// reposition
var p = Position;
p.X = -Size.X / 2 + noteCtrPos;
Position = p;
}
} }
} }
+2 -6
View File
@@ -13,12 +13,7 @@ namespace WacK.Things.TunnelObjects
shader = (ShaderMaterial) Material; shader = (ShaderMaterial) Material;
} }
public void SetCW(bool isCW) public void Init(int pos, int size, bool isCW)
{
shader.SetShaderParameter("isCw", isCW);
}
public void SetPosSize(int pos, int size)
{ {
var p = Position; var p = Position;
var s = Size; var s = Size;
@@ -39,6 +34,7 @@ namespace WacK.Things.TunnelObjects
Position = p; Position = p;
Size = s; Size = s;
shader.SetShaderParameter("TileMult", s.Y / 64); shader.SetShaderParameter("TileMult", s.Y / 64);
shader.SetShaderParameter("isCw", isCW);
} }
} }
} }
+3 -13
View File
@@ -14,14 +14,6 @@ namespace WacK.Things.TunnelObjects
{ {
this.noteData = noteData; this.noteData = noteData;
SetPosSize((int)noteData.pos, (int)noteData.size); SetPosSize((int)noteData.pos, (int)noteData.size);
// handle swipe arrow color
if (noteData.type == NotePlayType.SwipeCW)
{
var n = (SwipeArrow) FindChild("SwipeArrow");
// n.SetCW(noteData.type == NotePlayType.SwipeCW);
n.CallDeferred("SetCW", noteData.type == NotePlayType.SwipeCW);
}
} }
public void SetPosSize(int pos, int size) public void SetPosSize(int pos, int size)
@@ -44,19 +36,17 @@ namespace WacK.Things.TunnelObjects
nSize.X = sizePx; nSize.X = sizePx;
noteBase.SetDeferred("size", nSize); noteBase.SetDeferred("size", nSize);
// handle swipe arrow pos & size // handle swipe arrow
if (noteData.type == NotePlayType.SwipeCW || noteData.type == NotePlayType.SwipeCCW) if (noteData.type == NotePlayType.SwipeCW || noteData.type == NotePlayType.SwipeCCW)
{ {
var n = (SwipeArrow) FindChild("SwipeArrow"); var n = (SwipeArrow) FindChild("SwipeArrow");
// n.SetPosSize(pos, size); n.CallDeferred("Init", pos, size, noteData.type == NotePlayType.SwipeCW);
n.CallDeferred("SetPosSize", pos, size);
} }
// handle snap arrow pos & size // handle snap arrow
if (noteData.type == NotePlayType.SnapIn || noteData.type == NotePlayType.SnapOut) if (noteData.type == NotePlayType.SnapIn || noteData.type == NotePlayType.SnapOut)
{ {
var n = (SnapArrows)FindChild("SnapArrows"); var n = (SnapArrows)FindChild("SnapArrows");
// n.SetPosSize(pos, size);
n.CallDeferred("Init", pos, size, noteData.type == NotePlayType.SnapIn); n.CallDeferred("Init", pos, size, noteData.type == NotePlayType.SnapIn);
} }
} }