public void ProceedToCrushPressed() { for (int i = 0; i < _potionReagentsBox.GetChildCount(); i++) { //ItemSprite Node2D N = ((Node)_potionReagentsBox.GetChildren()[i]).GetChild(0).GetChild(0) as Node2D; _tween.InterpolateProperty(GetNode("MortarPestle/PickReagents"), "modulate", Colors.White, new Color(1f, 1f, 1f, 0f), .5f); _tween.InterpolateProperty(_proceedToCrush, "modulate", Colors.White, new Color(1f, 1f, 1f, 0f), .5f); Sprite reagentSprite = new Sprite() { Texture = _potionReagents[i].IconTex, GlobalPosition = N.GlobalPosition + new Vector2(2f, 2f), Centered = false, ZIndex = -2 }; AddChild(reagentSprite); _reagentAnimSprites[i] = reagentSprite; } _tween.Start(); _reagentAnimState = ReagentAnim.Hover; }
public void TweenAllCompleted() { switch (_alchemyStage) { case AlchemyStage.MortarPestle: { switch (_mortarPestleStage) { case MortarPestleStage.PickReagents: { if (_reagentAnimState == ReagentAnim.Hover) { _proceedToCrush.Disabled = true; foreach (Node N in _potionReagentsBox.GetChildren()) { N.QueueFree(); } foreach (Sprite S in _reagentAnimSprites) { if (S != null) { _tween.InterpolateProperty(S, "global_position", S.GlobalPosition, new Vector2(160f + (float)GD.RandRange(-10, 10), 40f + (float)GD.RandRange(-10, 10)), 1f, Tween.TransitionType.Cubic); } } _tween.Start(); _reagentAnimState = ReagentAnim.Fall; } else if (_reagentAnimState == ReagentAnim.Fall) { foreach (Sprite S in _reagentAnimSprites) { if (S != null) { _tween.InterpolateProperty(S, "global_position", S.GlobalPosition, _mortar.GlobalPosition + new Vector2((float)GD.RandRange(-10, 10), (float)GD.RandRange(-10, 10)), 1.5f, Tween.TransitionType.Cubic); } } _tween.Start(); _reagentAnimState = ReagentAnim.End; } else if (_reagentAnimState == ReagentAnim.End) { NextStage(); for (int i = 0; i < _reagentAnimSprites.Length; i++) { if (_reagentAnimSprites[i] != null) { _reagentAnimSprites[i].QueueFree(); _reagentAnimSprites[i] = null; } } } break; } } break; } } }