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 }
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)); }
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(), ()); }
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; }