mergemilitary/Assets/MMOModule/Controls/Scripts/MultipleRoller.cs

77 lines
1.7 KiB
C#
Raw Normal View History

2022-07-04 11:17:39 +00:00
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class MultipleRoller : MonoBehaviour
{
public Action<float> DelRolling;
[SerializeField] RectTransform mRctNeedle;
[SerializeField] Vector2 mRollArea;
[SerializeField] Vector2 m3XArea;
[SerializeField] Vector2 m2XArea;
[SerializeField] Vector2 m1_5XArea;
[SerializeField] float mRollSpeed = 600;
public bool IsRolling = false;
private float mMultiple = 1;
private int mRollDir = 1;
private Vector3 mNextPos;
private void Update()
{
if (IsRolling)
{
mNextPos = mRctNeedle.localPosition + (Vector3.right * mRollDir * mRollSpeed * Time.deltaTime);
if (mNextPos.x >= mRollArea.y)
{
mNextPos.x = mRollArea.y;
mRollDir = -1;
}
else if (mNextPos.x <= mRollArea.x)
{
mNextPos.x = mRollArea.x;
mRollDir = 1;
}
mRctNeedle.localPosition = mNextPos;
SetMultiple();
}
}
private void SetMultiple()
{
float tX = Mathf.Abs(mRctNeedle.localPosition.x);
if (IsInArea(tX, m3XArea))
{
mMultiple = 3;
}
else if (IsInArea(tX, m2XArea))
{
mMultiple = 2;
}
else if (IsInArea(tX, m1_5XArea))
{
mMultiple = 1.5f;
}
else
{
mMultiple = 1;
}
DelRolling?.Invoke(mMultiple);
}
private bool IsInArea(float pVal, Vector2 pArea)//val and area is positive
{
if (pVal >= pArea.x && pVal < pArea.y)
{
return true;
}
return false;
}
}