コード例 #1
0
ファイル: document_rendering.c プロジェクト: jogi1/camquake
// render block chain
static void RenderBlockChain(document_rendering_context_t *cx, document_tag_t *tag)
{
    while (tag)
    {
        document_tag_t *next = tag->next;

        AddBlankLine(cx);

        if (IsBlockElement(tag))
        {
            // process tag with appropiate renderer
            switch (tag->type)
            {
            case tag_section:
                Render_Section(cx, (document_tag_section_t *) tag);
                break;

            case tag_p:
                Render_P(cx, (document_tag_p_t *) tag);
                break;

            case tag_list:
                Render_List(cx, (document_tag_list_t *) tag);
                break;

            case tag_dict:
                Render_Dict(cx, (document_tag_dict_t *) tag);
                break;

            case tag_hr:
                Render_Hr(cx, (document_tag_hr_t *) tag);
                break;

            case tag_pre:
                Render_Pre(cx, (document_tag_pre_t *) tag);
                break;

            case tag_h:
                Render_H(cx, (document_tag_h_t *) tag);
                break;

            default:    // skip this tag
                break;
            }
        }
        else
        {
            next = RenderInlineChain(cx, tag);
        }

        AddBlankLine(cx);

        tag = next;
    }
}
コード例 #2
0
LTBOOL CFolderObjectives::Build()
{

	CreateTitle(IDS_TITLE_OBJECTIVES);


    m_pMissionCtrl=AddTextItem(IDS_SPACER,LTNULL,0,LTTRUE, GetMediumFont());
	m_pMissionCtrl->SetFixedWidth(480);
    m_pMissionCtrl->Enable(LTFALSE);

	AddBlankLine();

    CLTGUITextItemCtrl* pCtrl=AddTextItem(IDS_OBJECTIVES,LTNULL,0,LTTRUE, GetMediumFont());
    pCtrl->Enable(LTFALSE);

	CLTGUIFont *pFont = GetMediumFont();

    m_pSpacerCtrl = CreateTextItem(" ",LTNULL,LTNULL, LTTRUE, pFont);
    m_pSpacerCtrl->Enable(LTFALSE);

	dwNumStaticControls = m_controlArray.GetSize();

	return 	CBaseFolder::Build();
;
}
コード例 #3
0
ファイル: document_rendering.c プロジェクト: jogi1/camquake
// render Section tag
static void Render_Section(document_rendering_context_t *cx, document_tag_section_t *p)
{
    if (p->indent)
    {
        cx->l_margin += DOCUMENT_INDENT;
        AddBlankLine(cx);
    }

    RenderBlockChain(cx, p->tags);

    if (p->indent)
    {
        cx->l_margin -= DOCUMENT_INDENT;
        AddBlankLine(cx);
    }
}
コード例 #4
0
ファイル: document_rendering.c プロジェクト: jogi1/camquake
// render HR tag
static void Render_Hr(document_rendering_context_t *cx, document_tag_hr_t *hr)
{
    int i;

    document_align_t old_align = cx->align;
    cx->align = align_center;

    AddBlankLine(cx);

    cx->line_buf[cx->line_pos++] = 29;
    for (i=0; i < (cx->width - cx->l_margin - cx->r_margin) / 2; i++)
        cx->line_buf[cx->line_pos++] = 30;
    cx->line_buf[cx->line_pos++] = 31;

    LineFeed(cx);

    AddBlankLine(cx);

    cx->align = old_align;
}
コード例 #5
0
ファイル: document_rendering.c プロジェクト: jogi1/camquake
// render P tag
static void Render_P(document_rendering_context_t *cx, document_tag_p_t *p)
{
    document_align_t old_align = cx->align;
    cx->align = p->align;

    if (p->indent)
    {
        cx->l_margin += DOCUMENT_INDENT;
        AddBlankLine(cx);
    }

    RenderBlockChain(cx, p->tags);

    if (p->indent)
    {
        cx->l_margin -= DOCUMENT_INDENT;
        AddBlankLine(cx);
    }

    cx->align = old_align;
}
コード例 #6
0
void CFolderMultiBriefing::OnFocus(LTBOOL bFocus)
{
	if (bFocus)
	{
		int missionId = g_pGameClientShell->GetMPMissionName();
		int briefId = g_pGameClientShell->GetMPMissionBriefing();

		if (missionId)
		{
			CLTGUIFont *pFont = (briefId ? GetMediumFont() : GetLargeFont());
			CLTGUITextItemCtrl* pCtrl =AddTextItem(missionId,LTNULL,0,LTTRUE,pFont);
			pCtrl->SetFixedWidth(480);
			pCtrl->Enable(LTFALSE);
		}
		if (briefId)
		{
			if (missionId) AddBlankLine();

			CLTGUITextItemCtrl* pCtrl=AddTextItem(IDS_BRIEFING,LTNULL,0,LTTRUE,GetMediumFont());
			pCtrl->Enable(LTFALSE);

			CStaticTextCtrl *pBrief = AddStaticTextItem(briefId,LTNULL,LTNULL,480,0,LTTRUE,GetSmallFont());
			if (pBrief)
			{
				pBrief->Enable(LTFALSE);
			}

		}

		UseBack(LTFALSE);
	}
	else
	{
		RemoveFree();
	}
	CBaseFolder::OnFocus(bFocus);

}
コード例 #7
0
ファイル: FolderAwards.cpp プロジェクト: Arc0re/lithtech
void CFolderAwards::UpdateData()
{
	CPlayerSummaryMgr *pPSummary = g_pGameClientShell->GetPlayerSummary();
	if (!pPSummary) return;

	CMissionData* pMissionData = g_pInterfaceMgr->GetMissionData();
	if (!pMissionData) return;

	int nMissionNum = pMissionData->GetMissionNum();
	MISSION* pMission = g_pMissionMgr->GetMission(nMissionNum);
	if (!pMission) return;

	MISSIONSUMMARY* pMSummary = pPSummary->GetMissionSummary(nMissionNum);
	if (!pMSummary) return;

	pPSummary->ReadRankData();

	RemoveFree();

    CLTGUITextItemCtrl* pCtrl = LTNULL;


	g_pLTClient->CPrint("best:%0.2f,old best:%0.2f",pMSummary->fBestRank, pMSummary->fOldBestRank);
	if (pMSummary->fBestRank > pMSummary->fOldBestRank)
	{
		RANKBONUS oldBonus;
		RANKBONUS newBonus;
		pMission->GetRankBonus(pMSummary->fBestRank,&newBonus);
		pMission->GetRankBonus(pMSummary->fOldBestRank,&oldBonus);
		if (newBonus.nPerturbPoints > oldBonus.nPerturbPoints)
		{
			pCtrl = AddTextItem(IDS_BONUS_PERTURB,LTNULL,0, LTTRUE, GetMediumFont());
			pCtrl->Enable(LTFALSE);
		}

		if (newBonus.nAmmoPoints > oldBonus.nAmmoPoints)
		{
			pCtrl = AddTextItem(IDS_BONUS_AMMO,LTNULL,0, LTTRUE, GetMediumFont());
			pCtrl->Enable(LTFALSE);
		}

		if (newBonus.nArmorPoints > oldBonus.nArmorPoints)
		{
			pCtrl = AddTextItem(IDS_BONUS_ARMOR,LTNULL,0, LTTRUE, GetMediumFont());
			pCtrl->Enable(LTFALSE);
		}

		if (newBonus.nDamagePoints > oldBonus.nDamagePoints)
		{
			pCtrl = AddTextItem(IDS_BONUS_DAMAGE,LTNULL,0, LTTRUE, GetMediumFont());
			pCtrl->Enable(LTFALSE);
		}

		if (newBonus.nHealthPoints > oldBonus.nHealthPoints)
		{
			pCtrl = AddTextItem(IDS_BONUS_HEALTH,LTNULL,0, LTTRUE, GetMediumFont());
			pCtrl->Enable(LTFALSE);
		}

		if (newBonus.nReputationPoints > oldBonus.nReputationPoints)
		{
			pCtrl = AddTextItem(IDS_BONUS_REPUTATION,LTNULL,0, LTTRUE, GetMediumFont());
			pCtrl->Enable(LTFALSE);
		}

		if (newBonus.nStealthPoints > oldBonus.nStealthPoints)
		{
			pCtrl = AddTextItem(IDS_BONUS_STEALTH,LTNULL,0, LTTRUE, GetMediumFont());
			pCtrl->Enable(LTFALSE);
		}

	}

	if (pCtrl)
		AddBlankLine();


//	Generate Awards
	if (pMission->bAllowAwards)
	{
		MISSIONAWARDS *pAwards = g_pMissionMgr->GetMissionAwards();

		int awardNum = 0;
        pCtrl = AddTextItem(IDS_AWARDS,LTNULL,0, LTTRUE, GetLargeFont());
        pCtrl->Enable(LTFALSE);

        if (pAwards->nNumHighAmmoAwards && pMission->nHighAmmo > -1 && pMSummary->dwNumShotsFired >= (uint32)pMission->nHighAmmo)
		{
			awardNum = GetRandom(0,pAwards->nNumHighAmmoAwards-1);
            pCtrl = AddTextItem(pAwards->aHighAmmoAwards[awardNum],LTNULL,0, LTTRUE, GetSmallFont());
            pCtrl->Enable(LTFALSE);
		}
        if (pAwards->nNumLowAmmoAwards && pMission->nLowAmmo > -1 && pMSummary->dwNumShotsFired <= (uint32)pMission->nLowAmmo)
		{
			awardNum = GetRandom(0,pAwards->nNumLowAmmoAwards-1);
            pCtrl = AddTextItem(pAwards->aLowAmmoAwards[awardNum],LTNULL,0, LTTRUE, GetSmallFont());
            pCtrl->Enable(LTFALSE);
		}
	    LTFLOAT fAccuracy = 0.0f;
		if (pMSummary->dwNumShotsFired)
		{
			fAccuracy = (LTFLOAT) pMSummary->dwNumHits / (LTFLOAT) pMSummary->dwNumShotsFired;
		}

		if (pAwards->nNumAccuracyAwards && fAccuracy > pAwards->fAccuracyPct)
		{
			awardNum = GetRandom(0,pAwards->nNumAccuracyAwards-1);
            pCtrl = AddTextItem(pAwards->aAccuracyAwards[awardNum],LTNULL,0, LTTRUE, GetSmallFont());
            pCtrl->Enable(LTFALSE);
		}
		if (pAwards->nNumMarksmanAwards && pMSummary->dwNumShotsFired)
		{

            LTFLOAT fMarksman = (LTFLOAT) pMSummary->dwHitLocations[HL_HEAD] / (LTFLOAT) pMSummary->dwNumShotsFired;
			if (fMarksman > pAwards->fMarksmanPct)
			{
				awardNum = GetRandom(0,pAwards->nNumMarksmanAwards-1);
                pCtrl = AddTextItem(pAwards->aMarksmanAwards[awardNum],LTNULL,0, LTTRUE, GetSmallFont());
                pCtrl->Enable(LTFALSE);
			}
		}
		if (pAwards->nNumNonInjuryAwards && g_pInterfaceMgr->GetPlayerStats()->GetMissionDamage() == 0)
		{

			awardNum = GetRandom(0,pAwards->nNumNonInjuryAwards-1);
            pCtrl = AddTextItem(pAwards->aNonInjuryAwards[awardNum],LTNULL,0, LTTRUE, GetSmallFont());

            pCtrl->Enable(LTFALSE);
		}
		if (pAwards->nNumNotShotAwards && pMSummary->dwNumTimesHit == 0)
		{

			awardNum = GetRandom(0,pAwards->nNumNotShotAwards-1);
            pCtrl = AddTextItem(pAwards->aNotShotAwards[awardNum],LTNULL,0, LTTRUE, GetSmallFont());

            pCtrl->Enable(LTFALSE);
		}
        if (pAwards->nNumStealthAwards && pMission->nMaxDetect > -1 && (pMSummary->dwNumTimesDetected + pMSummary->dwNumBodies) <= (uint32)pMission->nMaxDetect)
		{
			awardNum = GetRandom(0,pAwards->nNumStealthAwards-1);
            pCtrl = AddTextItem(pAwards->aStealthAwards[awardNum],LTNULL,0, LTTRUE, GetSmallFont());
            pCtrl->Enable(LTFALSE);
		}

	}
}
コード例 #8
0
// Change in focus
void CFolderWeaponControls::OnFocus(LTBOOL bFocus)
{
	if (bFocus)
	{
		nLastId = WMGR_INVALID_ID;
		ReadBindings();		
		CLTGUIColumnTextCtrl *pCtrl=AddColumnText(LTNULL, LTNULL, LTTRUE, GetMediumFont());

		HSTRING hText = g_pLTClient->FormatString(IDS_KEY);
		pCtrl->AddColumn(hText, 50, LTF_JUSTIFY_LEFT);
		g_pLTClient->FreeString(hText);

		hText = g_pLTClient->FormatString(IDS_WEAPON);
		pCtrl->AddColumn(hText, kWidth, LTF_JUSTIFY_LEFT);
		pCtrl->Enable(LTFALSE);
		g_pLTClient->FreeString(hText);

//		AddBlankLine();


		for (int i = 0; i < 10; i++)
		{
			pCtrl=AddColumnText(LTNULL, IDS_HELP_SETWEAPON, LTFALSE, GetSmallFont());
			pCtrl->SetParam1(i+1);

			char str[16];
			sprintf(str,"  %s",szTriggers[i]);
			hText = g_pLTClient->CreateString(str);
			pCtrl->AddColumn(hText, 50, LTF_JUSTIFY_LEFT);
			g_pLTClient->FreeString(hText);

			int nWeaponId = g_pWeaponMgr->GetWeaponId(m_nActions[i]);
			WEAPON *pWeapon = g_pWeaponMgr->GetWeapon(nWeaponId);
			if (pWeapon)
				pCtrl->AddColumn(pWeapon->nNameId, kWidth, LTF_JUSTIFY_LEFT);
			else
				pCtrl->AddColumn(IDS_CONTROL_UNASSIGNED, kWidth, LTF_JUSTIFY_LEFT);


		}

		AddBlankLine();

		m_bLargeIcon = (GetConsoleInt("BindingIconSize",0) > 0);
		CToggleCtrl *pToggle = AddToggle(IDS_WPN_ICON_SZ,IDS_HELP_WPN_ICON_SZ, kWidth, &m_bLargeIcon,LTFALSE,GetSmallFont());
		pToggle->SetOnString(IDS_LARGE);
		pToggle->SetOffString(IDS_SMALL);

		m_nIconAlpha = (int)(GetConsoleFloat("BindingIconAlpha",0.7f) * 10.0f);
		CSliderCtrl *pSlider = AddSlider(IDS_WPN_ICON_A,IDS_HELP_WPN_ICON_A,kWidth,kSlider,&m_nIconAlpha,LTFALSE,GetSmallFont());
		pSlider->SetSliderIncrement(1);
		pSlider->SetSliderRange(0,10);

		m_bUseNumbers = (GetConsoleInt("BindingNumbers",1) > 0);
		pToggle = AddToggle(IDS_WPN_USE_NUMS,IDS_HELP_WPN_USE_NUMS, kWidth, &m_bUseNumbers,LTFALSE,GetSmallFont());
		pToggle->SetOnString(IDS_YES);
		pToggle->SetOffString(IDS_NO);


        UpdateData(LTFALSE);

	}
	else
	{
		UpdateData();

		WriteConsoleInt("BindingIconSize",m_bLargeIcon);
		WriteConsoleInt("BindingNumbers",m_bUseNumbers);
		WriteConsoleFloat("BindingIconAlpha",((LTFLOAT)m_nIconAlpha) / 10.0f);
		WriteBindings();

		g_pInterfaceMgr->GetPlayerStats()->UpdateWeaponBindings();

		// Just to be safe save the config incase anything changed...
        g_pLTClient->WriteConfigFile("autoexec.cfg");
		RemoveFree();

	}
	CBaseFolder::OnFocus(bFocus);
	if (bFocus) UpdateSelection();

}
コード例 #9
0
ファイル: FolderPlayer.cpp プロジェクト: Arc0re/lithtech
// Build the folder
LTBOOL CFolderPlayer::Build()
{

	CreateTitle(IDS_TITLE_PLAYER_SETUP);

    g_vtPlayerModel.Init(g_pLTClient, "NetPlayerModel", "Hero,action", 0.0f);
    g_vtPlayerTeam.Init(g_pLTClient, "NetPlayerTeam", LTNULL, 0.0f);
    g_vtTargetNameTransparency.Init(g_pLTClient, "TargetNameTransparency", LTNULL, 1.0f);
    g_vtTargetNameSize.Init(g_pLTClient, "TargetNameSize", LTNULL, 0.0f);

	m_pLabel = CreateTextItem(IDS_PLAYER_NAME, CMD_EDIT_NAME, IDS_HELP_PLAYER_NAME);

    m_pEdit = CreateEditCtrl(" ", CMD_EDIT_NAME, LTNULL, m_szPlayerName, sizeof(m_szPlayerName), 25, LTTRUE, GetMediumFont());
	m_pEdit->EnableCursor();
    m_pEdit->Enable(LTFALSE);
	m_pEdit->SetAlignment(LTF_JUSTIFY_CENTER);

	m_pNameGroup = AddGroup(640,m_pLabel->GetHeight(),IDS_HELP_PLAYER_NAME);

    LTIntPt offset(0,0);
    m_pNameGroup->AddControl(m_pLabel,offset,LTTRUE);
	offset.x = 200;
    m_pNameGroup->AddControl(m_pEdit,offset,LTFALSE);

	AddBlankLine();

	CToggleCtrl* pToggle = AddToggle(IDS_AUTOSWITCH_WEAPONS, IDS_HELP_AUTOSWITCH_WEAPONS, 225, &m_bAutoSwitchWeapons );
	pToggle->SetOnString(IDS_ON);
	pToggle->SetOffString(IDS_OFF);

	pToggle = AddToggle(IDS_AUTOSWITCH_AMMO, IDS_HELP_AUTOSWITCH_AMMO, 225, &m_bAutoSwitchAmmo );
	pToggle->SetOnString(IDS_ON);
	pToggle->SetOffString(IDS_OFF);

	pToggle = AddToggle(IDS_IGNORE_TAUNTS, IDS_HELP_IGNORE_TAUNTS, 225, &m_bIgnoreTaunts );
	pToggle->SetOnString(IDS_YES);
	pToggle->SetOffString(IDS_NO);

	CCycleCtrl *pCycle = AddCycleItem(IDS_CONNECT_SPEED,IDS_CONNECT_SPEED,200,25,&m_nConnect);
	pCycle->AddString(IDS_CONNECT_VSLOW);
	pCycle->AddString(IDS_CONNECT_SLOW);
	pCycle->AddString(IDS_CONNECT_MEDIUM);
	pCycle->AddString(IDS_CONNECT_FAST);

	pCycle = AddCycleItem(IDS_PLAYER_TEAM,IDS_HELP_PLAYER_TEAM,200,25,&m_nTeam);
	pCycle->AddString(IDS_PLAYER_EITHER);
	pCycle->AddString(IDS_PLAYER_UNITY);
	pCycle->AddString(IDS_PLAYER_HARM);

	CSliderCtrl* pSlider = AddSlider(IDS_TARGETNAMETRANSPARENCY, IDS_TARGETNAMETRANSPARENCY_HELP, 225, 200, &m_nTargetNameTransparency);
	pSlider->SetSliderRange(0, 100);
	pSlider->SetSliderIncrement(5);

	pCycle = AddCycleItem(IDS_TARGETNAMESIZE,IDS_TARGETNAMESIZE_HELP,200,25,&m_nTargetNameSize);
	pCycle->AddString(IDS_SMALL);
	pCycle->AddString(IDS_MEDIUM);
	pCycle->AddString(IDS_LARGE);

	m_pModelCtrl = AddCycleItem(IDS_PLAYER_MODEL,IDS_HELP_PLAYER_MODEL,200,25,&m_nModNum);
	m_pModelCtrl->NotifyOnChange(CMD_MODEL_CHANGE,this);

	m_pSkinCtrl = AddCycleItem(IDS_PLAYER_SKIN,IDS_HELP_PLAYER_SKIN,200,25,&m_nSkinNum);
	m_pSkinCtrl->NotifyOnChange(CMD_SKIN_CHANGE,this);

	m_pHeadCtrl = AddCycleItem(IDS_PLAYER_HEAD,IDS_HELP_PLAYER_HEAD,200,25,&m_nHeadNum);
	m_pHeadCtrl->NotifyOnChange(CMD_HEAD_CHANGE,this);

	// Make sure to call the base class
	if (! CBaseFolder::Build()) return LTFALSE;

	UseBack(LTTRUE,LTTRUE);
	return LTTRUE;
}
コード例 #10
0
void CFolderStats::UpdateData()
{
	CPlayerSummaryMgr *pPSummary = g_pGameClientShell->GetPlayerSummary();
	if (!pPSummary) return;
	CMissionData* pMissionData = g_pInterfaceMgr->GetMissionData();
	if (!pMissionData) return;
	int nMissionNum = pMissionData->GetMissionNum();
	MISSION* pMission = g_pMissionMgr->GetMission(nMissionNum);
	MISSIONSUMMARY* pMSummary = pPSummary->GetMissionSummary(nMissionNum);

	pPSummary->ReadRankData();

	RemoveFree();

    CLTGUITextItemCtrl* pCtrl = LTNULL;
    HSTRING hTxt = LTNULL;

	//time in mission
	char str[128];
    LTFLOAT fSec = pMSummary->fTotalMissionTime;
    uint32 nMin = (uint32)fSec / 60;
    fSec -= (60.0f * (LTFLOAT)nMin);
    uint32 nHour = nMin / 60;
	nMin -= 60 * nHour;
	sprintf(str,"%02d:%02d:%.1f",nHour,nMin,fSec);

    hTxt=g_pLTClient->FormatString(IDS_STAT_TIME,str);
    pCtrl= AddTextItem(hTxt,LTNULL,0, LTTRUE, GetLargeFont());
    pCtrl->Enable(LTFALSE);
    g_pLTClient->FreeString(hTxt);

	AddBlankLine();

	//accuracy
    pCtrl = AddTextItem(IDS_STAT_ACCURACY,LTNULL,0,LTTRUE, GetLargeFont());
    pCtrl->Enable(LTFALSE);
    LTFLOAT fAccuracy = 0.0f;
	if (pMSummary->dwNumShotsFired)
	{
        fAccuracy = (LTFLOAT) pMSummary->dwNumHits / (LTFLOAT) pMSummary->dwNumShotsFired;
		int nAccuracy =(int)( 100.0f * fAccuracy);

		//shots fired
        hTxt=g_pLTClient->FormatString(IDS_STAT_SHOTS,
				pMSummary->dwNumShotsFired,pMSummary->dwNumHits, nAccuracy);
        pCtrl= AddTextItem(hTxt,LTNULL,0, LTTRUE, GetSmallFont());
        pCtrl->Enable(LTFALSE);
        g_pLTClient->FreeString(hTxt);

		//hit locations
        uint32 h = pMSummary->dwHitLocations[HL_HEAD];
        uint32 t = pMSummary->dwHitLocations[HL_TORSO];
        uint32 a = pMSummary->dwHitLocations[HL_ARM];
        uint32 l = pMSummary->dwHitLocations[HL_LEG];
        hTxt=g_pLTClient->FormatString(IDS_STAT_HITS,h,t,(a+l));
        pCtrl= AddTextItem(hTxt,LTNULL,0,LTTRUE, GetSmallFont());
        pCtrl->Enable(LTFALSE);
        g_pLTClient->FreeString(hTxt);

		AddBlankLine();

		// casualties
        pCtrl = AddTextItem(IDS_STAT_CASUALTIES,LTNULL,0, LTTRUE, GetLargeFont());
        pCtrl->Enable(LTFALSE);
        hTxt=g_pLTClient->FormatString(IDS_STAT_KILLS, pMSummary->dwNumEnemyKills,
										pMSummary->dwNumFriendKills, pMSummary->dwNumNeutralKills);
        pCtrl= AddTextItem(hTxt,LTNULL,0, LTTRUE, GetSmallFont());
        pCtrl->Enable(LTFALSE);
        g_pLTClient->FreeString(hTxt);


	}
	else
	{
        hTxt=g_pLTClient->FormatString(IDS_STAT_NOSHOTS);
        pCtrl= AddTextItem(hTxt,LTNULL,0, LTTRUE, GetSmallFont());
        pCtrl->Enable(LTFALSE);
        g_pLTClient->FreeString(hTxt);
	}

	AddBlankLine();

	//stealth
    pCtrl = AddTextItem(IDS_STAT_STEALTH,LTNULL,0, LTTRUE, GetLargeFont());
    pCtrl->Enable(LTFALSE);

    hTxt=g_pLTClient->FormatString(IDS_STAT_DETECTED,pMSummary->dwNumTimesDetected,pMSummary->dwNumDisturbances);
    pCtrl= AddTextItem(hTxt,LTNULL,0, LTTRUE, GetSmallFont());
    pCtrl->Enable(LTFALSE);
    g_pLTClient->FreeString(hTxt);
    hTxt=g_pLTClient->FormatString(IDS_STAT_DETECTED2,pMSummary->dwNumBodies,pMSummary->dwNumTimesHit);
    pCtrl= AddTextItem(hTxt,LTNULL,0, LTTRUE, GetSmallFont());
    pCtrl->Enable(LTFALSE);
    g_pLTClient->FreeString(hTxt);


	AddBlankLine();

	//inteligence
	int cur = pMSummary->m_nMissionCurNumIntel;
	if (cur)
	{
        pCtrl = AddTextItem(IDS_STAT_INTEL,LTNULL,0, LTTRUE, GetLargeFont());
        pCtrl->Enable(LTFALSE);
		
        hTxt=g_pLTClient->FormatString(IDS_STAT_FOUND,cur);
        pCtrl= AddTextItem(hTxt,LTNULL,0, LTTRUE, GetSmallFont());
        pCtrl->Enable(LTFALSE);
	}
	if (cur || pMSummary->m_nMissionMaxIntel)
		AddTextItem(IDS_VIEW_GALLERY,CMD_INTEL,IDS_HELP_VIEW_GALLERY, LTFALSE, GetSmallFont());

	CalculateLastDrawn();
	CheckArrows();
}
コード例 #11
0
ファイル: document_rendering.c プロジェクト: jogi1/camquake
// render LIST tag
static void Render_Dict(document_rendering_context_t *cx, document_tag_dict_t *dict)
{
    char separator[128];
    int indent;
    document_tag_di_t *item;
    int item_num;
    int num_width = 0;

    // first check, how much indentation we should use
    indent = 2;
    if (dict->separator != list_separator_none)
        indent++;
    switch (dict->bullet)
    {
    case list_bullet_none:
        break;

    case list_bullet_dot:
    case list_bullet_letter:
    case list_bullet_bigletter:
        indent++;
        break;

    case list_bullet_number:
        {
            // count dict size
            item_num = 0;
            item = dict->items;
            while (item)
            {
                item_num++;
                item = (document_tag_di_t *) item->next;
            }
            if (item_num == 0)
                break;
            num_width = log10(item_num) + 1;
            indent += num_width;
        }
    }

    cx->list_count++;
    cx->l_margin += indent;
    AddBlankLine(cx);

    item = dict->items;
    item_num = 1;

    while (item)
    {
        int old_do_color;

        // make separator
        strlcpy(separator, " ", sizeof (separator));
        switch (dict->bullet)
        {
        case list_bullet_none:
            break;
        case list_bullet_dot:
            strlcat(separator, va("%c", (cx->list_count%2) ? 143 : 15), sizeof (separator));
            break;
        case list_bullet_letter:
            strlcat(separator, va("%c", (item_num % ('z'-'a'+1)) + 'a'), sizeof (separator));
            break;
        case list_bullet_bigletter:
            strlcat(separator, va("%c", (item_num % ('Z'-'A'+1)) + 'A'), sizeof (separator));
            break;
        case list_bullet_number:
            strlcat(separator, va("%*d", num_width, item_num), sizeof (separator));
            break;
        }
        switch (dict->separator)
        {
        case list_separator_none:
            break;
        case list_separator_dot:
            strlcat(separator, ".", sizeof (separator));
            break;
        case list_separator_par:
            strlcat(separator, ")", sizeof (separator));
            break;
        }
        strlcat(separator, " ", sizeof (separator));

        memcpy(cx->line_buf + (cx->l_margin - indent), separator, strlen(separator));
        old_do_color = cx->do_color;
        cx->do_color = 1;
        RenderBlockChain(cx, item->name);
        cx->do_color = old_do_color;

        // render description
        cx->l_margin += 2;
        AddBlankLine(cx);
        RenderBlockChain(cx, item->description);
        cx->l_margin -= 2;
        AddBlankLine(cx);

        item_num++;
        item = (document_tag_di_t *) item->next;
    }

    cx->l_margin -= indent;
    AddBlankLine(cx);
    cx->list_count--;
}
コード例 #12
0
ファイル: document_rendering.c プロジェクト: jogi1/camquake
// render PRE tag
static void Render_Pre(document_rendering_context_t *cx, document_tag_pre_t *pre)
{
    int     l_width, width;
    char    *text, *s, *d;
    
    if (!pre->text)
        return;

    // duplicate text and calculate width
    width = l_width = 0;
    s = pre->text;
    d = text = (char *) Q_malloc(strlen(s)+1);
    while (*s)
    {
        char c = *s++;

        // skip LF and TAB
        if (c == '\r'  ||  c == '\t')
            continue;

        // copy character to output
        *d++ = c=='\n' ? '\n'+128 : c;

        // check line width
        if (c == '\n')
        {
            if (l_width > width)
                width = l_width;
            l_width = 0;
        }
        else
        {
            l_width++;
        }
    }
    *d = 0;

    // check if our render context width allow for such image
    if (width <= cx->width - cx->l_margin - cx->r_margin - 1)
    {
        // render inline

        document_align_t align;
        int offset;

        // remporarily disable alignment, because we use our own
        align = cx->align;
        cx->align = align_left;

        // calculate alignment offset
        switch (align)
        {
        default:
        case align_left:
            offset = 0;
            break;
        case align_right:
            offset = cx->width - cx->l_margin - cx->r_margin - width - 1;
            break;
        case align_center:
            offset = (cx->width - cx->l_margin - cx->r_margin - width - 1) / 2;
            break;
        }

        cx->l_margin += offset;
        AddBlankLine(cx);
        Render_String(cx, text);

        cx->l_margin -= offset;
        AddBlankLine(cx);

        cx->align = align;
    }
    else
    {
        // render as link

        char *t = Q_strdup("");

        t = Add_Inline_String(t, "\x90");
        t = Add_Inline_String(t, pre->alt ? pre->alt : "picture");
        t = Add_Inline_String(t, "\x91");

        Render_String(cx, t);

        Q_free(t);
    }

    Q_free(text);
}