| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- using System.Collections.Generic;
- using System.Linq;
- using Microsoft.Xna.Framework;
- using OpenVIII.IGMDataItem;
- using OpenVIII.Kernel;
- namespace OpenVIII.IGMData.Pool
- {
- public sealed class EnemyAttacks : Base<Enemy, EnemyAttacksData>
- {
- #region Properties
- private Target.Group TargetGroup { get => ((Target.Group)ITEM[Count - 3, 0]);
- set => ITEM[Count - 3, 0] = value; }
- #endregion Properties
- #region Methods
- public static EnemyAttacks Create(Rectangle pos, Damageable damageable = null, bool battle = false, int count = 4)
- {
- var r = Create<EnemyAttacks>(count + 1, 1, new Box { Pos = pos, Title = Icons.ID.ABILITY }, count, 1, damageable, battle: battle);
- if (battle)
- r.TargetGroup = Target.Group.Create(r.Damageable);
- return r;
- }
- public override bool Inputs()
- {
- var ret = false;
- if (InputITEM(TargetGroup, ref ret))
- { }
- else
- {
- Cursor_Status |= Cursor_Status.Enabled;
- return base.Inputs();
- }
- return ret;
- }
- public override bool Inputs_CANCEL()
- {
- base.Inputs_CANCEL();
- Hide();
- return true;
- }
- public override bool Inputs_OKAY()
- {
- base.Inputs_OKAY();
- var enemyAttacksData = Contents[CURSOR_SELECT];
- if (enemyAttacksData == null) return true;
- TargetGroup?.SelectTargetWindows(enemyAttacksData);
- TargetGroup?.ShowTargetWindows();
- return true;
- }
- public override void Refresh()
- {
- if (Damageable != null && Damageable.GetEnemy(out var e))
- {
- IEnumerable<EnemyAttacksData> enemyAttacksDatas = e.EnemyAttacksDatas as EnemyAttacksData[] ?? e.EnemyAttacksDatas.ToArray();
- DefaultPages = enemyAttacksDatas.Count() / Rows;
- var i = 0;
- var skip = Page * Rows;
- foreach (var enemyAttacksData in enemyAttacksDatas)
- {
- if (i >= Rows) break;
- if (skip-- > 0) continue;
- ((Text)ITEM[i, 0]).Data = enemyAttacksData.Name;
- ITEM[i, 0].Show();
- BLANKS[i] = false;
- Contents[i] = enemyAttacksData;
- i++;
- }
- for (; i < Rows; i++)
- {
- ITEM[i, 0].Hide();
- BLANKS[i] = true;
- Contents[i] = null;
- }
- }
- base.Refresh();
- }
- public override void Reset()
- {
- Hide();
- base.Reset();
- }
- protected override void Init()
- {
- base.Init();
- for (var i = 0; i < Rows; i++)
- {
- ITEM[i, 0] = new Text
- {
- Pos = SIZE[i]
- };
- ITEM[i, 0].Hide();
- }
- }
- protected override void InitShift(int i, int col, int row)
- {
- base.InitShift(i, col, row);
- SIZE[i].Inflate(-22, -8);
- SIZE[i].Offset(0, 12 + (-8 * row));
- SIZE[i].Height = (int)(12 * TextScale.Y);
- }
- protected override void PAGE_NEXT()
- {
- base.PAGE_NEXT();
- Refresh();
- }
- protected override void PAGE_PREV()
- {
- base.PAGE_PREV();
- Refresh();
- }
- #endregion Methods
- }
- }
|