/// <summary> /// ステータスなどを仮表示 /// </summary> public void OnGUI() { float unit = Screen.width / 20f; float centerX = Screen.width / 2f; float biasX = (Type == Define.App.Player.P1) ? -2.3f * unit : 0.7f * unit; this.__font.fontSize = 27; GUI.Label(new Rect(centerX + biasX, unit * 0.4f, 100, 100), ((int)this.status.Hp).ToString(), this.__font); GUI.Label(new Rect(centerX + biasX, unit * 1.1f, 100, 100), ((int)this.status.Ap).ToString(), this.__font); int i = 0; MyEnum.ForEach <Define.App.Attribute>((a) => { GUI.Label( new Rect( centerX + biasX, unit * 2.9f + unit * i * 0.77f, 100, 100 ), ((int)this.status.GetMp(a)).ToString(), this.__font ); i++; }); }
public static void Unload() { var rm = ResourceSystem.Instance; MyEnum.ForEach <Type>((type) => { rm.Unload($"Logo.{type}.sprite"); }); Sprites.Clear(); }
public static void Load(System.Action pre, System.Action done) { var rm = ResourceSystem.Instance; MyEnum.ForEach <Type>((type) => { rm.Load <Sprite>($"Logo.{type}.sprite", pre, done, (res) => { Sprites[type] = res; }); }); }
public static void Unload() { var rm = ResourceSystem.Instance; MyEnum.ForEach <Define.App.Cat>((type) => { rm.Unload($"CutIn.{type}.sprite"); }); }
/// <summary> /// リセット /// </summary> public void Reset() { // 連鎖、消失に関する情報をリセット ChainCount = 0; // 消滅した肉球の数 MyEnum.ForEach <Define.App.Attribute>((attribute) => { this.vanishCounts[(int)attribute] = 0; }); }
public static void Load(System.Action pre, System.Action done) { var rm = ResourceSystem.Instance; MyEnum.ForEach <Define.App.Cat>((type) => { rm.Load <Sprite>($"CutIn.{type}.sprite", pre, done, (res) => { Sprites.Add((int)type, res); }); }); }
//------------------------------------------------------------------------- // デバッグ public void OnDebug() { using (new GUILayout.VerticalScope(GUI.skin.box)) { GUILayout.Label($"連鎖数:{ChainCount}"); using (new GUILayout.HorizontalScope()) { MyEnum.ForEach <Define.App.Attribute>((attribute) => { GUILayout.Label($"{attribute}:{this.vanishCounts[(int)attribute]}"); }); } GUILayout.Label($"総数:{TotalVanishCount}"); } }
//------------------------------------------------------------------------- // ライフサイクル protected override void MyAwake() { MyEnum.ForEach <Type>((type) => { this.guides[type] = CreateGameObject(type); }); this.state.Add(State.Idle, OnIdleEnter); this.state.Add(State.Ready, OnReadyEnter, OnReadyUpdate); this.state.Add(State.ReadyWait, OnReadyWaitEnter, OnReadyWaitUpdate); this.state.Add(State.Go, OnGoEnter, OnGoUpdate); this.state.Add(State.GoWait, OnGoWaitEnter, OnGoWaitUpdate); this.state.Add(State.GoBack, OnGoBackEnter, OnGoBackUpdate); this.state.Add(State.Result, OnResultEnter, OnResultUpdate); this.state.Add(State.ResultWait, OnResultWaitEnter); this.state.Add(State.Retry, OnRetryEnter, OnRetryUpdate); this.state.Add(State.RetryWait, OnRetryWaitEnter); this.state.Add(State.Finished, OnFinisedEnter); this.state.SetState(State.Idle); }
//------------------------------------------------------------------------- // パズル系 /// <summary> /// 肉球消滅時に呼ばれるコールバック /// </summary> private void OnVanished(Puzzle.ChainInfo score) { // 攻撃ユニットがなければ生成 if (this.attack == null) { this.attack = SkillManager.Instance.Create(this.folder); this.attack.ToUsual(this.Location.AttackBase); } // 消えた肉球の数だけMPを回復 MyEnum.ForEach <Define.App.Attribute>((attribute) => { this.status.AddMp(attribute, score.GetVanishCount(attribute)); }); // 攻撃力計算:連鎖数 * 合計消滅数 / 2 this.status.AddPower(score.ChainCount * score.TotalVanishCount / 2); // 攻撃の大きさを設定する this.attack.SetIntensity(this.status.PowerRate); }
/// <summary> /// 設定を元にStatusを構築 /// </summary> public Status Init(IPlayerConfig config) { // HP this.hp.Init(config.MaxHp, config.MaxHp); // MP MyEnum.ForEach <Define.App.Attribute>((attribute) => { this.mp[attribute].Init(0, config.GetMaxMp(attribute)); }); // DP this.dp.Init(0, config.MaxHp); // AP this.ap.Init(0, config.MaxAp); // 攻撃とダメージ this.power.Init(0, Define.Versus.MAX_DAMAGE); this.damage.Init(0, Define.Versus.MAX_DAMAGE); return(this); }
//------------------------------------------------------------------------- // デバッグ public void OnDebug() { ChainScore.OnDebug(); var paw = this.paws[IndexBy(this.cursorCoord)]; paw.OnDebug(); using (new GUILayout.VerticalScope(GUI.skin.box)) { GUILayout.Label("[Find Paw]"); using (new GUILayout.HorizontalScope()) { MyEnum.ForEach <Define.App.Attribute>((attribute) => { if (GUILayout.Button($"{attribute}")) { var pos = Vector2Int.zero; var found = FindNearPawCoord(attribute, ref pos); Debug.Logger.Log($"{found}:{pos}"); } }); } } }
//------------------------------------------------------------------------- // メソッド /// <summary> /// コンストラクタ /// </summary> public Status() { MyEnum.ForEach <Define.App.Attribute>((attribute) => { this.mp.Add(attribute, new LimitedFloat()); }); }
//------------------------------------------------------------------------- // publicメソッド /// <summary> /// コンストラクタ /// </summary> public ChainInfo() { MyEnum.ForEach <Define.App.Attribute>((attribute) => { this.vanishCounts.Add(0); }); }