SoulAssaultのコード概要
// @file OutlineCode.h // @brief クラス・名前空間の概形を書いている.ヘッダーファイルとしては扱わない. // @brief このファイルは計画書兼ドキュメントとして用いる. // @date 2015/02/14 作成 // @author Hiroi // @namespace Global // WinMain関数でゲームの初期化・メインループ・終了処理. // @namespace Functions // @brief 汎用的に使う関数群. namespace Functions{ } // @namespace GameEngine // @brief ゲーム内容に依存しない機能を扱う. namespace GameEngine{ // @namespace GameEngine::EngineParts // @brief エンジンの実現に必要なクラス. namespace EngineParts{ // @brief 現在の状況やキャッシュなどのセーブしない情報を扱う. class MemoryManager; } // @namespace GameEngine::Sequence // @brief Sceneの親子的なシーケンス制御システムをまとめている. namespace Sequence{ // @brief class SequenceChild; class SequenceParent; class SequenceGrandParent; } // @namespace GameEngine::Input // @brief マウス・キーボードの入力を扱う. namespace Input{ // @brief マウスの入力を管理する. class Mouse; // @brief キーボードの入力を管理する. class Keyborad; } // @namespace GameEngine::Memory // @brief 画像・音楽・アニメなどのハンドルを扱う. namespace Handle{ // @brief 各ハンドルマネージャの仮想基本クラス. class HandleManager; // @brief フォントハンドルマネージャ.CustomDrawString付き. class FontManager; // @brief 画像情報をまとめたもの.ハンドル+画像サイズ. class Image; // @brief 画像ハンドルマネージャ. class ImageManager; // @brief BGM情報をまとめたもの.ハンドル+再生位置. class BackGroundMusic; // @brief BGMハンドルマネージャ.再生機能付き. class BackGroundMusicManager; // @brief SEハンドルマネージャ. class SoundEffectManager; // @brief アニメ情報をまとめたもの.アニメ画像ハンドル+フレーム数+画像サイズ. class Anime; // @brief アニメマネージャ.再生機能付き. class AnimeManager; } // @namespace GameEngine::GUI // @brief Sceneで使う,GUI要素(テキスト/ボタン)を扱う. namespace GUI{ // @brief 各ボタンの仮想基本クラス. // @brief マウス・キーボードの両方で使える. class Button; // @brief テキストボックスのボタン. class TextButton; // @brief 画像のボタン. class ImageButton; // @brief 1シーンごとにボタンを生成・管理する. class ButtonManager; } } // @namespace GameSystem // @brief ゲーム内容に依存する機能を扱う. namespace GameSystem{ // @brief オブジェクトを保持する.これ自体がシングルトンである. // @brief 各ハンドルマネージャ,MemoryManager,SaveDataを保持する. class ObjectManagerSingleton; // @namespace GameSystem::BattleSystem // @brief 戦闘に関する機能を扱う. namespace BattleSystem{ // @brief コマンド1つが1行動に相当する.(味方)画面で入力された情報.(敵)AIによる出力. class Command; // @brief Battleから画面への表示情報を渡す.ダメージ情報・アニメ情報など. class InfoToScene; // @brief 1つの戦闘を管理する. class Battle; // @brief 戦闘内の時間. class TimeLine; // @brief 複数回の戦闘(Round)を管理する. class BattleManager; // @brief namespace BattleParameter{ // @brief 戦況の効果情報. class Slot; // @brief 戦闘フィールドの情報. class Field; // @brief 戦況管理システム.戦闘フィールドの効果も扱う. class SlotSystem; } // @brief namespace ActionAndSkill{ // @brief 攻撃や防御など汎用的な動作をActionとする. class ActionModel; // @brief 1つの行動をSkillとする.出来るだけActionを組み合わせて作る. class Skill; // @brief 実際にスキルを作って管理する. class SkillFactory; } namespace BattleCharacters{ // @brief 味方の戦闘時のキャラクター情報. class BattleCharacter; // @brief 敵の戦闘時のキャラクター情報.AIが付いている. class EnemyBattleCharacter; // @brief それぞれの敵の情報.それぞれのAIが実装されている. // class Babble/Golem/Dragon; } } // @namespace GameSystem::DataManager // @brief セーブする必要があるデータをそれぞれ管理している. namespace DataManager{ // @brief ゲーム内通貨の管理をする. class MoneyManager; // @brief キャラクターを管理する. class CharacterManager; // @brief 入手アイテムを手持ち,倉庫に分けて管理する. class ItemManager; // @brief 入手装備を管理する. class EquipmentManager; // @brief フラグ情報を管理する. class FlagManager; // @brief すべてのデータマネージャを管理する. class DataMaster; } namespace Database{ // @brief データローダーの仮想基本クラス. class DatabaseLoader; // @brief アイテムデータ. class Item; // @brief アイテムのデータベース+ローダー. class ItemDatabase; // @brief 装備品データ. class Equipment; // @brief 装備品のデータベース+ローダー. class EquipmentDatabase; // キャラクターデータ. class Character; // @brief キャラクターのデータベース+ローダー. class CharacterDatabase; // @brief 敵キャラクターデータ. class EnemyCharacter; // @brief 敵キャラクターのデータベース+ローダー. class EnemyCharacterDatabase; // @brief 商品情報のデータベース. class ShoppingDatabase; // @brief フラグ情報のデータベース. class FlagDatabase; // @brief イベント情報. class Event; // @brief イベント情報のデータベース+ローダー. class EventDatabase; } namespace Scenes{ // @brief ゲーム開始前の画面. namespace Top{ // @brief タイトル画面. class TitleScene; // @brief デバッグ画面. class DebugScene; // @brief ゲーム開始前画面の管理. class TopScenesParent; } // @brief ゲーム中の画面. namespace Main{ // @brief メインメニュー画面. class MainMenuScene; // @brief マップ選択画面. class MapSelectScene; // @brief ステータス確認・装備変更画面. class StatusScene; // @brief アイテム管理画面. class ItemScene; // @brief 店の画面. class ShopScene; // @brief イベントの画面. class EventScene; // @brief ゲーム中画面の管理.戦闘画面は含めない. class MainScenesParent; // namespace GameSystem::Scenes::Main::Battle // @brief 戦闘関連画面. namespace Battle{ // @brief 戦闘画面. class BattleScene; // @brief 勝利画面.次の戦闘へ移るか,会話画面・メニュー画面に移る. class WinScene; // @brief 敗北画面.タイトルに移る. class LoseScene; // @brief 戦闘関連画面の管理. class BattleScenesParent; } } // @brief ゲーム前・ゲーム中の共通画面. namespace Common{ // @brief ロード画面. class LoadScene; // @brief セーブ画面. class SaveScene; // @brief オプション画面. class OptionScene; } // @brief シーケンス制御をしている.SequenceGrandParentを継承. class GameSceneMaster; } } // ・コーディング規約(基本は"Google C++ コーディング規約"を参照する) // 拡張子は ".cpp",".h" を使っている. // インクルードガードは "#pragma once" でいい. // ソースコードのフォルダ階層分けは実施していない.そのかわり,Visual Studioのフィルターを用いている. // マクロは使います.使うときは"マクロのコメントを充実させる","#undef でマクロの有効範囲を設定する"などで対策しよう. // ポインタにはnullptrを使う.初期値・番人が特殊な場合にはコメントに明記する. // コメントは "//" を使っている. // インデントはスペース2個.現在利用しているフォーマッターは Visual Studio の C++のデフォルト. // ポインタを扱うときはなるべくスマートポインタ(scoped_ptr,shared_ptr)を使ってください. // ".h"では,std以外をusing namespaceしてはいけない. // コメントはなるべく文章として残す.最後には"."または"。"を付ける. // // ・命名規約(基本は"Google C++ コーディング規約"を参照する) // 単語は省略してはいけない. // 型や変数は名詞に,関数は「命令」的な動詞にするべきです. // 変数名はすべて小文字にして,単語と単語の間にはアンダースコアを入れてください.クラスメンバ変数はアンダースコアで終わるようにします.たとえば my_exciting_local_variable,my_exciting_member_variable_ など.(C++のみ) // 定数名は k で始まり,大文字小文字で続けてください.たとえば kDaysInAWeek など. // 通常の関数は大文字小文字の組み合わせにしてください,アクセサやミューテータは変数名と一致させてください. MyExcitingFunction(), MyExcitingMethod(), my_exciting_member_variable(), set_my_exciting_member_variable() // (アクセサ:Getメソッド,ミューテータ:Setメソッド) // 名前空間は大文字小文字の組み合わせにしている.