Пример #1
0
BOOL CNetworkServerDialog::OnInitDialog() 
{
	CString strIP;

	CHelpDialog::OnInitDialog();

	//help system
	m_strHelp = HELP_HOST;

	//tell the server about our list control
	VIEW->setListCtrl(&m_PlayerList);
	VIEW->setChatCtrl(&m_ChatEdit);
	VIEW->setInfoCtrl(&m_InfoEdit);
	VIEW->setServerDialog(this);

	//get the IP address
	strIP = APP->getIPAddress();

	//clear the send edit
	m_SendEdit.SetWindowText("");
	m_TCPStatic.SetWindowText(strIP);

	//create the listening port only if this is a fresh game
	VIEW->StartListening(m_uiPort);

	//create the ping timer
	VIEW->serverStartPing();

	//disable start until map is selected
	m_OKButton.EnableWindow(FALSE);

	//variants button disabled until map is selected
	m_VariantsButton.EnableWindow(FALSE);

	//disalbe connector window until they choose a map
	m_ConnectorButton.EnableWindow(FALSE);

	//enable/disable AI button
	m_AIButton.EnableWindow(APP->hasAI() && !m_bReload);

	//set the original info string
	if(TRUE == m_bReload)
	{
		startReload();
	}
	else
	{
		startNormal();
	}

	//load the accelerator resource
	m_hAccelTable = LoadAccelerators(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME));
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
Пример #2
0
void CircleShape::Draw(ref_ptr<dp::Batcher> batcher, ref_ptr<dp::TextureManager> textures) const
{
  int const TriangleCount = 20;
  double const etalonSector = (2.0 * math::pi) / static_cast<double>(TriangleCount);

  dp::TextureManager::ColorRegion region;
  textures->GetColorRegion(m_params.m_color, region);
  glsl::vec2 colorPoint(glsl::ToVec2(region.GetTexRect().Center()));

  buffer_vector<gpu::SolidTexturingVertex, 22> vertexes;
  vertexes.push_back(gpu::SolidTexturingVertex
  {
    glsl::vec4(glsl::ToVec2(m_pt), m_params.m_depth, 0.0f),
    glsl::vec2(0.0f, 0.0f),
    colorPoint
  });

  m2::PointD startNormal(0.0f, m_params.m_radius);

  for (size_t i = 0; i < TriangleCount + 1; ++i)
  {
    m2::PointD rotatedNormal = m2::Rotate(startNormal, (i) * etalonSector);
    vertexes.push_back(gpu::SolidTexturingVertex
    {
      glsl::vec4(glsl::ToVec2(m_pt), m_params.m_depth, 0.0f),
      glsl::ToVec2(rotatedNormal),
      colorPoint
    });
  }

  dp::GLState state(gpu::TEXTURING_PROGRAM, dp::GLState::OverlayLayer);
  state.SetColorTexture(region.GetTexture());

  double handleSize = 2 * m_params.m_radius;

  drape_ptr<dp::OverlayHandle> overlay = make_unique_dp<dp::SquareHandle>(m_params.m_id,
                                                                          dp::Center, m_pt,
                                                                          m2::PointD(handleSize, handleSize),
                                                                          GetOverlayPriority(), "");

  dp::AttributeProvider provider(1, TriangleCount + 2);
  provider.InitStream(0, gpu::SolidTexturingVertex::GetBindingInfo(), make_ref(vertexes.data()));
  batcher->InsertTriangleFan(state, make_ref(&provider), move(overlay));
}
Пример #3
0
void MyPosition::CacheAccuracySector(ref_ptr<dp::TextureManager> mng)
{
  int const TriangleCount = 40;
  int const VertexCount = 3 * TriangleCount;
  float const etalonSector = math::twicePi / static_cast<double>(TriangleCount);

  dp::TextureManager::ColorRegion color;
  mng->GetColorRegion(df::GetColorConstant(GetStyleReader().GetCurrentStyle(), df::MyPositionAccuracy), color);
  glsl::vec2 colorCoord = glsl::ToVec2(color.GetTexRect().Center());

  buffer_vector<Vertex, TriangleCount> buffer;
  glsl::vec2 startNormal(0.0f, 1.0f);

  for (size_t i = 0; i < TriangleCount + 1; ++i)
  {
    glsl::vec2 normal = glsl::rotate(startNormal, i * etalonSector);
    glsl::vec2 nextNormal = glsl::rotate(startNormal, (i + 1) * etalonSector);

    buffer.emplace_back(startNormal, colorCoord);
    buffer.emplace_back(normal, colorCoord);
    buffer.emplace_back(nextNormal, colorCoord);
  }

  dp::GLState state(gpu::ACCURACY_PROGRAM, dp::GLState::OverlayLayer);
  state.SetColorTexture(color.GetTexture());

  {
    dp::Batcher batcher(TriangleCount * dp::Batcher::IndexPerTriangle, VertexCount);
    dp::SessionGuard guard(batcher, [this](dp::GLState const & state, drape_ptr<dp::RenderBucket> && b)
    {
      drape_ptr<dp::RenderBucket> bucket = move(b);
      ASSERT(bucket->GetOverlayHandlesCount() == 0, ());

      m_nodes.emplace_back(state, bucket->MoveBuffer());
      m_parts[MY_POSITION_ACCURACY].second = m_nodes.size() - 1;
    });

    dp::AttributeProvider provider(1 /*stream count*/, VertexCount);
    provider.InitStream(0 /*stream index*/, GetBindingInfo(), make_ref(buffer.data()));

    m_parts[MY_POSITION_ACCURACY].first = batcher.InsertTriangleList(state, make_ref(&provider), nullptr);
    ASSERT(m_parts[MY_POSITION_ACCURACY].first.IsValid(), ());
  }
Пример #4
0
uint32_t BuildCorner(vector<Button::ButtonVertex> & vertices,
                     glsl::vec2 const & pt, double radius,
                     double angleStart, double angleFinish)
{
  int const kTrianglesCount = 8;
  double const sector = (angleFinish - angleStart) / kTrianglesCount;
  m2::PointD startNormal(0.0f, radius);

  for (size_t i = 0; i < kTrianglesCount; ++i)
  {
    m2::PointD normal = m2::Rotate(startNormal, angleStart + i * sector);
    m2::PointD nextNormal = m2::Rotate(startNormal, angleStart + (i + 1) * sector);

    vertices.push_back(Button::ButtonVertex(pt));
    vertices.push_back(Button::ButtonVertex(pt - glsl::ToVec2(normal)));
    vertices.push_back(Button::ButtonVertex(pt - glsl::ToVec2(nextNormal)));
  }

  return kTrianglesCount * dp::Batcher::IndexPerTriangle;
}