/*------------------------------------------------------------------------- * 描画 名前 * ---------------------------------------------------------------------------*/ private void draw_name_proc(Vector2 offset, LoopXImage image) { List <ShareShipListBB> list = ShareListBB; D3dBB2d.CullingRect crect = new D3dBB2d.CullingRect(image.Device.client_size); d3d_textured_font font = m_lib.device.textured_font; foreach (ShareShipListBB bb in list) { // バウンディングボックスで画面外かどうか調べる if (bb.IsCulling(offset, image.ImageScale, crect)) { continue; } foreach (ShareRoutes.ShareShip s in bb.List) { if (s.Position.X < 0) { continue; } if (s.Position.Y < 0) { continue; } // 地図座標に変換 Vector2 pos0 = transform.game_pos2_map_pos(new Vector2(s.Position.X, s.Position.Y), image); Vector2 pos = image.GlobalPos2LocalPos(pos0, offset); // 名前 Rectangle rect = font.MeasureText(s.Name, Color.Black); rect.Width += 4; rect.Height += 4; int halh_x = rect.Width / 2; Vector3 p = new Vector3(pos.X - halh_x - 2, pos.Y - 3, 0.31f); Vector2 size = new Vector2(rect.Width, rect.Height); m_lib.device.DrawFillRect(p, size, Color.FromArgb(128, 255, 255, 255).ToArgb()); m_lib.device.DrawLineRect(p, size, Color.Gray.ToArgb()); font.DrawTextC(s.Name, new Vector3(pos.X, pos.Y + 1, 0.31f), Color.Black); } } }
/*------------------------------------------------------------------------- * 그리기 * ---------------------------------------------------------------------------*/ private void draw_proc(Vector2 offset, LoopXImage image) { float size = image.ImageScale; if (size < 0.5) { size = 0.5f; } else if (size > 1) { size = 1; } Vector2 scale = new Vector2(size, size); D3dBB2d.CullingRect rect = new D3dBB2d.CullingRect(image.Device.client_size); m_lib.device.sprites.BeginDrawSprites(m_lib.icons.texture, offset, image.ImageScale, scale); foreach (DataListBB i in m_draw_list) { // 바운딩 박스で화면외かどうか조사 if (i.IsCulling(offset, image.ImageScale, rect)) { continue; } #if DRAW_POPUPS_BOUNDINGBOX d3d_bb2d.Draw(i.bb, image.device, 0.5f, offset, image.scale, Color.Blue.ToArgb()); #endif foreach (Data p in i.List) { int index = p.IconIndex; if (index < 0) { index = 0; } if (index > (int)icon_index.memo_4) { index = (int)icon_index.memo_4; } Vector3 pos = new Vector3(p.Position.X, p.Position.Y, 0.8f); m_lib.device.sprites.AddDrawSpritesNC(pos, m_lib.icons.GetIcon(icons.icon_index.web_icon_0 + index)); } } m_lib.device.sprites.EndDrawSprites(); }
/*------------------------------------------------------------------------- * 描画 * ---------------------------------------------------------------------------*/ private void draw_proc(Vector2 offset, LoopXImage image) { List <ShareShipListBB> list = ShareListBB; D3dBB2d.CullingRect rect = new D3dBB2d.CullingRect(image.Device.client_size); foreach (ShareShipListBB bb in list) { // バウンディングボックスで画面外かどうか調べる if (bb.IsCulling(offset, image.ImageScale, rect)) { continue; } #if DRAW_POPUPS_BOUNDINGBOX d3d_bb2d.Draw(bb.bb, image.device, 0.5f, offset, image.scale, Color.Red.ToArgb()); #endif foreach (ShareRoutes.ShareShip s in bb.List) { if (s.Position.X < 0) { continue; } if (s.Position.Y < 0) { continue; } // 地図座標に変換 Vector2 pos0 = transform.game_pos2_map_pos(transform.ToVector2(s.Position), image); Vector2 pos = image.GlobalPos2LocalPos(pos0, offset); // 船 icons.icon_index index = (s.State == State.in_the_sea)? icons.icon_index.myship: icons.icon_index.share_city; m_lib.device.sprites.AddDrawSprites(new Vector3(pos.X, pos.Y, 0.31f), m_lib.icons.GetIcon(index)); } } }