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); }
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; }
CString GetElementName(ShapeNum s,int elt) { return GetShapeName(s)+" "+CString('a'+elt); }
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(); }