예제 #1
0
 void UpdateID()
 {
     clib::recursive_mutex::scoped_lock proc(m_mutex);
     m_type = CalcType(m_props.Get(PERSIST_TYPE));
     bool recalcID = m_id.empty();
     if (recalcID)
         m_id = m_props.Get(PERSIST_TYPE);
     //std::_tstring filePath = m_props.Get(PERSIST_FILEPATH);
     //if (filePath.empty())
     //	m_props.Set(PERSIST_FILEPATH, m_id);	
     switch(m_type)
     {
     case WORKSPACE_ITEM_BUILDER:
         m_builder = m_props.Get(PERSIST_LABEL);
         if (recalcID)
             m_id += _T("/") + m_builder;
         m_label = m_builder;
         break;
     case WORKSPACE_ITEM_ATTRIBUTE:
         m_moduleLabel = m_props.Get(PERSIST_MODULE);
         m_attributeLabel = m_props.Get(PERSIST_ATTRIBUTE);
         m_attributeType = m_props.Get(PERSIST_ATTRIBUTETYPE);
         if (recalcID)
             m_id += _T("/") + m_moduleLabel + _T("/") + m_attributeLabel + _T("/") + m_attributeType;
         m_label = m_moduleLabel + _T(".") + m_attributeLabel;
         break;
     case WORKSPACE_ITEM_GRAPH:
         m_graph = m_props.Get(PERSIST_PATH);
         if (recalcID)
             m_id += _T("/") + m_graph;
         m_label = m_graph;
         break;
     default:
         ATLASSERT(!"Unknown persist type.");
         break;
     }
     try
     {
         m_groupIdx = boost::lexical_cast<int>(m_props.Get(PERSIST_GROUPINDEX));
         m_tabIdx = boost::lexical_cast<int>(m_props.Get(PERSIST_TABINDEX));
         m_active = boost::lexical_cast<bool>(m_props.Get(PERSIST_ACTIVE));
     }
     catch (boost::bad_lexical_cast &)
     {
     }
     boost::algorithm::to_lower(m_id);
 }
