Changeset 6941 for lang/d

Show
Ignore:
Timestamp:
02/19/08 21:44:23 (9 months ago)
Author:
omega
Message:

configファイルを動的に読み直すようにした

Location:
lang/d/koke/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lang/d/koke/trunk/config.d

    r6336 r6941  
    88/*                                                                                                                                                              */ 
    99/*-更新履歴---------------------------------------------------------------------*/ 
    10 /*      2007/--/--                                                                                                                                      */ 
     10/*      2008/02/19      動的なコンフィグファイルの再読み込みに対応                                           */ 
    1111/*-その他-----------------------------------------------------------------------*/ 
    1212/*      なし                                                                                                                                              */ 
     
    1616private import std.file; 
    1717private import std.string; 
     18private import std.date; 
    1819 
    1920/** 
     
    2728        char[][char[]] _data;     // データ(キーと値) 
    2829        char[]         _filepath; // ファイルパス 
     30        d_time         _fta;      // ファイルの最終更新時間(監視用) 
    2931public: 
    3032        this() {} 
     
    5658                } 
    5759                _data.rehash; 
     60                 
     61                // 監視用の更新時間 
     62                d_time current_ftc , current_fta , current_ftm; 
     63                getTimes(filepath , current_ftc , current_fta , current_ftm); 
     64                 
     65                _fta = current_fta; 
    5866        } 
    5967        char[] get(char[] key)        { checkKey(key);         return _data[key];             } // 文字列で取得 
     
    8391                        append(filepath, format("%s = %s\n", k, _data[k])); 
    8492                } 
     93        } 
     94         
     95        // configが古いかチェック 
     96        bool isLatest(){ 
     97                d_time current_ftc , current_fta , current_ftm; 
     98                getTimes(_filepath , current_ftc , current_fta , current_ftm); 
     99                 
     100                if(current_fta > _fta) return false; 
     101                return true; 
     102        } 
     103        // configを読み直す 
     104        void update(){ 
     105                load(_filepath); 
    85106        } 
    86107        void dump() 
  • lang/d/koke/trunk/gamecore.d

    r6347 r6941  
    3939{ 
    4040public: 
    41         int timer; 
    42         Map map; 
    43         CharacterPool charpool; 
    44          
    45         ClickablePool menu; 
    46         ClickablePool chart_switch; 
    47         ClickablePool economy_switch; 
    48         ClickablePool speed_switch; 
    49          
    50         int cursor_x; 
    51         int cursor_y; 
    52         int mouse_x; 
    53         int mouse_y; 
    54          
    55         Keypad keypad; 
    56          
    57         double view_point_x; 
    58         double view_point_y; 
    59          
    60         Character target; 
    61          
    62         PlayChart chart; 
     41        int timer;                                              // 汎用タイマー 
     42        Map map;                                                // マップ 
     43        CharacterPool charpool;                 // キャラクタプール 
     44         
     45        ClickablePool menu;                             // ツールメニュー(右下の大きいやつ 
     46        ClickablePool chart_switch;             // チャートのON/OFFスイッチ(右上 
     47        ClickablePool economy_switch;   // エコノミーのON/OFFスイッチ(右上 
     48        ClickablePool speed_switch;             // 速度スイッチ(右上 
     49         
     50        int cursor_x;                                   // マウス直下の座標x(マップチップ座標系) 
     51        int cursor_y;                                   // マウス直下の座標y(マップチップ座標系) 
     52        int mouse_x;                                    // マウス座標x(スクリーン座標系) 
     53        int mouse_y;                                    // マウス座標y(スクリーン座標系) 
     54         
     55        Keypad keypad;                                  // キーボード/ゲームパッド取得用 
     56         
     57        double view_point_x;                    // 視点x(スクリーン座標系) 
     58        double view_point_y;                    // 視点y(スクリーン座標系) 
     59         
     60        Character target;                               // 注目しているキャラクタ(キャラクタ情報ウインドウ用) 
     61         
     62        PlayChart chart;                                // チャート 
     63         
     64        int config_reload_timer;                // 「コンフィグをリロードした」表示用 
     65         
     66        static const int CONFIG_RELOAD_CHECK_INTERVAL = 40 * 5;         // コンフィグ再読み込み確認 
     67        static const int CONFIG_RELOAD_SHOW_INTERVAL = 80;                      // 「コンフィグ読み込んだ」表示時間 
    6368         
    6469        this() 
     
    242247                        } 
    243248                } 
     249                 
     250                // configが古い場合はロードしなおす 
     251                if(timer % CONFIG_RELOAD_CHECK_INTERVAL == 0 && !configparser.isLatest()){ 
     252                        configparser.update(); 
     253                        config_reload_timer = CONFIG_RELOAD_SHOW_INTERVAL; 
     254                }else if(config_reload_timer > 0){ 
     255                        config_reload_timer--; 
     256                } 
    244257        } 
    245258         
     
    279292                } 
    280293                 
    281                 // 左上 
     294                // 種類別キャラクタ数表示(左上) 
    282295                for(int t=0;t<Character.TYPE.MAX;t++){ 
    283296                        if(t == Character.TYPE.NONE) continue; 
     
    286299                } 
    287300                 
     301                // メニュー類(右下/右上) 
    288302                menu.draw(); 
    289303                chart_switch.draw(); 
     
    291305                speed_switch.draw(); 
    292306                 
    293                 string buf; 
     307                // 時間表示(右上) 
    294308                Hell_drawFont("TIME:" ~ std.string.toString(timer / 40) , getScreenWidth() - 80 , 32); 
    295309                 
     310                // チャート 
    296311                if(chart_switch.getSelected() != "") chart.draw(); 
    297312                 
     313                // config_reload 
     314                if(config_reload_timer > 0 && timer % 10 < 5){ 
     315                Hell_drawFont("CONFIG RELOADED" , getScreenWidth() / 2 - 80 , getScreenHeight() / 2  
     316                                        , 2 , 255,128,0); 
     317                } 
     318                 
     319                // fps/cpu 
    298320                Hell_drawFPS(); 
    299321//              Hell_update();