CCharBase *CItemSpawn::SetTrackID() { ADDTOCALLSTACK("CitemSpawn:SetTrackID"); SetAttr(ATTR_INVIS); // Indicate to GM's that it is invis. if (GetHue() == 0) SetHue(HUE_RED_DARK); if ( !IsType(IT_SPAWN_CHAR) ) { SetDispID(ITEMID_WorldGem_lg); return NULL; } CCharBase *pCharDef = NULL; RESOURCE_ID_BASE rid = m_itSpawnChar.m_CharID; if ( rid.GetResType() == RES_CHARDEF ) { CREID_TYPE id = static_cast<CREID_TYPE>(rid.GetResIndex()); pCharDef = CCharBase::FindCharBase(id); } if ( pCharDef ) // They must want it to look like this. SetDispID(pCharDef ? pCharDef->m_trackID : ITEMID_TRACK_WISP); return pCharDef; }
int VideoColourSpace::SetPictureAttribute(PictureAttribute attribute, int value) { if (!(m_supported_attributes & toMask(attribute))) return -1; value = std::min(std::max(value, 0), 100); switch (attribute) { case kPictureAttribute_Brightness: SetBrightness(value); break; case kPictureAttribute_Contrast: SetContrast(value); break; case kPictureAttribute_Colour: SetSaturation(value); break; case kPictureAttribute_Hue: SetHue(value); break; case kPictureAttribute_StudioLevels: value = std::min(std::max(value, 0), 1); SetStudioLevels(value > 0); break; default: value = -1; } if (value >= 0) SaveValue(attribute, value); return value; }
// Animals will eat crops before they are ripe, so we need a way to reset them prematurely void CItem::Plant_CropReset() { ADDTOCALLSTACK("CItem::Plant_CropReset"); if ( !IsType(IT_CROPS) && !IsType(IT_FOLIAGE) ) { // This isn't a crop, and since it just got eaten, we should delete it Delete(); return; } const CItemBase *pItemDef = Item_GetDef(); ITEMID_TYPE iResetID = static_cast<ITEMID_TYPE>(RES_GET_INDEX(pItemDef->m_ttCrops.m_idReset)); if ( iResetID != ITEMID_NOTHING ) SetID(iResetID); Plant_SetTimer(); RemoveFromView(); // remove from most screens. SetHue(HUE_RED_DARK); // Indicate to GM's that it is growing. SetAttr(ATTR_INVIS); // regrown invis. }
CCharBase * CItem::Spawn_SetTrackID() { if ( ! IsType(IT_SPAWN_CHAR)) return NULL; CCharBase * pCharDef = NULL; RESOURCE_ID_BASE rid = m_itSpawnChar.m_CharID; if ( rid.GetResType() == RES_CHARDEF ) { CREID_TYPE id = (CREID_TYPE) rid.GetResIndex(); pCharDef = CCharBase::FindCharBase( id ); } if ( pCharDef ) SetAttr( ATTR_INVIS ); if ( IsAttr(ATTR_INVIS)) // They must want it to look like this. { SetDispID( ( pCharDef == NULL ) ? ITEMID_TRACK_WISP : pCharDef->m_trackID ); if ( GetHue() == 0 ) SetHue( HUE_RED_DARK ); // Indicate to GM's that it is invis. } return( pCharDef ); }
void CItem::Plant_CropReset() { // Animals will eat crops before they are ripe, so we need a way to reset them prematurely if ( ! IsType(IT_CROPS) && ! IsType(IT_FOLIAGE)) { // This isn't a crop, and since it just got eaten, we should delete it Delete(); return; } CItemBase * pItemDef = Item_GetDef(); ITEMID_TYPE iResetID = (ITEMID_TYPE) RES_GET_INDEX( pItemDef->m_ttCrops.m_idReset ); if ( iResetID != ITEMID_NOTHING ) { SetID(iResetID); } Plant_SetTimer(); RemoveFromView(); // remove from most screens. SetHue( HUE_RED_DARK ); // Indicate to GM's that it is growing. SetAttr(ATTR_INVIS); // regrown invis. }
VideoColourSpace::VideoColourSpace(VideoCStd colour_std) : m_supported_attributes(kPictureAttributeSupported_None), m_changed(false), m_studioLevels(false), m_brightness(0.0f), m_contrast(1.0f), m_saturation(1.0f), m_hue(0.0f), m_colourSpace(colour_std) { m_db_settings[kPictureAttribute_Brightness] = gCoreContext->GetNumSetting("PlaybackBrightness", 50); m_db_settings[kPictureAttribute_Contrast] = gCoreContext->GetNumSetting("PlaybackContrast", 50); m_db_settings[kPictureAttribute_Colour] = gCoreContext->GetNumSetting("PlaybackColour", 50); m_db_settings[kPictureAttribute_Hue] = gCoreContext->GetNumSetting("PlaybackHue", 0); m_db_settings[kPictureAttribute_StudioLevels] = gCoreContext->GetNumSetting("PlaybackStudioLevels", 0); SetBrightness(m_db_settings[kPictureAttribute_Brightness]); SetContrast(m_db_settings[kPictureAttribute_Contrast]); SetSaturation(m_db_settings[kPictureAttribute_Colour]); SetHue(m_db_settings[kPictureAttribute_Hue]); SetStudioLevels(m_db_settings[kPictureAttribute_StudioLevels]); }
// timer expired, should I grow? bool CItem::Plant_OnTick() { ADDTOCALLSTACK("CItem::Plant_OnTick"); ASSERT(IsType(IT_CROPS) || IsType(IT_FOLIAGE)); // If it is in a container, kill it. if ( !IsTopLevel() ) return false; // Make sure the darn thing isn't moveable SetAttr(ATTR_MOVE_NEVER); Plant_SetTimer(); // No tree stuff below here if ( IsAttr(ATTR_INVIS) ) // if it's invis, take care of it here and return { SetHue(HUE_DEFAULT); ClrAttr(ATTR_INVIS); Update(); return true; } const CItemBase *pItemDef = Item_GetDef(); ITEMID_TYPE iGrowID = pItemDef->m_ttCrops.m_idGrow; if ( iGrowID == -1 ) { // Some plants generate a fruit on the ground when ripe. ITEMID_TYPE iFruitID = static_cast<ITEMID_TYPE>(RES_GET_INDEX(pItemDef->m_ttCrops.m_idGrow)); if ( m_itCrop.m_ReapFruitID ) iFruitID = static_cast<ITEMID_TYPE>(RES_GET_INDEX(m_itCrop.m_ReapFruitID)); if ( !iFruitID ) return true; // Put a fruit on the ground if not already here. CWorldSearch AreaItems(GetTopPoint()); for (;;) { CItem *pItem = AreaItems.GetItem(); if ( !pItem ) { CItem *pItemFruit = CItem::CreateScript(iFruitID); ASSERT(pItemFruit); pItemFruit->MoveToDecay(GetTopPoint(), 10 * g_Cfg.m_iDecay_Item); break; } if ( pItem->IsType(IT_FRUIT) || pItem->IsType(IT_REAGENT_RAW) ) break; } // NOTE: ??? The plant should cycle here as well ! iGrowID = pItemDef->m_ttCrops.m_idReset; } if ( iGrowID ) { SetID(static_cast<ITEMID_TYPE>(RES_GET_INDEX(iGrowID))); Update(); return true; } // some plants go dormant again ? // m_itCrop.m_Fruit_ID = iTemp; return true; }