Skip to content

Instantly share code, notes, and snippets.

@todorok1
Last active March 9, 2025 06:46
Show Gist options
  • Select an option

  • Save todorok1/c5aa2bc7724217e8ef3026e7a839e811 to your computer and use it in GitHub Desktop.

Select an option

Save todorok1/c5aa2bc7724217e8ef3026e7a839e811 to your computer and use it in GitHub Desktop.
シンプルRPGチュートリアル第41回 ステータス表示のウィンドウを制御するクラス
using UnityEngine;
namespace SimpleRpg
{
/// <summary>
/// ステータス表示のウィンドウを制御するクラスです。
/// </summary>
public class StatusWindowController : MonoBehaviour, IBattleWindowController
{
/// <summary>
/// ステータス表示のUIを制御するクラスへの参照です。
/// </summary>
[SerializeField]
StatusUIController _uiController;
/// <summary>
/// コントローラの状態をセットアップします。
/// </summary>
/// <param name="battleManager">戦闘に関する機能を管理するクラス</param>
public void SetUpController(BattleManager battleManager)
{
}
/// <summary>
/// キャラクターのステータスを全てセットします。
/// </summary>
/// <param name="characterStatus">キャラクターのステータス</param>
public void SetCharacterStatus(CharacterStatus characterStatus)
{
if (characterStatus == null)
{
SimpleLogger.Instance.LogWarning("キャラクターステータスがnullです。");
return;
}
var characterName = CharacterDataManager.GetCharacterName(characterStatus.characterId);
_uiController.SetCharacterName(characterName);
var level = characterStatus.level;
var parameterTable = CharacterDataManager.GetParameterTable(characterStatus.characterId);
var record = parameterTable.parameterRecords.Find(r => r.level == level);
_uiController.SetCurrentHp(characterStatus.currentHp);
_uiController.SetMaxHp(record.hp);
_uiController.SetCurrentMp(characterStatus.currentMp);
_uiController.SetMaxMp(record.mp);
}
/// <summary>
/// 全キャラクターのステータスを更新します。
/// </summary>
public void UpdateAllCharacterStatus()
{
foreach (var characterId in CharacterStatusManager.partyCharacter)
{
var characterStatus = CharacterStatusManager.GetCharacterStatusById(characterId);
SetCharacterStatus(characterStatus);
}
}
/// <summary>
/// ステータス表示のウィンドウを表示します。
/// </summary>
public void ShowWindow()
{
_uiController.Show();
}
/// <summary>
/// ステータス表示のウィンドウを非表示にします。
/// </summary>
public void HideWindow()
{
_uiController.Hide();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment