Exemple #1
0
CString		GetTargName(UniqueID u)	
{
	CString	name;
	name = LoadResString(IDS_PLACENAMES_START + u);
	if (name.IsEmpty())
	{
		info_itemS* p = *Persons2::SlowConvertPtrUID(u);
		if (p)
		if (p->Status.size!=WAYPOINTSIZE)
		{
			if (p->SGT != UID_Null)
			{
				name = GetTargName(p->SGT)+": "+GetShapeName(ShapeNum(p->shape.Evaluate()));
			}else
			{
				name = GetShapeName(ShapeNum(p->shape.Evaluate()));
			}
		}
		else
		{
			name = LoadResString(IDS_WAYPOINT) + ": "; 
			name = name + LoadResString(Profile::WPType(u));
		}
	}		
//	char buff[10];
//	sprintf(buff,"targ %04x",(UWord)u);
	return (name);
}
Exemple #2
0
void	CDamage::FillList()
{
//DeadCode JIM 20Oct00 	int setindex=-1;
//DeadCode JIM 20Oct00 	int listlen=0;
	CRListBox*	l=GETDLGITEM(IDC_LIST_ELEMENTS);
	l->Clear();
	//Find damage info for group
	int de=numdamagedelts;
	while(de-->0)
		breakif (damagedelements[de].loadedid==groupnum);

	if (de>=0)
	{
		int specificeltdamage=de;
		UniqueID startpoint=UID_NULL;
		UniqueID findpoint=(UniqueID)wavenum;
		if (wavenum!=groupnum)
		{
			if (!DeadStream::MainWorldBand(UniqueID(groupnum)))
				startpoint=findpoint;
			findpoint=damagedelements[specificeltdamage].memberid;
		}
		DeadStream::DeadBlockItterator itt(Dead_Stream.firstblock,startpoint);
		itt.SkipToItem(findpoint);
		//list elements
		l->AddColumn(TARGETFIELDWIDTH+50);
		l->AddColumn(50);
		for (GroupItterator si(damagedelements[specificeltdamage].shape,&itt);si;si++)
		{
			if (si.DamageWeight()>IGNOREDAMAGEBELOWTHIS && si.shape!=CTRPTC && si.shape!=CRKPTC)
			{
				l->AddString(GetShapeName(si.shape)+" "+GetEltDeltaName(si.delta),0);
				l->AddString(RESLIST(DAMAGESTAT_ALIVE,((MinAnimData&)si.AnimDataByte()).itemstate),1);
			}
		}
	}
	else
	{
		l->AddColumn(TARGETFIELDWIDTH+100);
		info_itemS* p = *Persons2::SlowConvertPtrUID(UniqueID(groupnum));
		if (p)
			if (p->Status.size>=MOBILESIZE)
			{
				EventVal& type=p->shape;
				int max=(info_grndgrpPtr(*p)->inform);
				for (int i=0;i<max;i++)
					l->AddString(GetShapeName(ShapeNum(type.Evaluate(i))),0);
			}
			else
				for (GroupItterator si(ShapeNum(p->shape.Evaluate()));si;si++)
				{
					if (si.DamageWeight()>IGNOREDAMAGEBELOWTHIS && si.shape!=CTRPTC && si.shape!=CRKPTC)
					{
						l->AddString(GetShapeName(si.shape)+" "+GetEltDeltaName(si.delta),0);
					}
				}

	}
}
void CGumpEditorDoc::OnSettings()
{
	CGumpEditorView* pView = (CGumpEditorView*)FindView(RUNTIME_CLASS(CGumpEditorView));
	if (!pView) return;

	CDEditor& editor = pView->GetDEditor();

	CDialogSettings	dlg;

	dlg.m_width = editor.GetVirtualSize().cx;
	dlg.m_height = editor.GetVirtualSize().cy;
	dlg.m_gridWidth = editor.GetGridSize().cx;
	dlg.m_gridHeight = editor.GetGridSize().cy;
	editor.GetMargins( dlg.m_marginLeft, dlg.m_marginTop, dlg.m_marginRight, dlg.m_marginBottom );
	
	dlg.m_strName = GetName();
	dlg.m_iAlpha = GetAlpha();
	dlg.m_iFlags = GetFlags();
	dlg.m_iFadeAlpha = GetFadeAlpha();
	dlg.m_iFadeTime = GetFadeTime();
	dlg.m_strShapeName = GetShapeName();
	GetEventHandler(dlg.m_strEvClick, dlg.m_strEvClose, dlg.m_strEvMouseUp, dlg.m_strEvMouseDown, dlg.m_strEvKeyPressed);

	if( dlg.DoModal() == IDOK )
	{
		editor.SetGridSize( CSize( dlg.m_gridWidth, dlg.m_gridHeight ) );
		editor.SetVirtualSize( CSize( dlg.m_width, dlg.m_height ) );
		editor.SetMargins( dlg.m_marginLeft, dlg.m_marginTop, dlg.m_marginRight, dlg.m_marginBottom );
		
		SetName(dlg.m_strName);
		SetAlpha(dlg.m_iAlpha);
		SetFlags(dlg.m_iFlags);
		SetFade(dlg.m_iFadeAlpha, dlg.m_iFadeTime);
		SetShapeName(dlg.m_strShapeName);
		SetEventHandler(dlg.m_strEvClick, dlg.m_strEvClose, dlg.m_strEvMouseUp, dlg.m_strEvMouseDown, dlg.m_strEvKeyPressed);
		
		editor.RedrawWindow();
	}
}
BOOL CGumpEditorDoc::OnSaveDocument(LPCTSTR lpszPathName)
{
	// TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
	CStdioFile file;
	if (!file.Open(lpszPathName, CFile::modeCreate | CFile::modeWrite | CFile::typeText))
		return FALSE;
	
	CString str;
	CSize size = m_objs.GetVirtualSize();
	str = "<?xml version='1.0'?>\n";
	file.WriteString(str);

	str.Format("<form width='%d' height='%d' alpha='%d' flags='%d' shape='%s'>\n", size.cx, size.cy, GetAlpha(), GetFlags(), GetShapeName());
	file.WriteString( str );

	str.Format(" <fade alpha='%d' time='%d'/>\n", GetFadeAlpha(), GetFadeTime());
	file.WriteString(str);
	str.Format(" <event onclick='%s' onclose='%s' onmouseup='%s' onmousedown='%s' onkeypressed='%s'/>\n",
			GetEventHandler(ONCLICK), GetEventHandler(ONCLOSE), GetEventHandler(ONMOUSEUP), GetEventHandler(ONMOUSEDOWN), GetEventHandler(ONKEYPRESSED));
	file.WriteString(str);

	int count = 0;
	CDiagramEntity* obj;
	while( ( obj = m_objs.GetAt( count++ ) ) ) {
		file.WriteString( obj->GetString(TRUE) + _T( "\n" ) );
		file.WriteString( obj->GetString(FALSE) + _T( "\n" ) );
	}

	file.WriteString("</form>\n");

	file.Close();

	m_objs.SetModified( FALSE );

	SetModifiedFlag(FALSE);

	return TRUE;
}
Exemple #5
0
CString		GetElementName(ShapeNum s,int elt)
{
	return GetShapeName(s)+" "+CString('a'+elt);

}
Exemple #6
0
void CDamage::DoDataExchange(CDataExchange* pDX)
{
	char*	fractionformat=":    %i/%i";
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDamage)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	DDX_Control(pDX,IDC_LIST_ELEMENTS,m_IDC_LIST_ELEMENTS);
	DDX_Control(pDX,IDC_COMBO_ELEMENTS,m_IDC_COMBO_ELEMENTS);
	//}}AFX_DATA_MAP
	int	line=0;
	int	selline=-1;
	internalUIDmax=0;
	CString	displayline;
	{														  //RDH 28/04/99
		info_itemS* p = *Persons2::SlowConvertPtrUID(UniqueID(wavenum));
		if (p->Status.size>=MOBILESIZE)
		{
			CString  str = GetShapeName(ShapeNum(p->shape.Evaluate()));
			if (str.IsEmpty() || str[0]=='_')
				str=GetTargName(UniqueID(wavenum));
			if (str.IsEmpty() || str[0]==0)
				str=RESSTRING(ASSET);
			displayline=str;//l->AddString(str,0);
			int damagelevel=Node_Data[UniqueID(wavenum)].truestatus;
			int	members=(info_grndgrpPtr(*p)->inform);
			if (damagelevel>100)
				damagelevel=100;
			damagelevel=damagelevel*(members+6)*(members+6)/100;
			int deadmembers=6;
			for (;deadmembers*deadmembers<damagelevel;deadmembers++)
			{}
			displayline=RESSTRING(DAMAGED)+CSprintf(fractionformat,deadmembers-6,members);
		}
		else
		{
			{
			CString  str = GetShapeName(ShapeNum(p->shape.Evaluate()));
			if (str.IsEmpty() || str[0]=='_')
				str=GetTargName(UniqueID(wavenum));
			displayline=str;//l->AddString(str,0);
			}
			if (damagedelements[0].loadedid==wavenum)
			{
				DeadStream::DeadBlockItterator itt(Dead_Stream.firstblock,UID_NULL);
				itt.SkipToItem(UniqueID(wavenum));
				int damagedeltc=0,totaleltc=0,damagedpoints=0;
				for (GroupItterator si(damagedelements[0].shape,&itt);si;si++)
					if (si.AnimDataMAD().itemstate>0)
					{
						if (si.DamageWeight()>IGNOREDAMAGEBELOWTHIS)
						{
							damagedeltc++;
							totaleltc++;
						}
						damagedpoints+=si.AnimDataMAD().itemstate*si.DamageWeight();
					}
					else
						if (si.DamageWeight()>IGNOREDAMAGEBELOWTHIS)
							totaleltc++;
				displayline+=CSprintf(fractionformat,damagedeltc,totaleltc);
			}
			else
			{
				int totaleltc=0;

				info_itemS* p = *Persons2::SlowConvertPtrUID(UniqueID(wavenum));
				if (p)
					for (GroupItterator si(ShapeNum(p->shape.Evaluate()));si;si++)
						if (si.DamageWeight()>IGNOREDAMAGEBELOWTHIS)
							totaleltc++;
				displayline+=CSprintf(fractionformat,0,totaleltc);

		//DEADCODE DAW 02/02/00 		l->AddString(RESSTRING(FULLY_F),1);
		//DEADCODE DAW 02/02/00 		l->AddString(RESSTRING(F_FUNCTIONAL),2);
			}
		}
	}
	internalUIDList[internalUIDmax++]=UniqueID(wavenum);
	GETDLGITEM(IDC_COMBO_ELEMENTS)->AddString(displayline);
	if (groupnum==UID_NULL || groupnum==wavenum)
		selline=line;
	line++;
	info_itemS*	p;
	UniqueIDBand band;
	for (int i=CivilianBAND;i<WorldStuff::PITEMTABLESIZE;i++)
		if (	((p=Persons2::ConvertPtrUID(UniqueID(i)))!=NULL)
			&&	(p->SGT==wavenum && p->shape.Evaluate()!=EMPTY && p->shape.Evaluate()!=EMPTY2 &&p->Status.size<MOBILESIZE)
			&&	(band=Persons2::getbandfromUID(UniqueID(i)))!=0
			&&	band!=LandscapeBAND
			)
		{
			displayline=GetShapeName(ShapeNum(p->shape.Evaluate()))+" "+GetRelativeName(p->SGT,&p->World);
			int de=numdamagedelts;
			while(de-->0)
				breakif (damagedelements[de].loadedid==i);
			if (de>=0)
			{
				UniqueID startpoint=UID_NULL;
				UniqueID findpoint=(UniqueID)wavenum;
//DEADCODE JIM 07/06/99 							if (wavenum!=groupnum)
				{
					if (!DeadStream::MainWorldBand(UniqueID(i)))
						startpoint=findpoint;
					findpoint=damagedelements[de].memberid;
				}
				DeadStream::DeadBlockItterator itt(Dead_Stream.firstblock,startpoint);
				itt.SkipToItem(findpoint);

				int damagedeltc=0,totaleltc=0,damagedpoints=0;
				for (GroupItterator si(damagedelements[de].shape,&itt);si;si++)
					if (si.AnimDataMAD().itemstate>0)
					{
						if (si.DamageWeight()>IGNOREDAMAGEBELOWTHIS)
						{
							damagedeltc++;
							totaleltc++;
						}
						damagedpoints+=si.AnimDataMAD().itemstate*si.DamageWeight();
					}
					else
						if (si.DamageWeight()>IGNOREDAMAGEBELOWTHIS)
							totaleltc++;
				displayline+=CSprintf(fractionformat,damagedeltc,totaleltc);
			}
			else
			{
				int	totaleltc=0;
				info_itemS* p = *Persons2::SlowConvertPtrUID(UniqueID(i));
				if (p)
					for (GroupItterator si(ShapeNum(p->shape.Evaluate()));si;si++)
						if (si.DamageWeight()>IGNOREDAMAGEBELOWTHIS)
							totaleltc++;
				displayline+=CSprintf(fractionformat,0,totaleltc);


			}
			internalUIDList[internalUIDmax++]=UniqueID(i);
			GETDLGITEM(IDC_COMBO_ELEMENTS)->AddString(displayline);
			if (groupnum==i)
				selline=line;
			line++;
		}
 	GETDLGITEM(IDC_COMBO_ELEMENTS)->SetIndex(selline);
	FillList();

}