예제 #1
0
        public static DesireCollection Build()
        {
            DesireCollection collection = new DesireCollection();

            /* Desordenamos los deseos, pero mantenemos el Brass Ring en primer lugar,
             * ya que es el item que nos da Gareth al principio de la Quest, y el Iron
             * Chain en último lugar, ya que es el que debemos devolverle al final. */
            DesireDefinition[] desires = Utility.Shuffle(BaseErrand.Desires, 1, BaseErrand.Desires.Length - 2);

            /* Desordenamos los NPCs, pero mantenemos a Sean en último lugar, ya que él
             * da siempre el último item que debemos devolverle a Gareth. */
            Type[] errandTypes = Utility.Shuffle(BaseErrand.ErrandTypes, 0, BaseErrand.ErrandTypes.Length - 1);

            for (int i = 0; i < errandTypes.Length; i++)
            {
                Type             errandType      = errandTypes[i];
                DesireDefinition desire          = desires[i];
                DesireDefinition gift            = desires[i + 1];
                bool             givesDesireInfo = Utility.RandomBool();

                collection.m_Desires.Add(errandType, new DesireInfo(desire, gift, givesDesireInfo));
            }

            /* Sean siempre da información sobre lo que quiere, no sobre lo que da,
             * ya que siempre da el Iron Chain. */
            collection.m_Desires[typeof(Sean)].GivesDesireInfo = true;

            return(collection);
        }
예제 #2
0
        public DesireInfo(GenericReader reader)
        {
            m_Desire = DesireDefinition.Deserialize(BaseErrand.Desires, reader);
            m_Gift   = DesireDefinition.Deserialize(BaseErrand.Desires, reader);

            m_GivesDesireInfo = reader.ReadBool();
            m_GiftGiven       = reader.ReadBool();
        }
예제 #3
0
 public DesireInfo(DesireDefinition desire, DesireDefinition gift, bool givesDesireInfo)
 {
     m_Desire          = desire;
     m_Gift            = gift;
     m_GivesDesireInfo = givesDesireInfo;
 }
예제 #4
0
        public DesireInfo( GenericReader reader )
        {
            m_Desire = DesireDefinition.Deserialize( BaseErrand.Desires, reader );
            m_Gift = DesireDefinition.Deserialize( BaseErrand.Desires, reader );

            m_GivesDesireInfo = reader.ReadBool();
            m_GiftGiven = reader.ReadBool();
        }
예제 #5
0
 public DesireInfo( DesireDefinition desire, DesireDefinition gift, bool givesDesireInfo )
 {
     m_Desire = desire;
     m_Gift = gift;
     m_GivesDesireInfo = givesDesireInfo;
 }
예제 #6
0
        public void Serialize( DesireDefinition[] referenceTable, GenericWriter writer )
        {
            for ( int i = 0; i < referenceTable.Length; i++ )
            {
                if ( this == referenceTable[i] )
                {
                    writer.WriteEncodedInt( 0x01 );
                    writer.WriteEncodedInt( i );
                    return;
                }
            }

            writer.WriteEncodedInt( 0x00 );
        }
예제 #7
0
        public static DesireDefinition Deserialize( DesireDefinition[] referenceTable, GenericReader reader )
        {
            int encoding = reader.ReadEncodedInt();

            if ( encoding == 0x01 )
                return referenceTable[reader.ReadEncodedInt()];

            return null;
        }