home *** CD-ROM | disk | FTP | other *** search
/ Phoenix Heaven Sunny 2 / APPARE2.BIN / oh_towns / install / main.c < prev    next >
C/C++ Source or Header  |  1995-06-20  |  7KB  |  277 lines

  1. /*************************************************************************
  2. *
  3. *                installer for APPARE CD vol.2
  4. *
  5. *                                                    cording ... TaroPYON
  6. *
  7. *************************************************************************/
  8.  
  9. #include    "ccilib.h"
  10. #include    "kbcode.h"
  11. #include    "install.h"
  12.  
  13. #define    __APPARE2__
  14. #define    VERSION    "1.01a"
  15. #define    EDITION    "02"
  16.  
  17. #define    EVNO_EXIT    (9999)
  18.  
  19. #define    SCREEN_MODE        (0x030A)
  20. int        DrvInst       = -1;
  21. int        PltNoWhite    = 5;
  22. int        ColBoxNormal  = 0;
  23. int        ColBoxInfo    = 0;
  24. int        ColBoxCaution = 0;
  25. int        ColBoxError   = 0;
  26. int        ColMesh       = 0;
  27.  
  28. int        init();
  29. int        term();
  30. int        install_main();
  31. int        set_debug_menu(char *mnu);
  32.  
  33. #ifdef    DEBUG
  34. #    define    _TOPMENU_NUM    (2)
  35. #else
  36. #    define    _TOPMENU_NUM    (1)
  37. #endif
  38.  
  39. int        main(int argc, char **argv)
  40. {
  41.     init();
  42.     install_main();
  43.     term();
  44.  
  45.     return (0);
  46. }
  47.  
  48. int    init()
  49. {
  50.     char        msg[80], tmp[128];
  51.     char       *mnu;
  52.     char       *msgMenu[_TOPMENU_NUM];
  53.     char       *img;
  54.     int            winBasCol;
  55.  
  56.     APL_init(SCREEN_MODE,1,1);
  57.     LHA_sysInit(NULL);    /* LHA.DLLの初期化    */
  58.  
  59.     /*------------------------------------------------------------------*/
  60.     disp_desktop();
  61.     SCN_wrtPage(1);
  62.     tmp[0] = 0;
  63.     tmp[1] = 255;    /* blue  */
  64.     tmp[2] = 255;    /* red   */
  65.     tmp[3] = 255;    /* green */
  66.     SCN_palette(0,PltNoWhite,tmp);
  67.  
  68.     /* ベースウィンドゥ    ------------------------------------------------*/
  69.     SCN_wrtPage(1);
  70.     winBasCol = 0;
  71. /*    winBasCol = SCN_tile_newMixCol(winBasCol,MIXCOL_STD1,C_HWHITE,C_WHITE);*/
  72.     winBasCol = C_THROUGH;
  73.     APL_openBaseWin(winBasCol);
  74.  
  75.     /* トップバー    ----------------------------------------------------*/
  76.     SCN_wrtPage(1);
  77.     sprintf(msg,"%c%c", Gaiji_ohFMTOWNS>>8, Gaiji_ohFMTOWNS&0xFF);
  78.     msgMenu[0] = " INSTALL ";
  79. #if    _TOPMENU_NUM > 1
  80.     msgMenu[1] = "  DEBUG  ";
  81. #endif
  82.     APL_openTopBarMenu(Fnt16x16,msg,C_HGREEN, _TOPMENU_NUM,Fnt16x12,msgMenu,C_MBLACK);
  83.  
  84.     /* [Oh!FM TOWNS]メニュー    ----------------------------------------*/
  85.     MNU_datAdd( SysMnu, 0, 'A', Fnt16x16, 0, "about_dlg"  , 0, "このプログラムについて");
  86.     MNU_datAdd( SysMnu, 0, 'F', Fnt16x16, 0, "dsp_freemem", 0, "フリーメモリ"          );
  87.  
  88.     /* [INSTALL]メニュー    --------------------------------------------*/
  89.     mnu = AplMnu[0];
  90.     MNU_datAdd( mnu, 0, 'H', Rom16x16, 0, "inst_help", "message.doc", "説明"        );
  91.     MNU_datAdd( mnu, 0,  0 , Rom16x16, 0, ""         , 0            ,  NULL         );
  92.     MNU_mnuAdd( mnu, 0, 'I', Fnt16x16, get_inst_imag_mnu()          , "グラフィック");
  93.     MNU_mnuAdd( mnu, 0, 'S', Fnt16x16, get_inst_snd_mnu()           , "サウンド"    );
  94.     MNU_mnuAdd( mnu, 0, 'A', Fnt16x16, get_inst_tool_mnu()          , "ツール"      );
  95.     MNU_mnuAdd( mnu, 0, 'G', Fnt16x16, get_inst_game_mnu()          , "ゲーム"      );
  96.     MNU_mnuAdd( mnu, 0, 'D', Fnt16x16, get_inst_data_mnu()          , "データ"      );
  97.  
  98.     /* [DEBUG]メニュー    ------------------------------------------------*/
  99. #ifdef    DEBUG
  100.     set_debug_menu( AplMnu[1] );
  101. #endif
  102.  
  103.     /* [EXIT]ボタン    ----------------------------------------------------*/
  104.     APL_setExitEvt("EXIT",EVNO_EXIT,"exit_chk");
  105.  
  106.     /* DTA ライブラリ    ------------------------------------------------*/
  107.     AplDtaInit();
  108.  
  109.     /* 色番号    --------------------------------------------------------*/
  110.     ColBoxNormal  = SCN_tile_newMixCol(ColBoxNormal ,MIXCOL_NORMAL,C_DARK   ,C_WHITE);
  111.     ColBoxInfo    = SCN_tile_newMixCol(ColBoxInfo   ,MIXCOL_NORMAL,C_HGREEN ,C_WHITE);
  112.     ColBoxError   = SCN_tile_newMixCol(ColBoxError  ,MIXCOL_NORMAL,C_HRED   ,C_WHITE);
  113.     ColBoxCaution = SCN_tile_newMixCol(ColBoxCaution,MIXCOL_NORMAL,C_HYELLOW,C_WHITE);
  114.     ColMesh       = SCN_tile_newMixCol(ColMesh      ,MIXCOL_NORMAL,C_THROUGH,C_WHITE);
  115.  
  116.     return (NORMAL);
  117. }
  118.  
  119. int    term()
  120. {
  121.     char    tmp[256];
  122.  
  123.     FS_chdrv(toupper(DirStart[0]) - 'A');
  124.     sprintf(tmp,"%s.",DirStart);
  125.     FS_chdir(tmp);
  126.  
  127.     APL_term();
  128. }
  129.  
  130. int        disp_desktop()
  131. {
  132. #define    DESKTOP_TIFNUM    (9)
  133.     int            n;
  134.     char        tmp[256];
  135.     static char    lastno = -1;
  136.     static char    *tbl[DESKTOP_TIFNUM] =
  137.     {
  138.         "_oht412.tif",
  139.         "_oht501.tif",
  140.         "_oht502.tif",
  141.         "_oht503.tif",
  142.         "_oht504.tif",
  143.         "_oht505.tif",
  144.         "_oht506.tif",
  145.         "_oht507.tif",
  146.         "_oht508.tif" 
  147.     };
  148.  
  149.     if ( lastno < 0 )
  150.     {
  151.         n = DESKTOP_TIFNUM - 1;
  152.     } else
  153.     {
  154.         srand( clock() & 0x7FFFFFFF );
  155.         do
  156.         {
  157.             n = rand() % DESKTOP_TIFNUM;
  158.         } while ( n == lastno );
  159.     }
  160.     sprintf(tmp,"%sWALL/%s", DirStart, tbl[n] );
  161.     lastno = n;
  162.  
  163.     return tif_load(tmp);
  164. }
  165.  
  166. int        install_main()
  167. {
  168.     int        ret;
  169.  
  170.     SCN_wrtPage(1);
  171.     syl_clear();
  172.     for (;;)
  173.     {
  174.         MOS_CON();
  175.         ret = EV_chk(EvTop,0);
  176.         if ( ret == EVNO_EXIT )
  177.             break;
  178.     }
  179.     return (0);
  180. }
  181.  
  182. int        exit_chk()
  183. {
  184.     char    *dlgTxm;
  185.     int        i, ret;
  186.     static char    *msgtbl[4] =
  187.     {
  188.         "",
  189.         "インストーラを終了しますか?",
  190.         "",
  191.         NULL
  192.     };
  193.  
  194.     dlgTxm = DlgTxm_open(ColBoxCaution);
  195.     for ( i = 0; msgtbl[i] != NULL; ++i )
  196.         DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER, msgtbl[i]);
  197.  
  198.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HWHITE, C_DARK,
  199.         '\r'  , KA_EXEC  , EVNO_EXIT, "", 0, "終了 : [実行]");
  200.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK, C_WHITE, C_HWHITE, C_DARK,
  201.         '\x1B', KA_CANCEL,         0, "", 0, "取消 : [取消]");
  202.     DlgTxm_setSize(dlgTxm,480,64);
  203.     DlgTxm_setPosition(dlgTxm,DLGPOS_CENTER_OF_SCREEN);
  204.     ret = DlgTxm_start(dlgTxm);
  205.     DlgTxm_close(dlgTxm);
  206.     if ( ret != EVNO_EXIT )
  207.         ret = 0;
  208.  
  209.     return (ret);
  210. }
  211.  
  212. int        about_dlg()
  213. {
  214.     char    *dlgTxm;
  215.  
  216.     dlgTxm = DlgTxm_open(ColBoxNormal);
  217.     DlgTxm_setTitle(dlgTxm,Fnt16x16, "天晴CD installer ver.%s edition #%s",
  218.         VERSION, EDITION );
  219.  
  220.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER,"「天晴CD Vol.2 鳳凰の巻」インストールプログラム");
  221.     DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER,"");
  222.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER, "%c%c",
  223.         Gaiji_ohFMTOWNS>>8, Gaiji_ohFMTOWNS&0xFF );
  224.     DlgTxm_putf( dlgTxm, Rom16x16, TXMDAT_ATT_CENTER, "1995 8月号付録");
  225.     DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER, "%c%c SOFTBANK",
  226.         Gaiji_copyright>>8, Gaiji_copyright&0xFF );
  227.  
  228.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK,
  229.         C_WHITE, C_HILIGHT, C_DARK, '\r', KA_EXEC, 0, "", 0, "OK : [実行]");
  230.     DlgTxm_setSize(dlgTxm,320,48);
  231.     DlgTxm_setPosition(dlgTxm,DLGPOS_CENTER_OF_SCREEN);
  232.  
  233.     DlgTxm_start(dlgTxm);
  234.     DlgTxm_close(dlgTxm);
  235.  
  236.     return (0);
  237. }
  238.  
  239. int        dsp_freemem()
  240. {
  241.     unsigned int    siz;
  242.     char           *dlgTxm;
  243.     char            tmp1[32], tmp2[32];
  244.  
  245.     siz = APL_getFreeMem();
  246.     dlgTxm = DlgTxm_open(ColBoxInfo);
  247.     DlgTxm_setTitle(dlgTxm,Fnt16x16, "FREE MEMORY SIZE");
  248.  
  249.     DlgTxm_putf( dlgTxm, Fnt16x12, TXMDAT_ATT_CENTER,
  250.         "free memory %s (%s) bytes",
  251.         fdl_ltoaDig(siz,tmp1), fdl_ltoaMsg(siz,tmp2) );
  252.  
  253.     DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK,
  254.         C_WHITE, C_HILIGHT, C_DARK, '\r', KA_EXEC, 0, "", 0, "OK : [実行]");
  255.     DlgTxm_setSize(dlgTxm,400,64);
  256.     DlgTxm_setPosition(dlgTxm,DLGPOS_NORMAL,2,22);
  257.  
  258.     DlgTxm_start(dlgTxm);
  259.     DlgTxm_close(dlgTxm);
  260. }
  261.  
  262. #include    "instimg.c"
  263. #include    "instsnd.c"
  264. #include    "insttool.c"
  265. #include    "instgame.c"
  266. #include    "instdata.c"
  267.  
  268. #if    0
  269. #include    "insttaro.c"
  270. #endif
  271. #include    "instexec.c"
  272. #include    "instlib.c"
  273. #include    "item.c"
  274. #ifdef    DEBUG
  275. #include    "debug.c"
  276. #endif
  277.