📄 skydialog.cpp
字号:
}
void CSkyDialog::OnSkybottom()
{
if (m_SkyBottom.GetCheck() == 0)
{
ResetSkySurface(m_SkyBottomCombo, SkyFace_Bottom);
}
UpdateSkyFaceUI (m_SkyBottom, m_SkyBottomCombo, SkyFace_Bottom);
}
void CSkyDialog::OnSkyfront()
{
if (m_SkyFront.GetCheck() == 0)
{
ResetSkySurface(m_SkyFrontCombo, SkyFace_Front);
}
UpdateSkyFaceUI (m_SkyFront, m_SkyFrontCombo, SkyFace_Front);
}
void CSkyDialog::OnSkyleft()
{
if (m_SkyLeft.GetCheck() == 0)
{
ResetSkySurface(m_SkyLeftCombo, SkyFace_Left);
}
UpdateSkyFaceUI (m_SkyLeft, m_SkyLeftCombo, SkyFace_Left);
}
void CSkyDialog::OnSkyright()
{
if (m_SkyRight.GetCheck() == 0)
{
ResetSkySurface(m_SkyRightCombo, SkyFace_Right);
}
UpdateSkyFaceUI (m_SkyRight, m_SkyRightCombo, SkyFace_Right);
}
void CSkyDialog::OnSkytop()
{
if (m_SkyTop.GetCheck() == 0)
{
ResetSkySurface(m_SkyTopCombo, SkyFace_Top);
}
UpdateSkyFaceUI (m_SkyTop, m_SkyTopCombo, SkyFace_Top);
}
void CSkyDialog::UpdateFaceTextureName (CComboBox &FaceCombo, int FaceIndex, bool bGotOne)
{
int Index;
assert (FaceIndex >= 0);
assert (FaceIndex < 6);
char *pFaceName = NULL;
if (bGotOne == false)
{
SkyFaceTexture *SkyFaces;
char *pFaceName;
pFaceName = Util_Strdup ("");
geVec3d Axis;
geFloat Speed, Scale;
SkyFaces = Level_GetSkyInfo (m_pGenEditDoc->pLevel, &Axis, &Speed, &Scale);
SkyFaces[FaceIndex].TextureName = pFaceName;
return;
}
Index = FaceCombo.GetCurSel ();
if (Index != CB_ERR)
{
CString FaceString, AllSameString;
FaceCombo.GetLBText (Index, FaceString);
if (m_pGenEditDoc != NULL)
{
SkyFaceTexture *SkyFaces;
geVec3d Axis;
geFloat Speed, Scale;
SkyFaces = Level_GetSkyInfo (m_pGenEditDoc->pLevel, &Axis, &Speed, &Scale);
pFaceName = SkyFaces[FaceIndex].TextureName;
if (pFaceName != NULL)
{
geRam_Free (pFaceName);
pFaceName = NULL;
}
pFaceName = Util_Strdup (FaceString);
SkyFaces[FaceIndex].TextureName = pFaceName;
CString testString = (CString)pFaceName;
FaceCombo.GetLBText (Index, FaceString);
if (testString != FaceString)
AfxMessageBox("Unable to correctly process sky texture");
// test to see if this face is different from AllTheSame
if (m_SkyAlltheSameCombo.GetCurSel() != -1) // is it not blank?
{ // get a string for the current selection
m_SkyAlltheSameCombo.GetLBText(m_SkyAlltheSameCombo.GetCurSel(), AllSameString);
// if this string don't match with the AllTheSame?
if (FaceString != AllSameString)
{ // blank the AllTheSame combo
m_SkyAlltheSameCombo.SetCurSel(-1);
}
}
}
}
return;
}
void CSkyDialog::OnSelchangeCbskyleft()
{
UpdateFaceTextureName (m_SkyLeftCombo, SkyFace_Left, true);
}
void CSkyDialog::OnSelchangeCbskyright()
{
UpdateFaceTextureName (m_SkyRightCombo, SkyFace_Right, true);
}
void CSkyDialog::OnSelchangeCbskytop()
{
UpdateFaceTextureName (m_SkyTopCombo, SkyFace_Top, true);
}
void CSkyDialog::OnSelchangeCbskybottom()
{
UpdateFaceTextureName (m_SkyBottomCombo, SkyFace_Bottom, true);
}
void CSkyDialog::OnSelchangeCbskyfront()
{
UpdateFaceTextureName (m_SkyFrontCombo, SkyFace_Front, true);
}
void CSkyDialog::OnSelchangeCbskyback()
{
UpdateFaceTextureName (m_SkyBackCombo, SkyFace_Back, true);
}
void CSkyDialog::OnSelchangeCBallsame()
{
int currSel = m_SkyAlltheSameCombo.GetCurSel();
m_SkyLeftCombo.SetCurSel(currSel);
m_SkyRightCombo.SetCurSel(currSel);
m_SkyTopCombo.SetCurSel(currSel);
m_SkyBottomCombo.SetCurSel(currSel);
m_SkyFrontCombo.SetCurSel(currSel);
m_SkyBackCombo.SetCurSel(currSel);
UpdateFaceTextureName (m_SkyLeftCombo, SkyFace_Left, true);
UpdateFaceTextureName (m_SkyRightCombo, SkyFace_Right, true);
UpdateFaceTextureName (m_SkyTopCombo, SkyFace_Top, true);
UpdateFaceTextureName (m_SkyBottomCombo, SkyFace_Bottom, true);
UpdateFaceTextureName (m_SkyFrontCombo, SkyFace_Front, true);
UpdateFaceTextureName (m_SkyBackCombo, SkyFace_Back, true);
m_SkyLeftCombo.EnableWindow();
m_SkyRightCombo.EnableWindow();
m_SkyTopCombo.EnableWindow();
m_SkyBottomCombo.EnableWindow();
m_SkyFrontCombo.EnableWindow();
m_SkyBackCombo.EnableWindow();
m_SkyLeft.SetCheck(1);
m_SkyRight.SetCheck(1);
m_SkyTop.SetCheck(1);
m_SkyBottom.SetCheck(1);
m_SkyFront.SetCheck(1);
m_SkyBack.SetCheck(1);
OnSkyleft();
OnSkyright();
OnSkytop();
OnSkybottom();
OnSkyfront();
OnSkyback();
UpdateData(TRUE);
}
void CSkyDialog::OnClearAllBtn()
{
m_SkyLeftCombo.SetCurSel(-1);
m_SkyRightCombo.SetCurSel(-1);
m_SkyTopCombo.SetCurSel(-1);
m_SkyBottomCombo.SetCurSel(-1);
m_SkyFrontCombo.SetCurSel(-1);
m_SkyBackCombo.SetCurSel(-1);
m_SkyAlltheSameCombo.SetCurSel(-1);
UpdateFaceTextureName (m_SkyLeftCombo, SkyFace_Left, false);
UpdateFaceTextureName (m_SkyRightCombo, SkyFace_Right, false);
UpdateFaceTextureName (m_SkyTopCombo, SkyFace_Top, false);
UpdateFaceTextureName (m_SkyBottomCombo, SkyFace_Bottom, false);
UpdateFaceTextureName (m_SkyFrontCombo, SkyFace_Front, false);
UpdateFaceTextureName (m_SkyBackCombo, SkyFace_Back, false);
m_SkyLeftCombo.EnableWindow(FALSE);
m_SkyRightCombo.EnableWindow(FALSE);
m_SkyTopCombo.EnableWindow(FALSE);
m_SkyBottomCombo.EnableWindow(FALSE);
m_SkyFrontCombo.EnableWindow(FALSE);
m_SkyBackCombo.EnableWindow(FALSE);
m_SkyLeft.SetCheck(0);
m_SkyRight.SetCheck(0);
m_SkyTop.SetCheck(0);
m_SkyBottom.SetCheck(0);
m_SkyFront.SetCheck(0);
m_SkyBack.SetCheck(0);
OnSkyleft();
OnSkyright();
OnSkytop();
OnSkybottom();
OnSkyfront();
OnSkyback();
UpdateData(TRUE);
}
static const geVec3d AxisVectors[3] =
{
{1.0f, 0.0f, 0.0f},
{0.0f, 1.0f, 0.0f},
{0.0f, 0.0f, 1.0f}
};
void CSkyDialog::OnAxisButton()
{
UpdateData (TRUE);
Level_SetSkyRotationAxis (m_pGenEditDoc->pLevel, &AxisVectors[m_RotationAxis]);
}
void CSkyDialog::OnKillfocusEditspeed()
{
UpdateData (TRUE);
Level_SetSkyRotationSpeed (m_pGenEditDoc->pLevel, m_RotationSpeed);
}
void CSkyDialog::OnKillfocusEditscale()
{
UpdateData (TRUE);
Level_SetSkyTextureScale(m_pGenEditDoc->pLevel, m_RotationSpeed);
}
void CSkyDialog::OnOK()
{
UpdateData(TRUE);
// post 0.5 release
// set command panel to the templates tab
if (m_pGenEditDoc->mpMainFrame->m_CommandDialogBar)
{
CTabCtrl* pCommandPanelTabCtrl =
(CTabCtrl*)m_pGenEditDoc->mpMainFrame->m_CommandDialogBar.GetDlgItem(IDC_COMMAND_TAB);
pCommandPanelTabCtrl->SetCurSel((MAINFRM_COMMANDPANEL_TAB)MAINFRM_COMMANDPANEL_TEMPLATES);
m_pGenEditDoc->mpMainFrame->SetCommandPanelTab(MAINFRM_COMMANDPANEL_TEMPLATES);
}
this->DestroyWindow(); // post 0.5 release
// CDialog::OnOK(); //for modal dialog
}
// post 0.5 release
void CSkyDialog::OnClose()
{
OnOK();
CDialog::OnClose();
}
// post 0.5 release
void CSkyDialog::OnMouseMove(UINT nFlags, CPoint point)
{
if (GetFocus() != this)
SetFocus();
CDialog::OnMouseMove(nFlags, point);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -