Пример #1
0
	void CreateTreeTool::doPress(int x, int y, int flags, float pressure) {
		Vector3 from;

		if (!m_view->traceWorld(x, y, from, SelectPart::All)) {
			return;
		}

		m_actor = new SpeedTree();
		m_view->getContext()->setSelection(m_actor);

		m_actor->setProperty("tree", m_mapContext->getMapState()->treeFilename);

		if (m_mapContext->getMapState()->isSnapToGrid) {
			from = Internal::snap(from, m_mapContext->getMapState()->snapToGrid);
		}

		m_actor->bindToGame();

		GroupHis* grouphis = new GroupHis(m_context, "Create SpeedTree");

		ActorList actorlist;
		actorlist.push_back(m_actor);
		UndeleteHis* undelhis = new UndeleteHis(m_context, "Create SpeedTree", actorlist);

		History* selhis = m_view->getContext()->setSelectionHistoried(actorlist);

		grouphis->append(undelhis);
		grouphis->append(selhis);

		m_context->addHistory(grouphis);

		doDrag(x, y, flags, pressure);
	}
Пример #2
0
	void TerrainRaiseTool::doPress(int x, int y, int flags, float pressure) {
		if (!m_isValid)
			return;

		m_brushRadius = m_mapContext->getMapState()->terrainBrushSize;
		m_brushSoftness = m_mapContext->getMapState()->terrainBrushSoftness;
		m_brushStrength = m_mapContext->getMapState()->terrainBrushStrength;

		m_editedRect.clear();

		if (flags & Input::Event::ControlModifier)
			m_brushStrength = -m_brushStrength;

		doDrag(x, y, flags, pressure);
	}
Пример #3
0
	void TerrainPaintTool::doPress(int x, int y, int flags, float pressure) {
		if (!m_isValid)
			return;

		m_brushRadius = m_mapContext->getMapState()->terrainBrushSize;
		m_brushSoftness = m_mapContext->getMapState()->terrainBrushSoftness;
		m_brushStrength = m_mapContext->getMapState()->terrainBrushStrength;
		m_layerGen = m_terrain->getLayerGenById(m_mapContext->getMapState()->terrainCurLayerId);

		m_editedRect.clear();

		if (flags & Input::Event::ControlModifier)
			m_brushStrength = -m_brushStrength;

		SafeDelete(m_oldPixel);

		doDrag(x, y, flags, pressure);
	}
Пример #4
0
bool CWindowMan::work(HWND hWnd, CKeyMan &keyMan)
{
	bool bPressWindow = false;

	getMousePos(hWnd, m_iClientX, m_iClientY);

	if(m_bInDrag) {
		doDrag(hWnd, keyMan);
	}
   else {
		//不是拖曳動作

		if(keyMan.isPress(KEY_LBUTTON)) {
			//壓下去的瞬間

			std::list<CWindow *>::iterator it = m_pWindowList->begin();
			while(it != m_pWindowList->end ()) {
				if((*it)->checkPoint(m_iClientX, m_iClientY)) {
					int tx = m_iClientX;
					int ty = m_iClientY;

					if((*it)->canDrag(tx - (*it)->x, ty - (*it)->y)) {
						//可以拖曳
						m_bInDrag = true;
					}
               else {
						//不可以拖曳
						(*it)->onLClick(tx, ty);
					}

					//有按到
					bPressWindow = true;

					m_iDragX = m_iClientX;
					m_iDragY = m_iClientY;

					m_pWindowList->push_front(*it);
					m_pWindowList->erase(it);
					m_pDragWnd = m_pWindowList->front();
					break ;
				}

				it++;
			}
		}
      else if(keyMan.isPress(KEY_RBUTTON)) {
         //壓下去的瞬間
			std::list<CWindow *>::iterator it = m_pWindowList->begin();
         while(it != m_pWindowList->end()) {
            if((*it)->checkPoint(m_iClientX, m_iClientY)) {
					int tx = m_iClientX;
					int ty = m_iClientY;

               m_bInDrag = false;
               (*it)->onRClick(tx, ty);

               //有按到
					bPressWindow = true;

               break;
            }

            it++;
         }
		}
      else if(keyMan.isPress(KEY_P)) {
         bool bPlayerInfoWndVisible = false;
         std::list<CWindow *>::iterator it = m_pWindowList->begin();
         while(it != m_pWindowList->end()) {
            if((*it)->getClassType() == WND_PLAYERINFO) {
               (*it)->show(!(*it)->isVisible());
               bPlayerInfoWndVisible = (*it)->isVisible();
               break;
            }
            it++;
         }

         it = m_pWindowList->begin();
         while(it != m_pWindowList->end()) {
            if((*it)->getClassType() == WND_BACKPACK) {
               (*it)->show(bPlayerInfoWndVisible);
               break;
            }
            it++;
         }
      }
      else if(keyMan.isPress(KEY_B)) {
         std::list<CWindow *>::iterator it = m_pWindowList->begin();
         while(it != m_pWindowList->end()) {
            if((*it)->getClassType() == WND_BACKPACK) {
               (*it)->show(!(*it)->isVisible());
               break;
            }
            it++;
         }
      }
      else if(keyMan.isPress(KEY_K)) {
         std::list<CWindow *>::iterator it = m_pWindowList->begin();
         while(it != m_pWindowList->end()) {
            if((*it)->getClassType() == WND_SKILL) {
               (*it)->show(!(*it)->isVisible());
               break;
            }
            it++;
         }
      }
	}

	return bPressWindow ;
}