// madnessEditorView.h : interfaccia della classe CmadnessEditorView // #pragma once #include "MadMap.h" #include "CCamera.h" #include "Selection.h" #include "Marbleenemy.h" class CmadnessEditorView : public CView { protected: CmadnessEditorView(); DECLARE_DYNCREATE(CmadnessEditorView) public: //======================== //restituisce il documento // associato alla vista //======================== CmadnessEditorDoc* GetDocument() const; //================= //DC della finestra //================= CClientDC *m_pDC; //================= //Contesto OpenGL //================= HGLRC m_hrc; //=========================== //valore di ritorno del primo // Pick nella multiselezione //=========================== int returnFirstPick; //=========================== //valore di ritorno // dell'ultimo Pick nella // multiselezione //=========================== int returnLastPick; //=======inittexture========= //true se le texture sono //state inizializzate, //false altrimenti //=========================== bool inittexture; //=========================== //opzione di disegno corrente // della vista: WIREFRAME o // SOLID o TEXTURED //=========================== int optionDraw; /**opzione di editing corrente della vista */ int optionEdit; /**opzione di editing precendentemente selezionata della vista */ int oldoptionEdit; /**ampiezza X della vista */ int ViewSizeX; /**altezza Y della vista */ int ViewSizeY; /**camera della vista OpenGL*/ CCamera camera; /**Ultima posizione catturata del mouse*/ CPoint now; /**penultima posizione catturata del mouse*/ CPoint old; /**true se è in modalità di selezione*/ bool b_Selection; /**true se è in modalità di Zoom Camera*/ bool b_CameraZoom; /**Area Selezionata nella vista*/ Selection Sel; /**coordinata X centrale nell'aria selezionata*/ float SelX; /**coordinata Z centrale nell'aria selezionata*/ float SelZ; /**distanza corrente dal punto di vista*/ double h; /**angolo corrente intorno all'asse Y del punto di vista*/ double k; /** angolo corrente intorno agli assi X/Z del punto di vista*/ double v; /** limite distanza dal punto di vista */ double hl; /** limite angolo intorno all'asse Y del punto di vista*/ double kl; /** limite angolo intorno agli assi X/Z del punto di vista*/ double vl; // Operazioni public: BOOL CmadnessEditorView::SetupPixelFormat( CDC * pDC ); void glInit(); inline BOOL SetGL() { if(!(m_pDC && m_hrc)) { TRACE("Failed SetGL\n"); return false; } if(!wglMakeCurrent(m_pDC->GetSafeHdc(), m_hrc)){ AfxMessageBox("GlMakeCurrent Error"); return FALSE; } return TRUE; } // Sostituzioni public: virtual void OnDraw(CDC* pDC); // sottoposto a overriding per creare questa vista virtual BOOL PreCreateWindow(CREATESTRUCT& cs); // Implementazione public: virtual ~CmadnessEditorView(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif protected: virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL); virtual afx_msg void OnDestroy(); virtual afx_msg BOOL OnEraseBkgnd(CDC* pDC); virtual afx_msg void OnSize(UINT nType, int cx, int cy); // Funzioni generate per la mappa dei messaggi protected: DECLARE_MESSAGE_MAP() public: //=============SetFirstPick=============== //setta il primo Pick della selezione //======================================= bool SetFirstPick(int x, int y); //=============SetLastPick=============== //setta l'ultimo Pick della selezione //======================================= bool SetLastPick(int x, int y); //=================CameraMove================ //muove la camera nella vista. <br> //due tipi movimento indicato in option <br> //x, y coordinate all'interno della View <br> //option: ROTATE o ZOOM <br> //============================================ int CameraMove(int x, int y, int option); //================TargetCamera=========================== //cambia il punto di vista della camera. <br> //inoltre corregge l'angolazione di vista nel caso in <br> //cui il punto di vista nn sia visibile <br> //mp: puntatore alla mappa. <br> //target_x: coordinata x del nuovo punto di vista <br> //target_y: coordinata z del nuovo punto di vista <br> //======================================================== void TargetCamera(MadMap *mp, float target_x, float target_z); /**metodi per l'interfaccia grafica MFC*/ virtual void OnInitialUpdate(); afx_msg void OnMouseMove(UINT nFlags, CPoint point); afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnLButtonUp(UINT nFlags, CPoint point); afx_msg void OnRButtonDown(UINT nFlags, CPoint point); afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); afx_msg void OnRButtonUp(UINT nFlags, CPoint point); afx_msg void OnVistaWireframe(); afx_msg void OnVistaSolid(); afx_msg void OnFunzioniFranare(); afx_msg void OnFunzioniLivellare(); afx_msg void OnFunzioniInclinare(); afx_msg void OnFunzioniSpianare(); afx_msg void OnFunzioniAlzare(); afx_msg void OnFunzioniPiramide(); afx_msg void OnFunzioniNemici(); afx_msg void OnFunzioniAreagoal(); afx_msg void OnFunzioniStart(); afx_msg void OnEditCopy(); afx_msg void OnEditPaste(); afx_msg void OnEditMerge(); afx_msg void OnEditUndo(); afx_msg void OnEditCut(); afx_msg void OnUpdateFunzioniFranare(CCmdUI *pCmdUI); afx_msg void OnUpdateFunzioniLivellare(CCmdUI *pCmdUI); afx_msg void OnUpdateFunzioniInclinare(CCmdUI *pCmdUI); afx_msg void OnUpdateFunzioniSpianare(CCmdUI *pCmdUI); afx_msg void OnUpdateFunzioniAreagoal(CCmdUI *pCmdUI); afx_msg void OnUpdateFunzioniStart(CCmdUI *pCmdUI); afx_msg void OnUpdateEditMerge(CCmdUI *pCmdUI); afx_msg void OnUpdateEditPaste(CCmdUI *pCmdUI); afx_msg void OnUpdateEditUndo(CCmdUI *pCmdUI); afx_msg void OnUpdateFunzioniNemici(CCmdUI *pCmdUI); afx_msg void OnUpdateVistaSolid(CCmdUI *pCmdUI); afx_msg void OnUpdateVistaWireframe(CCmdUI *pCmdUI); afx_msg void OnUpdateFunzioniPiramide(CCmdUI *pCmdUI); afx_msg void OnUpdateEditCut(CCmdUI *pCmdUI); afx_msg void OnUpdateFunzioniAlzare(CCmdUI *pCmdUI); }; #ifndef _DEBUG // versione di debug in madnessEditorView.cpp inline CmadnessEditorDoc* CmadnessEditorView::GetDocument() const { return reinterpret_cast<CmadnessEditorDoc*>(m_pDocument); } #endif