123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- class FryingPan : Inventory_Base
- {
- // Cooking data
- protected CookingMethodType m_CookingMethod;
- protected bool m_CookingIsDone;
- protected bool m_CookingIsEmpty;
- protected bool m_CookingIsBurned;
- // Particles
- protected Particle m_ParticleCooking;
- protected int m_ParticlePlaying = ParticleList.INVALID;
- protected int PARTICLE_BAKING_START = ParticleList.COOKING_BAKING_START;
- protected int PARTICLE_BAKING_DONE = ParticleList.COOKING_BAKING_DONE;
- protected int PARTICLE_DRYING_START = ParticleList.COOKING_DRYING_START;
- protected int PARTICLE_DRYING_DONE = ParticleList.COOKING_DRYING_DONE;
- protected int PARTICLE_BURNING_DONE = ParticleList.COOKING_BURNING_DONE;
- void FryingPan()
- {
- RegisterNetSyncVariableInt( "m_CookingMethod", CookingMethodType.NONE, CookingMethodType.COUNT );
- RegisterNetSyncVariableBool( "m_CookingIsDone" );
- RegisterNetSyncVariableBool( "m_CookingIsEmpty" );
- RegisterNetSyncVariableBool( "m_CookingIsBurned" );
- }
- void ~FryingPan() {}
- override bool IsContainer()
- {
- return true;
- }
-
- override bool IsCookware()
- {
- return true;
- }
-
- override bool CanHaveTemperature()
- {
- return true;
- }
-
- override float GetQuantityNormalizedScripted()
- {
- return 1.0;
- }
- override bool CanPutInCargo( EntityAI parent )
- {
- if ( !super.CanPutInCargo( parent ) )
- return false;
-
- if ( parent && IsCargoException4x3( parent ) )
- return false;
-
- //is 'parent' somewhere in cargo?
- if (parent && !parent.GetInventory().AreChildrenAccessible())
- return false;
- return true;
- }
- override bool CanReceiveItemIntoCargo( EntityAI item )
- {
- if ( !super.CanReceiveItemIntoCargo( item ) )
- return false;
-
- if ( IsCargoException4x3( item ) )
- return false;
-
- //is 'this' somewhere in cargo?
- if (!GetInventory().AreChildrenAccessible())
- return false;
-
- //can 'this' be attached to the item (->assumed smaller size than item)?
- int slotId;
- for (int i = 0; i < GetInventory().GetSlotIdCount(); i++)
- {
- slotId = GetInventory().GetSlotId(i);
- if (item.GetInventory().HasAttachmentSlot(slotId))
- {
- //Print("CanReceiveItemIntoCargo | item " + item + " matches in slot name: " + InventorySlots.GetSlotName(slotId) + " of " + this);
- return false;
- }
- }
-
- return true;
- }
-
- override bool CanLoadItemIntoCargo( EntityAI item )
- {
- if ( !super.CanLoadItemIntoCargo( item ) )
- return false;
- if ( IsCargoException4x3( item ) )
- return false;
-
- //can 'this' be attached to the item (->assumed smaller size than item)?
- int slotId;
- for (int i = 0; i < GetInventory().GetSlotIdCount(); i++)
- {
- slotId = GetInventory().GetSlotId(i);
- if (item.GetInventory().HasAttachmentSlot(slotId))
- {
- //Print("CanLoadItemIntoCargo | item " + item + " matches in slot name: " + InventorySlots.GetSlotName(slotId) + " of " + this);
- return false;
- }
- }
- return true;
- }
- override void SetActions()
- {
- super.SetActions();
- AddAction(ActionCreateIndoorFireplace);
- AddAction(ActionCreateIndoorOven);
- AddAction(ActionAttach);
- AddAction(ActionDetach);
- }
- override void EEDelete( EntityAI parent )
- {
- super.EEDelete( parent );
-
- //remove audio visuals
- RemoveAudioVisuals();
- }
- void Synchronize()
- {
- if ( GetGame() && GetGame().IsServer() )
- {
- SetSynchDirty();
- }
- }
- override void OnVariablesSynchronized()
- {
- super.OnVariablesSynchronized();
-
- //refresh audio visuals
- if ( m_CookingMethod != CookingMethodType.NONE )
- {
- RefreshAudioVisuals( m_CookingMethod, m_CookingIsDone, m_CookingIsEmpty, m_CookingIsBurned );
- }
- else
- {
- RemoveAudioVisuals();
- }
- }
- override void RemoveAudioVisualsOnClient()
- {
- m_CookingMethod = CookingMethodType.NONE;
-
- Synchronize();
- }
- override void RefreshAudioVisualsOnClient( CookingMethodType cooking_method, bool is_done, bool is_empty, bool is_burned )
- {
- m_CookingMethod = cooking_method;
- m_CookingIsDone = is_done;
- m_CookingIsEmpty = is_empty;
- m_CookingIsBurned = is_burned;
- Synchronize();
- }
- void RefreshAudioVisuals( CookingMethodType cooking_method, bool is_done, bool is_empty, bool is_burned )
- {
- int particleId;
-
- //if at least one of the food items is burned
- if (is_burned)
- {
- particleId = PARTICLE_BURNING_DONE;
- }
- //proper cooking methods
- else
- {
- if (cooking_method == CookingMethodType.BAKING)
- {
- if (is_done)
- particleId = PARTICLE_BAKING_DONE;
- else
- particleId = PARTICLE_BAKING_START;
- }
- else if (cooking_method == CookingMethodType.DRYING)
- {
- if (is_done)
- particleId = PARTICLE_DRYING_DONE;
- else
- particleId = PARTICLE_DRYING_START;
- }
- }
-
- ParticleCookingStart(particleId);
- }
-
- void RemoveAudioVisuals()
- {
- ParticleCookingStop();
- }
- void ParticleCookingStart( int particle_id )
- {
- if ( m_ParticlePlaying != particle_id )
- {
- //stop previous particles
- ParticleCookingStop();
-
- //create new
- if ( GetGame() && ( !GetGame().IsDedicatedServer() ) )
- {
- vector local_pos = MiscGameplayFunctions.GetSteamPosition( GetHierarchyParent() );
- //TODO set steam position to pot (proxy) memory point (new hierarchy needed)
- //m_ParticleCooking = Particle.Create( particle_id, this, local_pos );
- m_ParticleCooking = ParticleManager.GetInstance().PlayInWorld( particle_id, local_pos );
- m_ParticlePlaying = particle_id;
- }
- }
- }
- void ParticleCookingStop()
- {
- if ( m_ParticleCooking && GetGame() && ( !GetGame().IsDedicatedServer() ) )
- {
- m_ParticleCooking.Stop();
- m_ParticleCooking = NULL;
- m_ParticlePlaying = ParticleList.INVALID;
- }
- }
- /////////////////////////////////////////////////
- // DEPRECATED STUFF
- // Sounds
- protected SoundOnVehicle m_SoundCooking; //! DEPRECATED
- protected EffectSound m_SoundEffectCooking; //! DEPRECATED
- protected string m_SoundPlaying = ""; //! DEPRECATED
- const string SOUND_BAKING_START = "Baking_SoundSet"; //! DEPRECATED
- const string SOUND_BAKING_DONE = "Baking_Done_SoundSet"; //! DEPRECATED
- const string SOUND_DRYING_START = "Drying_SoundSet"; //! DEPRECATED
- const string SOUND_DRYING_DONE = "Drying_Done_SoundSet"; //! DEPRECATED
- const string SOUND_BURNING_DONE = "Food_Burning_SoundSet"; //! DEPRECATED
-
- protected void SoundCookingStart(string sound_name); //! DEPRECATED
- protected void SoundCookingStop(); //! DEPRECATED
- }
|