Example #1
0
int32_t startwin_run(void)
{
    if (!gtkenabled) return 1;
    if (!stwidgets.startwin) return 1;

    SetPage(TAB_CONFIG);

    settings.xdim3d = ud.config.ScreenWidth;
    settings.ydim3d = ud.config.ScreenHeight;
    settings.bpp3d = ud.config.ScreenBPP;
    settings.fullscreen = ud.config.ScreenMode;
    settings.usemouse = ud.config.UseMouse;
    settings.usejoy = ud.config.UseJoystick;
    settings.custommoddir = g_modDir;
    settings.forcesetup = ud.config.ForceSetup;
    settings.game = g_gameType;
    Bstrncpyz(settings.selectedgrp, G_GrpFile(), BMAX_PATH);
    if (ud.config.NoAutoLoad) settings.autoload = FALSE;
    else settings.autoload = TRUE;
#ifdef POLYMER
    if (glrendmode == REND_POLYMER)
    {
        if (settings.bpp3d == 8) settings.bpp3d = 32;
        settings.polymer = TRUE;
    }
#endif
    PopulateForm(ALL);

    gtk_main();

    SetPage(TAB_MESSAGES);
    if (retval) // launch the game with these parameters
    {
        ud.config.ScreenWidth = settings.xdim3d;
        ud.config.ScreenHeight = settings.ydim3d;
        ud.config.ScreenBPP = settings.bpp3d;
        ud.config.ScreenMode = settings.fullscreen;
        ud.config.UseMouse = settings.usemouse;
        ud.config.UseJoystick = settings.usejoy;
        ud.config.ForceSetup = settings.forcesetup;

        clearGrpNamePtr();
        g_grpNamePtr = dup_filename(settings.selectedgrp);

        g_gameType = settings.game;
        if (settings.custommoddir != NULL)
            Bstrcpy(g_modDir, settings.custommoddir);
        else Bsprintf(g_modDir, "/");

        if (settings.autoload) ud.config.NoAutoLoad = FALSE;
        else ud.config.NoAutoLoad = TRUE;

        {
            struct grpfile *grp;
            for (grp = listgrps; grp; grp=grp->next)
                if (settings.crcval == grp->crcval) break;

            if (grp)
            {
                g_gameNamePtr = grp->name;
                g_dependencyCRC = grp->dependency;

                if (grp->scriptname && g_scriptNamePtr == NULL)
                    g_scriptNamePtr = dup_filename(grp->scriptname);

                if (grp->defname && g_defNamePtr == NULL)
                    g_defNamePtr = dup_filename(grp->defname);
            }
        }
    }

    return retval;
}
Example #2
0
int32_t startwin_run(void)
{
    MSG msg;
    if (!startupdlg) return 1;

    done = -1;

#ifdef JFAUD
    EnumAudioDevs(&wavedevs, NULL, NULL);
#endif
    SetPage(TAB_CONFIG);
    EnableConfig(1);

    settings.flags = 0;
    if (ud.config.ScreenMode) settings.flags |= 1;
#ifdef POLYMER
    if (glrendmode == REND_POLYMER) settings.flags |= 2;
#endif
    if (ud.config.NoAutoLoad) settings.flags |= 4;
    settings.xdim = ud.config.ScreenWidth;
    settings.ydim = ud.config.ScreenHeight;
    settings.bpp = ud.config.ScreenBPP;
    settings.forcesetup = ud.config.ForceSetup;
    settings.usemouse = ud.config.UseMouse;
    settings.usejoy = ud.config.UseJoystick;
    settings.game = g_gameType;
//    settings.crcval = 0;
    Bstrncpyz(settings.selectedgrp, G_GrpFile(), BMAX_PATH);
    settings.gamedir = g_modDir;
    PopulateForm(-1);

    while (done < 0)
    {
        switch (GetMessage(&msg, NULL, 0,0))
        {
        case 0:
            done = 1;
            break;
        case -1:
            return -1;
        default:
            if (IsWindow(startupdlg) && IsDialogMessage(startupdlg, &msg)) break;
            TranslateMessage(&msg);
            DispatchMessage(&msg);
            break;
        }
    }

    SetPage(TAB_MESSAGES);
    EnableConfig(0);
    if (done)
    {
        ud.config.ScreenMode = (settings.flags&1);
#ifdef POLYMER
        if (settings.flags & 2) glrendmode = REND_POLYMER;
        else glrendmode = REND_POLYMOST;
#endif
        if (settings.flags & 4) ud.config.NoAutoLoad = 1;
        else ud.config.NoAutoLoad = 0;
        ud.config.ScreenWidth = settings.xdim;
        ud.config.ScreenHeight = settings.ydim;
        ud.config.ScreenBPP = settings.bpp;
        ud.config.ForceSetup = settings.forcesetup;
        ud.config.UseMouse = settings.usemouse;
        ud.config.UseJoystick = settings.usejoy;

        clearGrpNamePtr();
        g_grpNamePtr = dup_filename(settings.selectedgrp);

        g_gameType = settings.game;

        if (g_noSetup == 0 && settings.gamedir != NULL)
            Bstrcpy(g_modDir,settings.gamedir);
        else Bsprintf(g_modDir,"/");

        {
            struct grpfile *grp;
            for (grp = listgrps; grp; grp=grp->next)
                if (settings.crcval == grp->crcval) break;

            if (grp)
            {
                g_gameNamePtr = grp->name;
                g_dependencyCRC = grp->dependency;

                if (grp->scriptname && g_scriptNamePtr == NULL)
                    g_scriptNamePtr = dup_filename(grp->scriptname);

                if (grp->defname && g_defNamePtr == NULL)
                    g_defNamePtr = dup_filename(grp->defname);
            }
        }
    }

    if (wavedevs)
    {
        struct audioenumdev *d, *e;
        Bfree(wavedevs->drvs);
        for (e=wavedevs->devs; e; e=d)
        {
            d = e->next;
            if (e->devs) Bfree(e->devs);
            Bfree(e);
        }
        Bfree(wavedevs);
    }

    return done;
}