OSDN Git Service

設定ダイアログにタイトルを表示
[coroid/inqubus.git] / vhook / main.c
index 4e459d3..aade4df 100644 (file)
@@ -32,13 +32,21 @@ int init(FILE* log){
  * データの初期化
  */
 int initData(DATA* data,FILE* log,const SETTING* setting){
-       int i;
-    data->user_comment.common = data;
-    data->owner_comment.common = data;
-       data->user_comment.enable = setting->enable_user_comment;
-       data->owner_comment.enable = setting->enable_owner_comment;
-       data->user_comment.opaque_comment = setting->opaque_comment;
-    data->owner_comment.opaque_comment = 1; // オーナコメントは常に不透明
+    for(int i = 0; i < N_COMMENT_TYPE; i++) {
+        COMMDATA* const commdata = &data->comment[i];
+        const SETTING_COMMENT* const commset = &setting->comment[i];
+
+        commdata->common = data;
+        commdata->enable = commset->enable;
+        commdata->opaque_comment = setting->opaque_comment;
+    }
+    // オーナコメントは常に不透明
+    data->comment[COMMENT_OWNER].opaque_comment = OPAQUE_TRUE;
+    // オプショナルユーザコメントは半透明時常にアルファ値0.5
+    if(data->comment[COMMENT_USER_OPT].opaque_comment == OPAQUE_FALSE) {
+        data->comment[COMMENT_USER_OPT].opaque_comment = OPAQUE_HALF;
+    }
+
        data->log = log;
        data->fontsize_fix = setting->fontsize_fix;
        data->show_video = setting->show_video;
@@ -51,7 +59,7 @@ int initData(DATA* data,FILE* log,const SETTING* setting){
        TTF_Font** font = data->font;
        const char* font_path = setting->font_path;
        const int font_index = setting->font_index;
-       for(i=0;i<CMD_FONT_MAX;i++){
+       for(int i=0;i<CMD_FONT_MAX;i++){
                int fontsize = COMMENT_FONT_SIZE[i];
                if(setting->fontsize_fix){
                        fontsize <<= 1;
@@ -72,48 +80,29 @@ int initData(DATA* data,FILE* log,const SETTING* setting){
                TTF_SetFontStyle(font[i],TTF_STYLE_BOLD);
        }
        fputs("[main/init]initialized font.\n",log);
-       /*
-        * ユーザコメント
-        */
-       if(data->user_comment.enable){
-               fputs("[main/init]User Comment is enabled.\n",log);
-               //コメントデータ
-               if(initChat(log,&data->user_comment.chat,setting->data_user_path,&data->user_comment.slot,data->video_length)){
-                       fputs("[main/init]initialized comment.\n",log);
-               }else{
-                       fputs("[main/init]failed to initialize comment.",log);
-                       return FALSE;
-               }
-               //コメントスロット
-               if(initChatSlot(log,&data->user_comment.slot,setting->user_slot_max,&data->user_comment.chat)){
-                       fputs("[main/init]initialized comment slot.\n",log);
-               }else{
-                       fputs("[main/init]failed to initialize comment slot.",log);
-                       return FALSE;
-               }
-       }
-       /*
-        * オーナコメント
-        */
-       if(data->owner_comment.enable){
-               fputs("[main/init]Owner Comment is enabled.\n",log);
-               //コメントデータ
-               if(initChat(log,&data->owner_comment.chat,setting->data_owner_path,&data->owner_comment.slot,data->video_length)){
-                       fputs("[main/init]initialized comment.\n",log);
-               }else{
-                       fputs("[main/init]failed to initialize comment.",log);
-                       return FALSE;
-               }
-               //コメントスロット
-        // TODO とりあえず最大数は1024にしておくが...
-               if(initChatSlot(log,&data->owner_comment.slot,1024,&data->owner_comment.chat)){
-                       fputs("[main/init]initialized comment slot.\n",log);
-               }else{
-                       fputs("[main/init]failed to initialize comment slot.",log);
-                       return FALSE;
-               }
-       }
-       
+
+    for (int i = 0; i < N_COMMENT_TYPE; i++) {
+        COMMDATA* const commdata = &data->comment[i];
+        if (commdata->enable) {
+            fprintf(log, "[main/init]Comment[%d] is enabled.\n", i);
+            const SETTING_COMMENT* const commset = &setting->comment[i];
+            //コメントデータ
+            if (initChat(log, &commdata->chat, commset->path, &commdata->slot, data->video_length)) {
+                fputs("[main/init]initialized comment.\n", log);
+            } else {
+                fputs("[main/init]failed to initialize comment.", log);
+                return FALSE;
+            }
+            //コメントスロット
+            if (initChatSlot(log, &commdata->slot, setting->user_slot_max, &commdata->chat)) {
+                fputs("[main/init]initialized comment slot.\n", log);
+            } else {
+                fputs("[main/init]failed to initialize comment slot.", log);
+                return FALSE;
+            }
+        }
+    }
+
        //終わり。
        fputs("[main/init]initialized context.\n",log);
        return TRUE;
@@ -155,19 +144,17 @@ int main_process(DATA* data,SDL_Surface* surf,const int now_vpos){
  * データのクローズ
  */
 int closeData(DATA* data){
-       int i;
-       //ユーザコメントが有効なら開放
-       if(data->user_comment.enable){
-               closeChat(&data->user_comment.chat);
-               closeChatSlot(&data->user_comment.slot);
-       }
-       //オーナコメントが有効なら開放
-       if(data->owner_comment.enable){
-               closeChat(&data->owner_comment.chat);
-               closeChatSlot(&data->owner_comment.slot);
-       }
+       // コメントが有効なら開放
+    for (int i = 0; i < N_COMMENT_TYPE; i++) {
+        COMMDATA* const comment = &data->comment[i];
+        if (comment->enable) {
+            closeChat(&comment->chat);
+            closeChatSlot(&comment->slot);
+        }
+    }
+
     //フォント開放
-       for(i=0;i<CMD_FONT_MAX;i++){
+       for(int i=0;i<CMD_FONT_MAX;i++){
                TTF_CloseFont(data->font[i]);
        }
        return TRUE;