void plUoid::Write(hsStream* s) const { // first write contents byte uint8_t contents = IsClone() ? kHasCloneIDs : 0; if (fLoadMask.IsUsed()) contents |= kHasLoadMask; s->WriteByte(contents); fLocation.Write(s); // conditional loadmask write if (contents & kHasLoadMask) fLoadMask.Write(s); s->WriteLE( fClassType ); s->WriteLE( fObjectID ); s->WriteSafeString( fObjectName ); // conditional cloneIDs write if (contents & kHasCloneIDs) { s->WriteLE(fCloneID); uint16_t dummy = 0; s->WriteLE(dummy); // to avoid breaking format s->WriteLE(fClonePlayerID); } }
void CPageAdvanced::InitCloneDropdownMenu(HWND hWnd) { // Set clone menu choice (ok even if it's not a clone) const int nCurrentChoice = GetCloneMenuItem(); m_PropertySheetHelper.FillComboBox(hWnd, IDC_CLONETYPE, m_CloneChoices, nCurrentChoice); const bool bIsClone = IsClone( m_PropertySheetHelper.GetConfigNew().m_Apple2Type ); EnableWindow(GetDlgItem(hWnd, IDC_CLONETYPE), bIsClone ? TRUE : FALSE); }
int CPageAdvanced::GetCloneMenuItem(void) { const eApple2Type type = m_PropertySheetHelper.GetConfigNew().m_Apple2Type; const bool bIsClone = IsClone(type); if (!bIsClone) return MENUITEM_CLONEMIN; int nMenuItem = type - A2TYPE_PRAVETS; if (nMenuItem < 0 || nMenuItem >= MENUITEM_CLONEMAX) return MENUITEM_CLONEMIN; return nMenuItem; }