/// interface Package Folder
////////////
// -- Module Interface ---
public interface IModule{
// ICommunicator プロパティは外部に公開
ICommunicator Communicator { get; }
// IManager プロパティは内部アクセスのみに制限
IManager Manager { private get; }
}
//--- Manager ---
public interface IManager{
ICommunicator Communicator { get; }
IManager Manager { get; } // Manager は公開されているが、実装は外部からアクセス不可
}
// ---- I/O ----
public interface ICommunicator{}
// --- Flow ---
public interface IFlow{}
public class FlowLogic{
public void If();
public void While();
}
// --- Mediator 各部署内の情報の仲介役----
public interface IMediator{
public void receive();
public void transfer();
}
//--- State Observer ----
public interface IStateObserver{
void Check();
void NotifyManager(IManager manager);
}
// ---- Communicator モジュール間を接続するI/O。各モジュールに設置 ---
public interface IModuleCommunicator{
// モジュールの状態を取得
string GetState();
// モジュールの進行具合を取得
float GetProgress();
// 他のモジュールにメッセージを送信
void SendMessage(string message);
// 他のモジュールからメッセージを受信
void ReceiveMessage(string message);
// モジュールの状態を外部に通知
void NotifyState();
}
////////////
/// Module
public class CoreModule : IModule{}
public class FlowModule : IModule{} // GameFlow
public class StoryModule : IModule{}
public class InputModule : IModule{}//IN
public class DisplayModule : IModule{}//OUT
public class BattleModule : IModule{}
public class FieldMotionModule : IModule{}
public class FieldModule : IModule{}
public class ItemModule : IModule{}
public class ShopModule : IModule{}
public class MenuModule : IModule{}
// GameManager(Singleton)
public class GameRoom : MonoBehaviour{} // There is a room
public class Presenter{} // I'm standing there as apresenter
// -- Story ---
public class StoryModule : IModule{
// IModuleのManager プロパティの実装 { get { return _manager; } } のこと
IManager Manager => _manager; // 外部からはアクセスできない
private IManager _manager; // StoryManager のインスタンスを保持
public StoryModule(StoryManager storyManager, StoryCommunicator storyCommunicator)
{
_manager = storyManager; // _manager に StoryManager を設定
Communicator = storyCommunicator; // Communicator プロパティの設定
}
// ICommunicator プロパティの実装
public ICommunicator Communicator { get; private set; }
}
public class StoryCommunicator : ICommunicator{}
// モジュール全体の統括
public class StoryManager : IManager{}
// Story Flow
public class StoryFlowManager : IManager{}
public class StoryGenerator{} // generate book from seed data
public class StoryBook{}
public class StoryMainFlow : IFlow{} // Croutin
public class StoryQuestFlow : IFlow{}
public class StoryChapterFlow : IFlow{}
// Story State
public class StoryState{} // Where we are
public class StoryTracker : IStateObserver{}
// Elements
public class Quest{}
public class Chapter{}
// --- Input Module
// Manager
public class InputManager{}
// Input Department Roles
class AboutInputDepartment{}
// Input Mode Management Team
class GameStateChecker{}
class GameFlowMediator : IMediator{}伝達係 between GameFlowChecker & InputModeCoordinator
// Input Mode Switching
class InputModeCoordinator{}
class InpuModeMediator : IMediator{}伝達係 between InputModeCoordinator & Delegate Hundler
class InputMapBook{}
class InputModeBook{}
class InputMapModeConnectionBook{}
// Input Reception Section
class InputReceptor{}
class InputMediator : IMediator{}伝達係 between Receptor & Delegate Hundler
// Delegate Hundling
class InputDelegateRegister{}
class InputDelegateHundler{}
--- shop ---
public interface IShopModule{}
public class ShopModule{}
// Manager
public class ShopManager{}
// Flow
public class ShopFlowManager{}
public class ShopFlow : IFlow{}
public class ShopSelectItemFlow : IFlow{}
public class ShopSelectItemFlow : IFlow{}
// Shop UI Department
public class ShopUIManager{}
public class ShopDialogUI{}
public class ShopItemListUI{}
public class ShopAnswerBoxUI{}
public class ShopPartyBoxUI{}
public class ShopMemberBoxUI{}
// Shop Stats Data Departmant
public class ShopCustomer{}
// Shop Owner
-- Menu --
public class MenuModule{}
// Manager
public class MenuManager{}
// Menu Flow
public class MenuFlow : IFlow{}
public class MenuFlowMediator : IMediator{}
public class MenuCommandFlow : IFlow{}
public class MenuItemFlow : IFlow{}
public class MenuTechFlow : IFlow{}
public class MenuEquipFlow : IFlow{}
public class MenuDetailedStatsFlow : IFlow{}
// Menu State management
public enum MenuState{}
public class MenuNavigator{}
public class MenuNavigationBook{}
// Menu UI Department
public class MenuUIManager{}// View Model
public class MenuCommandListBoxUI : SingleColumnBox{}
public class MenuMoneyBoxUI{}
public class MenuInfoBoxUI{}
public class MenuPartyBoxUI{}
public class MenuMemberBoxUI{}
public class MenuMemberPictureBox{}
public class MenuMemberOverviewStatsBox{}
// Item Menu
public class MenuItemListBoxUI : SingleColumnBox{}
// Tech Menu
public class MenuTechListBoxUI : SingleColumnBox{}
//Detailed Stats Menu
public class MenuMemberDetailedStatsBoxUI{}
public class MenuMemberEquipBoxUI{}
public class MenuMemberExpBoxUI{}
public class MenuMemberRecordBoxUI{} // MaxDamage, Kaishin Count, Combo Count
-- Audio --
public class AudioModule{}
// Manager
public class AudioManager{}
class GameFlowChecker{}
// Music
public MusicCoordinator
public class MusicCollection{}
public SECoordinator
public class SECollection{}
-