reman3/Rayman_X/cpa/tempgrp/OAC/Src/EdActors/EDACBuM.cpp

200 lines
4.8 KiB
C++

// CPACMSBu.cpp : implementation file
/////////////////////////////////////////////////////////////////////////////
#include "StdAfx.h"
#include "EDACBuM.hpp"
#include "EDACMStr.hpp"
#include "EDACMStA.hpp"
#include "EDACActr.hpp"
#include "EDACInst.hpp"
#undef CPA_WANTS_IMPORT
#undef CPA_EXPORT
#define CPA_WANTS_EXPORT
#include "_Actors.hpp"
#undef CPA_WANTS_EXPORT
#define CPA_WANTS_IMPORT
//External Modules
#include "ErO.h"
//End of External Modules
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPA_Editor_MiniStructureButton
BEGIN_MESSAGE_MAP(CPA_Editor_MiniStructureButton, CButton)
//{{AFX_MSG_MAP(CPA_Editor_MiniStructureButton)
ON_CONTROL_REFLECT(BN_CLICKED, OnClicked)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
//***************************************************************************
CPA_Editor_MiniStructureButton::CPA_Editor_MiniStructureButton( EdActors_MiniStructure *pclMS,
CString csText,
tdeCarMSButtonType tdeType)
{
m_pclMS = pclMS;
m_csBaseText = csText;
m_tdeType = tdeType;
}
//***************************************************************************
CPA_Editor_MiniStructureButton::~CPA_Editor_MiniStructureButton()
{
}
/////////////////////////////////////////////////////////////////////////////
// CPA_Editor_MiniStructureButton message handlers
//***************************************************************************
void CPA_Editor_MiniStructureButton::OnClicked()
{
switch ( m_tdeType )
{
case ECAR_MS_BUTTON_TYPE_ALLOC :
m_pclMS->m_fn_vOnButtonAlloc();
break;
case ECAR_MS_BUTTON_TYPE_OPEN :
m_pclMS->m_fn_vOnButtonOpen();
break;
}
m_fn_vUpdateMSButton();
}
//***************************************************************************
void CPA_Editor_MiniStructureButton::m_fn_vUpdateMSButton()
{
switch ( m_tdeType )
{
case ECAR_MS_BUTTON_TYPE_ALLOC :
if ( m_pclMS->m_pclActorMS != NULL )
{
//Update buttons for Models
//--------------------------------------------
if ( !(m_pclMS->m_pclActorMS->m_pclParentActor->m_fn_bIsAnInstance()) )
{
EnableWindow(TRUE);
if ( m_pclMS->m_pclActorMS->m_fn_bIsAllocated() )
{
SetCheck(1);
if ( m_pclMS->m_fn_bCanBeUnallocated() )
{
SetWindowText("Unalloc");
}
else
{
EnableWindow(FALSE);
if ( m_pclMS->m_fn_tdeGetManiability() == MS_MANIABILITY_ALWAYS_ALLOCATED )
SetWindowText("Always");
}
}
else
{
SetCheck(0);
if ( m_pclMS->m_fn_bCanBeAllocated() )
{
SetWindowText("Alloc");
}
else
{
EnableWindow(FALSE);
SetWindowText("Once");
}
}
}
//Update buttons for Instances
//--------------------------------------------
else
{
// Check if model & instance have the same state
EdActors_EditorActorInstance *pInstance = (EdActors_EditorActorInstance *) m_pclMS->m_pclActorMS->m_pclParentActor;
EdActors_EditorActor *pModel = pInstance->m_fn_pclGetModel()->m_fn_pclGetEditorActor();
EdActors_ActorMiniStructure *pclModelMS = pModel->m_clListOfAMSLists.m_fn_pclGetAMSFromName(m_pclMS->m_pclActorMS->m_fn_csGetScriptName());
if (m_pclMS->m_pclActorMS->m_fn_bIsAllocated())
{
SetCheck(1);
if (m_pclMS->m_fn_bCanBeUnallocated())
{
if (m_pclMS->m_pclActorMS->m_fn_bIsAllocated() != pclModelMS->m_fn_bIsAllocated())
SetWindowText("Unalloc");
else
SetWindowText("All.d");
}
else
{
if ( m_pclMS->m_fn_tdeGetManiability() == MS_MANIABILITY_ALLOCATED_ONLY_ONCE )
SetWindowText("Once");
else if ( m_pclMS->m_fn_tdeGetManiability() == MS_MANIABILITY_ALWAYS_ALLOCATED )
SetWindowText("Always");
}
}
else
{
SetCheck(0);
if (m_pclMS->m_pclActorMS->m_fn_bIsAllocated() != pclModelMS->m_fn_bIsAllocated())
SetWindowText("Alloc");
else
SetWindowText("Unall.d");
ERROR_ASSERT( m_pclMS->m_fn_bCanBeUnallocated() );
}
if (m_pclMS->m_pclActorMS->m_fn_bIsAllocated() != pclModelMS->m_fn_bIsAllocated())
EnableWindow(TRUE);
else
EnableWindow(FALSE);
}
}
else
{
SetWindowText("");
SetCheck(0);
EnableWindow(FALSE);
}
break;
case ECAR_MS_BUTTON_TYPE_OPEN :
if ( m_pclMS->m_pclActorMS != NULL )
{
if ( m_pclMS->m_pclActorMS->m_fn_bIsAllocated() )
{
EnableWindow(TRUE);
if ( m_pclMS->m_pclActorMS->m_fn_bIsOpen() )
SetCheck(1);
else
SetCheck(0);
}
else
{
SetCheck(0);
EnableWindow(FALSE);
}
}
else
{
SetCheck(0);
EnableWindow(FALSE);
}
break;
}
}