작업물/DirectMove2009/12/30 17:50
http://dm.zsoo.net/pc/download 에서
dm05src.zip 다운로드

음 별것도 없는데 숨기는거 같아서 올립니다
벌써 4년도 더 지났네요
압축하면서 보니까 잃어버렸던 부분이 숨어있었네요
d3d8로 개발되어서 컴파일하려면 dx8 sdk를 구하거나 d3d9로 코드를 바꿔야됩니다
그리고 상업적 목적으로 사용하시면 안됩니다

'작업물 > DirectMove' 카테고리의 다른 글

Android용 DirectMove  (5) 2010/09/11
DirectMove 0.5 소스  (4) 2009/12/30
DirectMove 구버전 백업  (0) 2009/12/30
DirectMove Web 여러 페이지 추가  (3) 2009/12/24
Posted by orange code
작업물2009/12/30 17:15


버그 가득 공튀기기
그리고 창 투명화 프로그램

'작업물' 카테고리의 다른 글

인공지능 오목  (1) 2010/01/05
잡스런 백업  (0) 2009/12/30
Posted by orange code
작업물/DirectMove2009/12/30 17:07
http://dm.zsoo.net/pc/download 에서
dm032.zip
dm04.zip 
다운로드 가능

Posted by orange code
private static T ReadStruct<T>(byte[] buffer) where T : struct
{
    int size = Marshal.SizeOf(typeof(T));
    if (size > buffer.Length)
        throw new Exception();
    IntPtr ptr = Marshal.AllocHGlobal(size);
    Marshal.Copy(buffer, 0, ptr, size);
    T obj = (T)Marshal.PtrToStructure(ptr, typeof(T));
    Marshal.FreeHGlobal(ptr);
    return obj;


ex)
struct A
{
    public int x, y;
}

A a = ReadStruct<A>(buffer);
Posted by orange code
작업물/DirectMove2009/12/24 18:42
링크 ----->>   http://w.zsoo.net <<----

시작페이지 추가
최근 등록된 ksf와 점수 목록 표시


점수목록 페이지 추가
해당ksf의 전체 점수 목록 표시


Posted by orange code
작업물/DirectMove2009/12/23 23:14
제목대로..

ZIP파일로 ksf를 등록할수 있게 추가함.. 단 여러 ksf그룹을 하나로 압축하면 안됨...
즉 음악과 이미지를 공유하는 ksf들만 동시에 등록가능

리스트에 최고 등록 점수 표시 추가

Posted by orange code
작업물/DirectMove2009/12/23 00:17

링크--->  http://w.zsoo.net/   <--

silverlight 설치 해주셔야 플레이 됩니다~

등록 페이지도 만들어둬서 ksf 도 등록할수 있습니다..

판정 , 게이지, 점수, 인랭 등 추가 예정입니다

Posted by orange code
1. 실버라잇에서 접근하는 WCF서비스를 만들때는 반드시 'silverlight 사용 wcf 서비스'로 만든다.

2. 서비스 클래스를 작성한다.

3. web.config에서 <system.serviceModel> 안의 <endpoint address="" binding="basicHttpBinding" contract="DownloadService" /> 부분에서 binding부분이 다르게 되있다면 basicHttpBinding으로 수정한다.
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 가 없으면 추가한다.

4. 실버라잇 프로젝트에서  서비스 레퍼런스 추가하며 앞에 제작한 WCF서비스를 등록한다.

5. 실버라잇 클래스에서 서비스를 이요한다.
EndpointAddress address = new EndpointAddress(new Uri(Application.Current.Host.Source, "../Service.svc"));
client = new ServiceClient(new BasicHttpBinding(), address);
위처럼 client를 가져온후.. client 를 살펴보면, 앞에 작성한 함수들이 비동기버전으로 만들어져 있다.

Posted by orange code

관리자모드로  C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation 로 가서
ServiceModelReg.exe /r /y 를 실행해주면 됩니다.

웹사이트의 처리기매핑 정보가 모두 초기화되니 주의해야합니다..
Posted by orange code


중간 단계 따윈 없이 바로 제작 과정 들어갑니다..

일단 WMP 의 주요 인터페이스는 이렇습니다.
IWMPCore -> 미플 총괄
IWMPControls -> 재생/정지
IWMPPlaylist -> 재생목록
IWMPMedia -> 곡하나
그외에
IWMPPlaylistCollection, IWMPPlaylistArray등이 있는데 특히 이 두개는 이번 플러그인 제작에 쓰였습니다.

제작할 플러그인은 다음곡들을 예약하는 기능이고 이름은 BookMe로 정했습니다.

BookMe 재생목록 만들기&가져오는 함수
일단 플러그인 내에서 이 BookMe 목록은 중요한데요 이 목록을 가져오는 함수인데
m_spCore->get_playlistCollection(&spPlaylistCollection); // 전체 재생목록
spPlaylistCollection->getByName(L"BookMe", &spPlaylistArray); // 이름이 BookMe인것들
spPlaylistArray->get_count(&playlistCount); // 일치하는 재생목록 갯수
if (playlistCount > 0)
    spPlaylistArray->item(0, &spPlaylist); // 처음 재생목록으로 선택
else
    spPlaylistCollection->newPlaylist(L"BookMe", &spPlaylist); // 새로 만듦

이 코드로 미플 재생시 BookMe 재생목록이 바로바로 생기게 되죠..
사용자는 다음에 듣고 싶은곡을 이 재생목록에 추가할테고요...
이제 남은건 현재 재생곡이 끝났을 때, 이 목록에 남은 곡이 있다면 그 곡을 재생하고 BookMe목록에서 지우는겁니다..

플러그인 프로젝트 생성시에 event항목을 체크하면 IWMPEvents를 상속받게 되어서, WMP의 다양한 이벤트에 대해 처리할 수 가 있게 됩니다.. 그중에는 PlayStateChange 함수에서  wmppsPlaying, wmppsMediaEnded 로 재생시작/정지를 알 수 있죠.. wmppsMediaEnded 이벤트가 발생하면 BookMe목록에서 하나 가져와서 재생하면 되는거죠, 근데 중요한것은 IWMPCore나 IWMPControls의 노래변경기능은 현재 재생중인 목록에서 가져온 미디어 객체만 허용하기 때문에, BookMe에서 가져온 객체를 가지고, 현재 재생중인 목록의 미디어들과 비교하면서 파일이 같은 미디어를 찾아서 재생시켜줘야 된다는 것입니다..
또 하나 플러그인을 제작하면서 힘들었던건... wmppsMediaEnded 이벤트 발생시 곡을 멈추고 원하는 곡을 재생하면, wmp가 선택한 노래로 바로 바뀌어 버리는것이었습니다.. 그래서 결국 타이머를 이용한 시간차로 해결했죠.. 자세한건 소스를....
그리고 중요한건 윈도우7에선 관리자모드로 visual studio를 켜야, 컴파일후 플러그인 등록이 됩니다~ 안그럼 에러뜸

Posted by orange code