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); }
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); }
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); }
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; }
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); }
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); }
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); }