* データの初期化
*/
int initData(DATA* data,FILE* log,const SETTING* setting){
- int i;
- data->comment[0].common = data;
- data->comment[1].common = data;
- data->comment[0].enable = setting->comment[0].enable;
- data->comment[1].enable = setting->comment[1].enable;
- data->comment[0].opaque_comment = setting->opaque_comment;
- data->comment[1].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[OWNER].opaque_comment = TRUE;
+
data->log = log;
data->fontsize_fix = setting->fontsize_fix;
data->show_video = setting->show_video;
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;
TTF_SetFontStyle(font[i],TTF_STYLE_BOLD);
}
fputs("[main/init]initialized font.\n",log);
- /*
- * ユーザコメント
- */
- if(data->comment[0].enable){
- fputs("[main/init]User Comment is enabled.\n",log);
- //コメントデータ
- if(initChat(log,&data->comment[0].chat,setting->comment[0].path,&data->comment[0].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->comment[0].slot,setting->user_slot_max,&data->comment[0].chat)){
- fputs("[main/init]initialized comment slot.\n",log);
- }else{
- fputs("[main/init]failed to initialize comment slot.",log);
- return FALSE;
- }
- }
- /*
- * オーナコメント
- */
- if(data->comment[1].enable){
- fputs("[main/init]Owner Comment is enabled.\n",log);
- //コメントデータ
- if(initChat(log,&data->comment[1].chat,setting->comment[1].path,&data->comment[1].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->comment[1].slot,1024,&data->comment[1].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;
* データのクローズ
*/
int closeData(DATA* data){
- int i;
- //ユーザコメントが有効なら開放
- if(data->comment[0].enable){
- closeChat(&data->comment[0].chat);
- closeChatSlot(&data->comment[0].slot);
- }
- //オーナコメントが有効なら開放
- if(data->comment[1].enable){
- closeChat(&data->comment[1].chat);
- closeChatSlot(&data->comment[1].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;
#include "chat/chat_slot.h"
//プロセス
-int process(DATA* data,SDL_Surface* surf,const int now_vpos){
- //ユーザコメント
- if(data->comment[0].enable){
- if(!chat_process(&data->comment[0],surf,now_vpos)){
- fputs("[process/process]failed to process comment.\n",data->log);
- return FALSE;
- }
- }
- //オーナコメント
- if(data->comment[1].enable){
- if(!chat_process(&data->comment[1],surf,now_vpos)){
- fputs("[process/process]failed to process comment.\n",data->log);
- return FALSE;
- }
- }
- return TRUE;
-}
+int process(DATA* data, SDL_Surface* surf, const int now_vpos) {
+ for (int i = 0; i < N_COMMENT_TYPE; i++) {
+ COMMDATA* comment = &data->comment[i];
+ if (comment->enable) {
+ if (!chat_process(comment, surf, now_vpos)) {
+ fputs("[process/process]failed to process comment.\n", data->log);
+ return FALSE;
+ }
+ }
+ }
+ return TRUE;
+}