PBYTE CLibInfoMapObjectData::SetSendData(PBYTE pSrc)
{
    int i, nCount;
    DWORD dwCount;
    PBYTE pRet, pDataTmp, pDataTmpBack;
    CInfoMapObjectData InfoTmp, *pInfo;

    pRet		= pSrc;
    pDataTmp	= pSrc;

    DeleteAll ();

    /* データ数を読み込み */
    CopyMemory (&dwCount, pDataTmp, sizeof (dwCount));
    nCount		= (int)dwCount;
    pDataTmp	+= sizeof (dwCount);

    for (i = 0; i < nCount; i ++) {
        pDataTmpBack = pDataTmp;
        InfoTmp.SetSendData (pDataTmp);
        pInfo = (PCInfoMapObjectData)GetNew ();
        pDataTmp = pDataTmpBack;
        pDataTmp = pInfo->SetSendData (pDataTmp);
        Add (pInfo);
    }

    pRet = pDataTmp;
    return pRet;
}
CInfoMapObjectData *CLibInfoMapObjectData::Renew(DWORD dwDataID, CInfoMapObjectData *pSrc)
{
    int i, nCount;
    PCInfoMapObjectData pRet, pInfo, pInfoTmp;

    pRet = NULL;

    nCount = m_paInfo->GetSize ();
    for (i = 0; i < nCount; i ++) {
        pInfoTmp = m_paInfo->GetAt (i);
        if (pInfoTmp->m_dwDataID != dwDataID) {
            continue;
        }
        pInfo = (PCInfoMapObjectData)GetNew ();
        pInfo->Copy (pSrc);
        pInfo->m_dwDataID = pInfoTmp->m_dwDataID;

        SAFE_DELETE (pInfoTmp);
        m_paInfo->SetAt (i, pInfo);
        pRet = pInfo;
        break;
    }

    return pRet;
}
DWORD CLibInfoMapObjectData::ReadElementData(PBYTE pSrc)
{
    int i, j, nNo, nCount, nCount2;
    PBYTE pDst, pSrcTmp;
    DWORD dwSize, dwSizeTmp;
    PCInfoMapObjectData pInfo;
    CmyString strTmp;

    pDst	= NULL;
    dwSize	= 0;

    DeleteAll ();

    pSrcTmp = pSrc;
    CopyMemoryRenew (&nCount, pSrcTmp, sizeof (nCount), pSrcTmp);				/* データ数 */
    for (i = 0; i < nCount; i ++) {
        CopyMemoryRenew (&nCount2, pSrcTmp, sizeof (nCount2), pSrcTmp);			/* 要素数 */

        pInfo = (PCInfoMapObjectData)GetNew ();
        for (j = 0; j < nCount2; j ++) {
            StoreRenew (strTmp, (LPCSTR)pSrcTmp, pSrcTmp);						/* 要素名 */
            CopyMemoryRenew (&dwSizeTmp, pSrcTmp, sizeof (dwSizeTmp), pSrcTmp);	/* データサイズ */
            nNo = pInfo->GetElementNo ((LPCSTR)strTmp);
            if (nNo >= 0) {
                dwSizeTmp = pInfo->ReadElementData (pSrcTmp, nNo);
            }
            pSrcTmp += dwSizeTmp;
        }
        Add (pInfo);
    }

    return (DWORD)(pSrcTmp - pSrc);
}
PBYTE CLibInfoMapShadow::SetSendData(PBYTE pSrc)
{
	PBYTE pDataTmp;
	DWORD dwTmp;
	PCInfoMapShadow pInfoMapShadow, pInfoMapShadowTmp;

	pDataTmp = pSrc;

	while (1) {
		CopyMemory (&dwTmp, pDataTmp, sizeof (DWORD));
		if (dwTmp == 0) {
			pDataTmp += sizeof (DWORD);
			break;
		}
		pInfoMapShadowTmp = (PCInfoMapShadow)GetNew ();
		pDataTmp = pInfoMapShadowTmp->SetSendData (pDataTmp);

		pInfoMapShadow = (PCInfoMapShadow)GetPtr (pInfoMapShadowTmp->m_dwShadowID);
		if (pInfoMapShadow) {
			pInfoMapShadow->Copy (pInfoMapShadowTmp);
			SAFE_DELETE (pInfoMapShadowTmp);
		} else {
			Add (pInfoMapShadowTmp);
		}
	}
	RenewIDPtr ();

	return pDataTmp;
}
CInfoMapEventBase *CLibInfoMapEvent::Renew(DWORD dwMapEventID, CInfoMapEventBase *pSrc)
{
	int i, nCount;
	PCInfoMapEventBase pRet, pInfo, pInfoTmp;

	pRet = NULL;

	nCount = m_paInfo->GetSize ();
	for (i = 0; i < nCount; i ++) {
		pInfoTmp = m_paInfo->GetAt (i);
		if (pInfoTmp->m_dwMapEventID != dwMapEventID) {
			continue;
		}
		pInfo = (PCInfoMapEventBase)GetNew (pSrc->m_nType);
		pInfo->Copy (pSrc);
		pInfo->m_dwMapEventID = pInfoTmp->m_dwMapEventID;

		SAFE_DELETE (pInfoTmp);
		m_paInfo->SetAt (i, pInfo);
		pRet = pInfo;
		break;
	}

	return pRet;
}
void CLibInfoMapObjectData::Merge(CLibInfoMapObjectData *pSrc)
{
    int i, nCount;
    PCInfoMapObjectData pInfoTmp, pInfoSrc, pInfoDst;

    nCount = pSrc->GetCount ();
    for (i = 0; i < nCount; i ++) {
        pInfoSrc = (PCInfoMapObjectData)pSrc->GetPtr (i);
        pInfoTmp = (PCInfoMapObjectData)GetPtr (pInfoSrc->m_dwDataID);
        if (pInfoTmp == NULL) {
            pInfoTmp = (PCInfoMapObjectData)GetNew ();
            pInfoTmp->Copy (pInfoSrc);
            Add (pInfoTmp);
        } else {
            pInfoDst = (PCInfoMapObjectData)GetNew ();
            pInfoDst->Copy (pInfoSrc);
            Renew (pInfoSrc->m_dwDataID, pInfoDst);
        }
    }
}
Esempio n. 7
0
void MythUIEditBar::AddMark(MythUIShape *shape, MythUIImage *image,
                            int start, bool left)
{
    MythUIType *add = GetNew(shape, image);
    if (add)
    {
        if (left)
            start -= add->GetArea().width();
        add->SetPosition(start, add->GetArea().top());
    }
}
void CLibInfoMapEvent::Merge(CLibInfoMapEvent *pSrc)
{
	int i, nCount;
	PCInfoMapEventBase pInfoTmp, pInfoSrc, pInfoDst;

	nCount = pSrc->GetCount ();
	for (i = 0; i < nCount; i ++) {
		pInfoSrc = (PCInfoMapEventBase)pSrc->GetPtr (i);
		pInfoTmp = (PCInfoMapEventBase)GetPtr (pInfoSrc->m_dwMapEventID);
		if (pInfoTmp == NULL) {
			pInfoTmp = (PCInfoMapEventBase)GetNew (pInfoSrc->m_nType);
			pInfoTmp->Copy (pInfoSrc);
			Add (pInfoTmp);
		} else {
			pInfoDst = (PCInfoMapEventBase)GetNew (pInfoSrc->m_nType);
			pInfoDst->Copy (pInfoSrc);
			Renew (pInfoSrc->m_dwMapEventID, pInfoDst);
		}
	}
}
Esempio n. 9
0
void MythUIEditBar::AddBar(MythUIShape *shape, MythUIImage *image,
                           const QRect &area)
{
    MythUIType *add = GetNew(shape, image);
    if (add)
    {
        MythUIShape *shape = dynamic_cast<MythUIShape*>(add);
        MythUIImage *image = dynamic_cast<MythUIImage*>(add);
        if (shape)
            shape->SetCropRect(area.left(), area.top(), area.width(), area.height());
        if (image)
            image->SetCropRect(area.left(), area.top(), area.width(), area.height());
        add->SetPosition(area.left(), area.top());
    }
}
void CLibInfoMapShadow::Merge(CLibInfoMapShadow *pSrc)
{
	int i, nCount;
	PCInfoMapShadow pInfoTmp, pInfoSrc;

	nCount = pSrc->GetCount ();
	for (i = 0; i < nCount; i ++) {
		pInfoSrc = (PCInfoMapShadow)pSrc->GetPtr (i);
		pInfoTmp = (PCInfoMapShadow)GetPtr (pInfoSrc->m_dwShadowID);
		if (pInfoTmp == NULL) {
			pInfoTmp = (PCInfoMapShadow)GetNew ();
			pInfoTmp->Copy (pInfoSrc);
			Add (pInfoTmp);
		} else {
			pInfoTmp->Copy (pInfoSrc);
		}
	}
}