You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
158 lines
5.8 KiB
158 lines
5.8 KiB
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose: Holds XP source data
|
|
//
|
|
// $NoKeywords: $
|
|
//=============================================================================//
|
|
|
|
#ifndef TF_SURVEY_QUESTIONS_H
|
|
#define TF_SURVEY_QUESTIONS_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#include "tf_gcmessages.h"
|
|
#ifdef CLIENT_DLL
|
|
#include "vgui_controls/EditablePanel.h"
|
|
#endif
|
|
|
|
#ifdef GC
|
|
#include "tf_gc.h"
|
|
#endif
|
|
|
|
#ifdef CLIENT_DLL
|
|
using namespace vgui;
|
|
#endif
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: The definition of a survey question.
|
|
//
|
|
// m_eType : The type of the survey question
|
|
// m_pszSurveyQuestionName: Name of the survey type. Mostly for debugging
|
|
// m_flWeight: The weight used when randomly choosing which survey question
|
|
// to ask a user
|
|
// m_pFnSurveyValidForPlayer: Survey specific function to determine if player
|
|
// meets criteria to receive survey
|
|
// m_bIsActive: Is the survey currently active (asked of players)
|
|
//-----------------------------------------------------------------------------
|
|
struct SurveyQuestion_t
|
|
{
|
|
SurveyQuestionType m_eType;
|
|
const char* m_pszSurveyQuestionName;
|
|
float m_flWeight;
|
|
bool ( *m_pFnSurveyValidForPlayer ) ( const CMsgGC_Match_Result& msgMatchResult , uint32 nPlayerIndex );
|
|
bool m_bIsActive;
|
|
};
|
|
|
|
#define UNASWERED_SURVEY_QUESTION ( (int16) -1 )
|
|
#define SEEN_BUT_UNANSWERED_SURVEY_QUESTION ( (int16) -2 )
|
|
#define SEEN_AND_DISMISSED_SURVEY_QUESTION ( (int16) -3 )
|
|
extern const SurveyQuestion_t g_SurveyQuestions[ SurveyQuestionType_ARRAYSIZE ];
|
|
|
|
#ifdef CLIENT_DLL
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Use CreateSurveyQuestionPanel to create the panel you want
|
|
//-----------------------------------------------------------------------------
|
|
class CSurveyQuestionPanel* CreateSurveyQuestionPanel( Panel* pParent, const CMsgGCSurveyRequest& msgSurveyQuestion );
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Base, abstract survey panel to handle common functionality
|
|
//-----------------------------------------------------------------------------
|
|
class CSurveyQuestionPanel : public EditablePanel, public CGameEventListener
|
|
{
|
|
public:
|
|
DECLARE_CLASS_SIMPLE( CSurveyQuestionPanel, EditablePanel );
|
|
CSurveyQuestionPanel( Panel* pParent, CMsgGCSurveyRequest msgSurveyQuestion );
|
|
~CSurveyQuestionPanel();
|
|
|
|
virtual void OnCommand( const char *command ) OVERRIDE;
|
|
virtual void FireGameEvent( IGameEvent *event ) OVERRIDE;
|
|
virtual void ApplySchemeSettings( IScheme *pScheme ) OVERRIDE;
|
|
|
|
private:
|
|
virtual void Submit() = 0;
|
|
virtual const char* GetResFile() const = 0;
|
|
|
|
bool m_bResponded;
|
|
CMsgGCSurveyRequest m_msgRequest;
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Base class for multiple choice surveys
|
|
//-----------------------------------------------------------------------------
|
|
class CMultipleChoiceSurveyQuestionPanel : public CSurveyQuestionPanel
|
|
{
|
|
public:
|
|
DECLARE_CLASS_SIMPLE( CMultipleChoiceSurveyQuestionPanel, CSurveyQuestionPanel );
|
|
CMultipleChoiceSurveyQuestionPanel( Panel* pParent, CMsgGCSurveyRequest msgSurveyQuestion, uint16 nSurveyResponses );
|
|
|
|
private:
|
|
|
|
virtual void Think() OVERRIDE;
|
|
virtual void Submit() OVERRIDE;
|
|
|
|
uint16 m_nSurveyResponses;
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Match quality survey. Users can rate the quality of their match
|
|
// with a score of 0 - 4. Score is marked through radio buttons.
|
|
//-----------------------------------------------------------------------------
|
|
class CMatchQualitySurvey : public CMultipleChoiceSurveyQuestionPanel
|
|
{
|
|
public:
|
|
CMatchQualitySurvey( Panel* pParent, CMsgGCSurveyRequest msgSurveyQuestion ) : CMultipleChoiceSurveyQuestionPanel( pParent, msgSurveyQuestion, 5 ) {}
|
|
virtual const char* GetResFile() const OVERRIDE
|
|
{
|
|
return "resource/ui/SurveyPanel_MatchQuality.res";
|
|
}
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Map quality survey. Users can rate the quality of the map played
|
|
// with a score of 0 - 4. Score is marked through radio buttons.
|
|
//-----------------------------------------------------------------------------
|
|
class CMapQualitySurvey : public CMultipleChoiceSurveyQuestionPanel
|
|
{
|
|
public:
|
|
CMapQualitySurvey( Panel* pParent, CMsgGCSurveyRequest msgSurveyQuestion ) : CMultipleChoiceSurveyQuestionPanel( pParent, msgSurveyQuestion, 5 ) {}
|
|
|
|
virtual const char* GetResFile() const OVERRIDE
|
|
{
|
|
return "resource/ui/SurveyPanel_MapQuality.res";
|
|
}
|
|
|
|
virtual void PerformLayout() OVERRIDE;
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Survey casual mode players to see why they're not playing competitive
|
|
//-----------------------------------------------------------------------------
|
|
class CCompInquirySurvey : public CMultipleChoiceSurveyQuestionPanel
|
|
{
|
|
public:
|
|
CCompInquirySurvey( Panel* pParent, CMsgGCSurveyRequest msgSurveyQuestion ) : CMultipleChoiceSurveyQuestionPanel( pParent, msgSurveyQuestion, 6 ) {}
|
|
|
|
virtual const char* GetResFile() const OVERRIDE
|
|
{
|
|
return "resource/ui/SurveyPanel_CompInquiry.res";
|
|
}
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Survey competitive mode players to see why they're not playing casual
|
|
//-----------------------------------------------------------------------------
|
|
class CCasualInquirySurvey : public CMultipleChoiceSurveyQuestionPanel
|
|
{
|
|
public:
|
|
CCasualInquirySurvey( Panel* pParent, CMsgGCSurveyRequest msgSurveyQuestion ) : CMultipleChoiceSurveyQuestionPanel( pParent, msgSurveyQuestion, 6 ) {}
|
|
|
|
virtual const char* GetResFile() const OVERRIDE
|
|
{
|
|
return "resource/ui/SurveyPanel_CasualInquiry.res";
|
|
}
|
|
};
|
|
|
|
#endif
|
|
|
|
#endif // TF_SURVEY_QUESTIONS_H
|