예제 #2
0
파일: bld.c 프로젝트: dwagon/celemp
void BuildFight(Ship shp,Amount amt)
/******************************************************************************/
/* Build fighter units on ship   */
{
Planet   num;

TRBLD(printf("BuildFight(shp: %d, amt: %d)\n",shp,amt));

fprintf(trns[plr],"S%dB%dF\t",shp+100,amt);
num = fleet[shp].planet;
if(galaxy[num].owner!=plr) {
	fprintf(stderr,"BuildFight:Plr %d does not own planet %d\n",plr,num+100);
	fprintf(trns[plr],"You do not own planet %d\n",num+100);
	return;
	}

if(fleet[shp].owner!=plr && alliance[fleet[shp].owner][plr]!=ALLY) {
	fprintf(stderr,"BuildFight:Plr %d does not own ship %d\n",plr,shp+100);
	fprintf(trns[plr],"You do not own ship %d\n",shp+100);
	return;
	}

if(galaxy[num].indleft<amt*2) {
	fprintf(trns[plr],"I ");
	amt=galaxy[num].indleft/2;
	}
if(galaxy[num].ore[2]<amt) {
	fprintf(trns[plr],"R6 ");
	amt=galaxy[num].ore[2];
	}
if(galaxy[num].ore[3] < amt) {
	fprintf(trns[plr],"R6 ");
	amt = galaxy[num].ore[3];
	}
galaxy[num].indleft-= amt*2;
galaxy[num].ore[2]-= amt;
galaxy[num].ore[3]-= amt;
fleet[shp].fight+= amt;
fleet[shp].type = CalcType(shp);
if(plr!=fleet[shp].owner)
	fprintf(trns[fleet[shp].owner],"Ally did S%dB%dF\n",shp+100,amt);
fprintf(trns[plr],"S%dB%dF\n",shp+100,amt);
}
예제 #3
0
파일: bld.c 프로젝트: dwagon/celemp
void BuildShield(Ship shp,Amount amt)
/******************************************************************************/
/* Build shield units on ship */
{
Planet num=fleet[shp].planet;

TRBLD(printf("BuildShield(shp: %d,amt: %d)\n",shp,amt));

fprintf(trns[plr],"S%dB%dS\t",shp+100,amt);
if(plr!=fleet[shp].owner && alliance[fleet[shp].owner][plr]!=ALLY) {
	fprintf(stderr,"BuildShield:Plr %d does not own ship %d\n",plr,shp+100);
	fprintf(trns[plr],"You do not own ship %d\n",shp+100);
	return;
	}

if(plr!=galaxy[num].owner) {
	fprintf(stderr,"BuildShield:Plr %d does not own planet %d\n",plr,num+100);
	fprintf(trns[plr],"You do not own planet %d\n",num+100);
	return;
	}

if(galaxy[num].indleft<amt*2) {
	fprintf(trns[plr],"I ");
	amt=galaxy[num].indleft/2;
	}
if(galaxy[num].ore[5]<amt) {
	fprintf(trns[plr],"R5 ");
	amt=galaxy[num].ore[5];
	}
if(galaxy[num].ore[6]<amt) {
	fprintf(trns[plr],"R6 ");
	amt=galaxy[num].ore[6];
	}
fleet[shp].shield+=amt;
fleet[shp].type=CalcType(shp);
galaxy[num].indleft-=amt*2;
galaxy[num].ore[5]-=amt;
galaxy[num].ore[6]-=amt;
if(plr!=fleet[shp].owner)
	fprintf(trns[fleet[shp].owner],"Ally did S%dB%dS\n",shp+100,amt);
fprintf(trns[plr],"S%dB%dS\n",shp+100,amt);
}
예제 #4
0
파일: event.cpp 프로젝트: cmosher01/OpenGRO
void CEvt::GetFromTree(const wxString& strTypeTok)
{
	m_strTypeTok = strTypeTok;
	wxTreeCtrl& tree = m_pDoc->m_tree;

	m_cita.Set(m_pDoc,NULL);
	HTREEITEM hSub = tree.GetChildItem(m_hTreeItem);
	while (hSub)
	{
		CGedLine* pglSub = (CGedLine*)tree.GetItemData(hSub);
		if (pglSub->m_strTok=="TYPE")
		{
			m_strType = pglSub->GetCleanValue(CGedLine::COLLAPSE);
		}
		else if (pglSub->m_strTok=="DATE")
		{
			m_dvDate.Set(pglSub->GetCleanValue(CGedLine::COLLAPSE|CGedLine::UPCASE));
		}
		else if (pglSub->m_strTok=="PLAC")
		{
			m_strPlace = pglSub->GetCleanValue(CGedLine::COLLAPSE);
		}
		else if (pglSub->m_strTok=="SOUR")
		{
			pglSub->CalcID();
			m_cita.Set(m_pDoc,hSub);
			m_cita.GetFromTree(pglSub->m_strValAsID);
		}
		else if (pglSub->m_strTok=="NOTE")
		{
			m_iNote = m_pDoc->LookupNote(pglSub->m_strValAsID);
		}
		hSub = tree.GetNextSiblingItem(hSub);
	}

	if (m_strType.IsEmpty())
		CalcType();

	if (m_strType.IsEmpty())
		m_strType = strTypeTok;
}
예제 #5
0
파일: bld.c 프로젝트: dwagon/celemp
void BuildCargo(Ship shp,Amount amt)
/******************************************************************************/
/* Build cargo units on ship  */
{
Planet   num;

TRBLD(printf("BuildCargo(shp: %d, amt: %d)\n",shp,amt));

num = fleet[shp].planet;
fprintf(trns[plr],"S%dB%dC\t",shp+100,amt);
if(galaxy[num].owner!=plr) {
	fprintf(stderr,"BuildCargo:Plr %d does not own planet %d\n",plr,num+100);
	fprintf(trns[plr],"You do not own planet %d\n",num+100);
	return;
	}

if(fleet[shp].owner!=plr && alliance[fleet[shp].owner][plr]!=ALLY) { 
	fprintf(stderr,"BuildCargo:Plr %d does not own ship %d\n",plr,shp+100);
	fprintf(trns[plr],"You do not own ship %d\n",shp+100);
	return;
	}

if(galaxy[num].indleft < amt) {
	fprintf(trns[plr],"I ");
	amt = galaxy[num].indleft;
	}
if(galaxy[num].ore[1] < amt)  {
	fprintf(trns[plr],"R1 ");
	amt = galaxy[num].ore[1];
	}
galaxy[num].indleft-= amt;
galaxy[num].ore[1]-= amt;
fleet[shp].cargo+= amt;
fleet[shp].cargleft+= amt;
fleet[shp].type = CalcType(shp);
if(plr!=fleet[shp].owner)
	fprintf(trns[fleet[shp].owner],"Ally did S%dB%dC\n",shp+100,amt);
fprintf(trns[plr],"S%dB%dC\n",shp+100,amt);
}
예제 #6
0
파일: bld.c 프로젝트: dwagon/celemp
void BuildTrac(Ship shp,Amount amt)
/******************************************************************************/
/* Build tractor units on ship */
{
Planet num=fleet[shp].planet;

TRBLD(printf("BuildTrac(shp: %d,amt: %d)\n",shp,amt));

fprintf(trns[plr],"S%dB%dT\t",shp+100,amt);
if(plr!=fleet[shp].owner && alliance[fleet[shp].owner][plr]!=ALLY) {
	fprintf(stderr,"BuildTrac:Plr %d doesnt own ship %d\n",plr,shp+100);
	fprintf(trns[plr],"You do not own ship %d\n",shp+100);
	return;
	}

if(plr!=galaxy[num].owner) {
	fprintf(stderr,"BuildTrac:Plr %d doesnt own planet %d\n",plr,num+100);
	fprintf(trns[plr],"You do not own planet %d\n",num+100);
	return;
	}

if(galaxy[num].indleft<amt*2) {	/* Check available industry */
	fprintf(trns[plr],"I ");
	amt=galaxy[num].indleft/2;
	}
if(galaxy[num].ore[7]<amt*2) {	/* Check available ore */
	fprintf(trns[plr],"R7 ");
	amt=galaxy[num].ore[7]/2;
	}
galaxy[num].indleft-=amt*2;		/* Reduce industry available */
galaxy[num].ore[7]-=amt*2;		/* Reduce ore stockpile */
fleet[shp].tractor+=amt;		/* Increase tractor beams */
/* Recalc ship type - not-needed but could be in future */
fleet[shp].type=CalcType(shp);	
if(plr!=fleet[shp].owner)
	fprintf(trns[fleet[shp].owner],"Ally did S%dB%dT\n",shp+100,amt);
fprintf(trns[plr],"S%dB%dT\n",shp+100,amt);
}
예제 #7
0
파일: bld.c 프로젝트: dwagon/celemp
void BuildHyp(Planet sbj,Amount amt,Units fgt,Units crg,Units trac,Units shld)
/******************************************************************************/
/* Build hyperdrive on planet */
{
int  count;

TRBLD(printf("BuildHyp(sbj:%d,amt:%d,fgt:%d,crg:%d,trac:%d,shld:%d)\n",sbj,amt,fgt,crg,trac,shld));

fprintf(trns[plr],"%dB%dH%d/%d/%d/%d\t",sbj+100,amt,fgt,crg,trac,shld);

if(shiptr+amt>NUMSHIPS) {
	amt = NUMSHIPS-shiptr;
	fprintf(trns[plr],"Max ships reached ");
	}

if(amt<0) {
	fprintf(stderr,"BuildHyp:Too many ships\n");
	fprintf(trns[plr],"Maximum number of ships in the galaxy reached\n");
	return;
	}

if(plr!=galaxy[sbj].owner) {
	fprintf(stderr,"BuildHyp:Plr %d does not own planet %d\n",plr,sbj+100);
	fprintf(trns[plr],"You do not own planet %d\n",sbj+100);
	return;
	}

if(galaxy[sbj].indleft<(40+fgt*2+crg+2*trac+2*shld)*amt) {
	fprintf(trns[plr],"I ");
	amt = galaxy[sbj].indleft/(40+fgt*2+crg+2*trac+2*shld);
	}
if(galaxy[sbj].ore[4]<10*amt) {
	fprintf(trns[plr],"R4 ");
	amt = galaxy[sbj].ore[4]/10;
	}
if(galaxy[sbj].ore[5]<(10+shld)*amt) {
	fprintf(trns[plr],"R5 ");
	amt = galaxy[sbj].ore[5]/(10+shld);
	}
if(galaxy[sbj].ore[6]<(10+shld)*amt) {
	fprintf(trns[plr],"R6 ");
	amt = galaxy[sbj].ore[6]/(10+shld);
	}
if(galaxy[sbj].ore[7]<(10+2*trac)*amt) {
	fprintf(trns[plr],"R7 ");
	amt = galaxy[sbj].ore[7]/(10+2*trac);
	}
if(galaxy[sbj].ore[1]<crg*amt) {
	fprintf(trns[plr],"R1 ");
	amt = galaxy[sbj].ore[1]/crg;
	}
if(galaxy[sbj].ore[2]<fgt*amt) {
	fprintf(trns[plr],"R2 ");
	amt = galaxy[sbj].ore[2]/fgt;
	}
if(galaxy[sbj].ore[3]<fgt*amt) {
	fprintf(trns[plr],"R3 ");
	amt = galaxy[sbj].ore[3]/fgt;
	}
galaxy[sbj].indleft -= (40+fgt*2+crg)*amt;
galaxy[sbj].ore[4] -= 10*amt;
galaxy[sbj].ore[5] -= (10+shld)*amt;
galaxy[sbj].ore[6] -= (10+shld)*amt;
galaxy[sbj].ore[7] -= (10+2*trac)*amt;
galaxy[sbj].ore[1] -= crg*amt;
galaxy[sbj].ore[2] -= fgt*amt;
galaxy[sbj].ore[3] -= fgt*amt;
for (count = 0;count<amt;count++) {
	fleet[shiptr].owner = plr;
	fleet[shiptr].cargo = crg;
	fleet[shiptr].fight = fgt;
	fleet[shiptr].tractor=trac;
	fleet[shiptr].shield=shld;
	fleet[shiptr].cargleft = crg;
	fleet[shiptr].planet = sbj;
	fleet[shiptr].engage=0;
	fleet[shiptr].type = CalcType(shiptr);
	shiptr++;
	}
fprintf(trns[plr],"%dB%dH%d/%d/%d/%d\n",sbj+100,amt,fgt,crg,trac,shld);
}