Esempio n. 1
0
// 핫 스팟을 클릭할 때 불리는 함수
// LPVOID 값이 0 이면 종료 (X자를 클릭) 요청
void DStartUp::OnClick( LPVOID pVoid )
{
	if ( m_nMode == 0 ) {	// 초기 메뉴

		// 이 다이얼로그가 pVoid==0 으로 닫히면
		// 초기메뉴일 경우 게임 종료임
		if ( !pVoid )
			Mw()->PostMessage( WM_CLOSE );

		switch ( (int)pVoid ) {

		case 0: DSB::OnClick(0); break;

		case 0xffffffff:
		case 1: {
			VERIFY( CreateOnePlayerGame() );
			break;
		}
		case 2:
			(new DStartUp(m_pBoard))->Create( 1 );
			DSB::OnClick(0); break;
			break;
		case 3:
			(new DAbout(m_pBoard))->Create();
			break;
		}
	}
	else {	// 멀티플레이어 메뉴

		// 이 다이얼로그가 pVoid==0 으로 닫히면
		// 초기 메뉴를 호출
		if ( !pVoid )
			(new DStartUp(m_pBoard))->Create( 0 );

		switch ( (int)pVoid ) {

		case 0: DSB::OnClick(0); break;

		case 0xffffffff:
		case 1:		// 서버가 됨
			Ib()->ShowChat();	// 채팅창 표시
			(new DConnect(m_pBoard))->Create( 0, Mo()->rule.nPlayerNum, false );
			DSB::OnClick(0);
			break;
		case 2:		// 다른 곳으로 접속
			Ib()->ShowChat();	// 채팅창 표시
			(new DConnecting(m_pBoard))->Create();
			DSB::OnClick(0);
			break;
		case 3:		// Mighty.Net
			break;
		}
	}
}
Esempio n. 2
0
// nMode  0 : 초기 메뉴  1 : 멀티플레이어 메뉴
void DStartUp::Create( int nMode )
{
	m_nMode = nMode;

	if ( m_nMode == 0 )	// 초기 메뉴
		DSB::Create( 0, 0, 20, 20, -1 );
	else
		DSB::Create( 0, 0, 18, 17, -1 );

	// 이 DSB 가 생성되는 상태는, 게임이 없는 초기 상태이므로
	// 상태바를 리셋한다
	Ib()->ShowChat( false );
	Ib()->Reset();
}
Esempio n. 3
0
// 핫 스팟이 Highlight 되거나 Normal 로 될 때 호출되는 함수
// bHighlight 가 참이면 highlight 되었음
void DStartUp::OnHighlight( HOTSPOT& hs, bool bHighlight )
{
	if ( !bHighlight ) Ib()->Reset();
	else if ( m_nMode == 0 ) {

		switch ((int)hs.pVoid) {
		case 0: Ib()->SetText( _T("마이티 게임을 종료합니다") ); break;
		case 1: Ib()->SetText( _T("혼자서 컴퓨터와 마이티 게임을 합니다") ); break;
		case 2: Ib()->SetText( _T("네트워크를 통해서 다른 사용자와 마이티 게임을 합니다") ); break;
		case 3: Ib()->SetText( _T("마이티 정보를 보여줍니다") ); break;
		}
	}
	else {

		switch ((int)hs.pVoid) {
		case 0: Ib()->SetText( _T("이전 메뉴로 돌아갑니다") ); break;
		case 1: Ib()->SetText( _T("딜러가 되어 다른 사용자의 접속을 기다립니다") ); break;
		case 2: Ib()->SetText( _T("다른 딜러에게 접속합니다") ); break;
		case 3: Ib()->SetText( _T("Mighty.Net 에 접속합니다") ); break;
		}
	}
}
Esempio n. 4
0
int main( int argc, char **argv )
{
  MyMesh boxMesh,torusMesh;
  vcg::Matrix33f IT;
  vcg::Point3f ITv;

  vcg::tri::Hexahedron(boxMesh);
  vcg::Matrix44f ScaleM,TransM;
  ScaleM.SetScale(1.0f, 2.0f, 5.0f);
  TransM.SetTranslate(2.0f,3.0f,4.0f);
  vcg::tri::UpdatePosition<MyMesh>::Matrix(boxMesh,ScaleM);
  vcg::tri::UpdatePosition<MyMesh>::Matrix(boxMesh,TransM);
  vcg::tri::Inertia<MyMesh> Ib(boxMesh);
  vcg::Point3f cc = Ib.CenterOfMass();
  Ib.InertiaTensorEigen(IT,ITv);

  printf("Box of size 2,4,10, centered in (2,3,4)\n");
  printf("Volume %f \n",Ib.Mass());
  printf("CenterOfMass %f %f %f\n",cc[0],cc[1],cc[2]);
  printf("InertiaTensor Values  %6.3f %6.3f %6.3f\n",ITv[0],ITv[1],ITv[2]);
  printf("InertiaTensor Matrix\n");

  printf(" %6.3f %6.3f %6.3f\n",IT[0][0],IT[0][1],IT[0][2]);
  printf(" %6.3f %6.3f %6.3f\n",IT[1][0],IT[1][1],IT[1][2]);
  printf(" %6.3f %6.3f %6.3f\n",IT[2][0],IT[2][1],IT[2][2]);

  // Now we have a box with sides (h,w,d) 2,4,10, centered in (2,3,4)
  // Volume is 80
  // inertia tensor should be:
  // I_h = 1/12 m *(w^2+d^2)  = 1/12 * 80 * (16+100) = 773.33
  // I_w = 1/12 m *(h^2+d^2)  = 1/12 * 80 * (4+100)  = 693.33
  // I_d = 1/12 m *(h^2+w^2)  = 1/12 * 80 * (4+16)   = 133.33


  vcg::tri::Torus(torusMesh,2,1,1024,512);
  vcg::tri::Inertia<MyMesh> It(torusMesh);
  cc = It.CenterOfMass();
  It.InertiaTensorEigen(IT,ITv);

  printf("\nTorus of radius 2,1\n");
  printf("Mass %f \n",It.Mass());
  printf("CenterOfMass %f %f %f\n",cc[0],cc[1],cc[2]);
  printf("InertiaTensor Values  %6.3f %6.3f %6.3f\n",ITv[0],ITv[1],ITv[2]);
  printf("InertiaTensor Matrix\n");

  printf(" %6.3f %6.3f %6.3f\n",IT[0][0],IT[0][1],IT[0][2]);
  printf(" %6.3f %6.3f %6.3f\n",IT[1][0],IT[1][1],IT[1][2]);
  printf(" %6.3f %6.3f %6.3f\n",IT[2][0],IT[2][1],IT[2][2]);

  /*
     Now we have a torus with c = 2, a = 1
     c = radius of the ring
     a = radius of the section

    Volume is:
    V= 2 PI^2 * a^2 * c = ~39.478

    Inertia tensor should be:

    | ( 5/8 a^2 + 1/2 c^2 ) M             0                         0     |
    |            0             ( 5/8 a^2 + 1/2 c^2 ) M              0     | =
    |            0                        0             (3/4 a^2 + c^2) M |

    | ( 5/8+2 ) M        0           0     |   | 103.630    0        0     |
  = |      0         ( 5/8+2 ) M     0     | = |    0    103.630     0     |
    |      0             0       (3/4+2) M |   |    0       0      187.52  |

  */

  return 0;
}