void SetEffectEntry(EffectEntry entry)
        {
            if (!IsSetup)
            {
                return;
            }

            // Assign effect template based on entry key
            EffectTemplate = GameManager.Instance.EntityEffectBroker.GetEffectTemplate(entry.Key);
            if (EffectTemplate == null)
            {
                throw new Exception(string.Format("SetEffectEntry() could not find effect key {0}", entry.Key));
            }

            // Assign settings to spinners
            durationBaseSpinner.Value      = entry.Settings.DurationBase;
            durationPlusSpinner.Value      = entry.Settings.DurationPlus;
            durationPerLevelSpinner.Value  = entry.Settings.DurationPerLevel;
            chanceBaseSpinner.Value        = entry.Settings.ChanceBase;
            chancePlusSpinner.Value        = entry.Settings.ChancePlus;
            chancePerLevelSpinner.Value    = entry.Settings.ChancePerLevel;
            magnitudeBaseMinSpinner.Value  = entry.Settings.MagnitudeBaseMin;
            magnitudeBaseMaxSpinner.Value  = entry.Settings.MagnitudeBaseMax;
            magnitudePlusMinSpinner.Value  = entry.Settings.MagnitudePlusMin;
            magnitudePlusMaxSpinner.Value  = entry.Settings.MagnitudePlusMax;
            magnitudePerLevelSpinner.Value = entry.Settings.MagnitudePerLevel;
        }
        void SetDefaults()
        {
            allowedTargets  = defaultTargetFlags;
            allowedElements = defaultElementFlags;
            selectedIcon    = new SpellIcon()
            {
                index = defaultSpellIcon,
            };
            editOrDeleteSlot = -1;

            for (int i = 0; i < maxEffectsPerSpell; i++)
            {
                effectEntries[i] = new EffectEntry();
            }

            if (IsSetup)
            {
                effect1NameLabel.Text = string.Empty;
                effect2NameLabel.Text = string.Empty;
                effect3NameLabel.Text = string.Empty;
                spellNameLabel.Text   = string.Empty;
                UpdateAllowedButtons();
                SetIcon(selectedIcon);
                SetStatusLabels();
            }
        }
        EffectEntry GetEffectEntry()
        {
            // Must have an effect template set
            if (EffectTemplate == null)
            {
                throw new Exception(noEffectTemplateError);
            }

            // Create settings for effect
            EffectSettings effectSettings = new EffectSettings();

            if (IsSetup)
            {
                // Assign from UI control when setup
                effectSettings.DurationBase      = durationBaseSpinner.Value;
                effectSettings.DurationPlus      = durationPlusSpinner.Value;
                effectSettings.DurationPerLevel  = durationPerLevelSpinner.Value;
                effectSettings.ChanceBase        = chanceBaseSpinner.Value;
                effectSettings.ChancePlus        = chancePlusSpinner.Value;
                effectSettings.ChancePerLevel    = chancePerLevelSpinner.Value;
                effectSettings.MagnitudeBaseMin  = magnitudeBaseMinSpinner.Value;
                effectSettings.MagnitudeBaseMax  = magnitudeBaseMaxSpinner.Value;
                effectSettings.MagnitudePlusMin  = magnitudePlusMinSpinner.Value;
                effectSettings.MagnitudePlusMax  = magnitudePlusMaxSpinner.Value;
                effectSettings.MagnitudePerLevel = magnitudePerLevelSpinner.Value;
            }

            // Create entry
            EffectEntry effectEntry = new EffectEntry();

            effectEntry.Key      = EffectTemplate.Key;
            effectEntry.Settings = effectSettings;

            return(effectEntry);
        }
        private void PopulateStore()
        {
            List <EffectEntry> effects = new List <EffectEntry>();

            foreach (Type i in Registry.EffectTypes)
            {
                EffectEntry entry = EffectEntry.Create(i);

                if (entry != null)
                {
                    effects.Add(entry);
                }
            }

            EffectEntry.Sort(effects);

            string category = null;

            TreeIter node = TreeIter.Zero;

            foreach (EffectEntry i in effects)
            {
                if (i.Category != category)
                {
                    category = i.Category;

                    node = this.mEffectStore.AppendValues(new CategoryDivider(category));
                }

                this.mEffectStore.AppendValues(node, i);
            }
        }
        public void LoadFromItem(EffectEntry effectEntry)
        {
            loadingInternally = true;
            try
            {
                if (effectEntry.EffectKind == EffectKind.Animation)
                {
                    rbAnimation.IsChecked = true;
                    LoadFromTarget(effectEntry.AnimationEffect.target);
                }
                else if (effectEntry.EffectKind == EffectKind.Emitter)
                {
                    rbEmitter.IsChecked = true;
                    LoadFromTarget(effectEntry.EmitterEffect.target);
                }
                else if (effectEntry.EffectKind == EffectKind.SoundEffect)
                {
                    rbSoundEffect.IsChecked = true;
                }

                LoadFromAnimation(effectEntry.AnimationEffect);
                LoadFromEmitter(effectEntry.EmitterEffect);
                LoadFromSoundEffect(effectEntry.SoundEffect);
            }
            finally
            {
                loadingInternally = false;
            }
        }
        public override void LoadXML(XmlNode element, FileVersion version)
        {
            try {
                base.LoadXML(element, version);

                ImageName = ReadElement(element, "ImageName");
                ItmKind   = (ItemKind)Enum.Parse(typeof(ItemKind), ReadElement(element, "Kind"));

                string signs = ReadElement(element, "Signs");
                Flags = new ItemFlags(signs);
                string newSigns = Flags.Signature;
                if (!signs.Equals(newSigns))
                {
                    throw new Exception("ItemSigns not equals (" + ImageName + ")");
                }

                EqKind    = (BodypartType)Enum.Parse(typeof(BodypartType), ReadElement(element, "eqKind"));
                Frequency = Convert.ToSByte(ReadElement(element, "Frequency"));
                Satiety   = Convert.ToInt16(ReadElement(element, "Satiety"));
                Price     = Convert.ToInt16(ReadElement(element, "Price"));
                Weight    = (float)ConvertHelper.ParseFloat(ReadElement(element, "Weight"), 0.0f, true);

                XmlNode ael = element.SelectSingleNode("Attributes");
                for (int i = ItemAttribute.ia_First; i <= ItemAttribute.ia_Last; i++)
                {
                    string atSign = dbItemAttributes[i - 1];
                    Attributes[i - 1] = Convert.ToInt32(ReadElement(ael, atSign));
                }

                XmlNodeList nl = element.SelectSingleNode("Effects").ChildNodes;
                Effects = new EffectEntry[nl.Count];
                for (int i = 0; i < nl.Count; i++)
                {
                    XmlNode n = nl[i];
                    Effects[i]         = new EffectEntry();
                    Effects[i].EffID   = (EffectID)Enum.Parse(typeof(EffectID), n.Attributes["EffectID"].InnerText);
                    Effects[i].ExtData = Convert.ToInt32(n.Attributes["ExtData"].InnerText);
                }

                nl       = element.SelectSingleNode("Contents").ChildNodes;
                Contents = new ContentsEntry[nl.Count];
                for (int i = 0; i < nl.Count; i++)
                {
                    XmlNode n = nl[i];
                    Contents[i]        = new ContentsEntry();
                    Contents[i].ItemID = n.Attributes["ItemID"].InnerText;
                    Contents[i].Chance = Convert.ToInt32(n.Attributes["Chance"].InnerText);
                }

                Material = (MaterialKind)Enum.Parse(typeof(MaterialKind), ReadElement(element, "Material"));

                FramesCount    = Convert.ToSByte(ReadElement(element, "FramesCount"));
                BonusRange.Min = Convert.ToInt32(ReadElement(element, "BonusRange_Min"));
                BonusRange.Max = Convert.ToInt32(ReadElement(element, "BonusRange_Max"));
            } catch (Exception ex) {
                Logger.Write("ItemEntry.loadXML(): " + ex.Message);
                throw ex;
            }
        }
 void InitEffectSlots()
 {
     effectEntries = new EffectEntry[maxEffectsPerSpell];
     for (int i = 0; i < maxEffectsPerSpell; i++)
     {
         effectEntries[i] = new EffectEntry();
     }
 }
		private bool GetSelectedEffectEntry(out EffectEntry entry) {
			entry = null;
			
			TreeIter i;
			
			if (!this.EffectList.Selection.GetSelected(out i))
				return false;
			
			entry = this.mEffectStore.GetValue(i, 0) as EffectEntry;
			
			return entry != null;
		}
        void ClearPendingDeleteEffectSlot()
        {
            if (editOrDeleteSlot == -1)
            {
                return;
            }

            effectEntries[editOrDeleteSlot] = new EffectEntry();
            UpdateSlotText(editOrDeleteSlot, string.Empty);
            editOrDeleteSlot = -1;
            UpdateAllowedButtons();
        }
        private bool GetSelectedEffectEntry(out EffectEntry entry)
        {
            entry = null;

            TreeIter i;

            if (!this.EffectList.Selection.GetSelected(out i))
            {
                return(false);
            }

            entry = this.mEffectStore.GetValue(i, 0) as EffectEntry;

            return(entry != null);
        }
示例#11
0
        TimeSpan GetEffectDuration(EffectEntry effectEntry)
        {
            switch (effectEntry.EffectKind)
            {
            case EffectKind.Animation:
                return(GetAnimationDuration(effectEntry.AnimationEffect.spriteName));

            case EffectKind.Emitter:
                return(GetEmitterDuration(effectEntry.EmitterEffect));;

            case EffectKind.SoundEffect:
                return(GetSoundFileDuration(effectEntry.SoundEffect.soundFileName));
            }
            return(TimeSpan.FromSeconds(1));
        }
示例#12
0
        private void EffectBuilder_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            if (loadingInternally)
            {
                return;
            }
            if (!(sender is EffectBuilder effectBuilder))
            {
                return;
            }

            EffectEntry effectEntry = effectBuilder.EffectEntry;

            if (effectEntry == null)
            {
                return;
            }
            SetSelectedColorByEffectType(effectEntry.EffectKind);
            if (effectBuilder.EffectKind == EffectKind.SoundEffect)
            {
                string soundFileName = effectEntry.SoundEffect.soundFileName;
                AdjustSelectedEntryDuration(GetSoundFileDuration(soundFileName), true, soundFileName);
            }
            else if (effectBuilder.EffectKind == EffectKind.Animation)
            {
                AnimationEffect animationEffect = effectEntry.AnimationEffect;
                TimeSpan        duration        = GetAnimationDuration(animationEffect.spriteName);
                if (animationEffect.name != "")
                {
                    AdjustSelectedEntryDuration(duration, false, animationEffect.name);
                }
                else
                {
                    AdjustSelectedEntryDuration(duration, false, animationEffect.spriteName);
                }
            }
            else if (effectBuilder.EffectKind == EffectKind.Emitter)
            {
                EmitterEffect emitterEffect = effectEntry.EmitterEffect;
                TimeSpan      duration      = GetEmitterDuration(emitterEffect);
                AdjustSelectedEntryDuration(duration, false, null);
            }

            OnPropertyChanged();
        }
示例#13
0
    private void ResponseFeed(ScPetFeed msg)
    {
        if (msg == null)
        {
            return;
        }

        if (msg.response == 0)
        {
            ps.PlayUniformAnimToPreview(parentWindow.SelectPetInfo.GetExpProcess(), 1, Refresh);

            if (curMatrial.ItemCache != null && curMatrial.ItemCache.num > 0)
            {
                var maxLimit = CalcLimitMax();
                if (maxLimit == 0)
                {
                    moduleGlobal.ShowMessage(9707);
                }

                ValueInput.SetLimit(1, (int)Mathf.Min(curMatrial.ItemCache.num, maxLimit));
            }
            else
            {
                ValueInput.SetLimit(0, 0);
            }
            ValueInput.SetValue(0);
            RefreshFeedState();

            var entry = new EffectEntry()
            {
                levelUp = levelUp
            };
            levelUp         = false;
            entry.coroutine = global::Root.instance.StartCoroutine(PlayEffect(entry));
            effectEntryList.Add(entry);
        }
        else
        {
            moduleGlobal.ShowMessage(9702, msg.response);
            Refresh();
        }
    }
示例#14
0
        private void CreateNewEffect(EffectKind effectKind)
        {
            EffectEntry   newEffect = new EffectEntry(effectKind, GetEntryName());
            TimeLineEntry entry     = AddEntry(TimeSpan.Zero, TimeSpan.FromSeconds(1), GetEntryName(), newEffect);

            entry.PropertyChanged += Entry_PropertyChanged;

            tlEffects.SelectedItem = entry;
            SetSelectedColorByEffectType(effectKind);

            loadingInternally = true;
            try
            {
                effectBuilder.EffectEntry = newEffect;
            }
            finally
            {
                loadingInternally = false;
            }
            OnPropertyChanged();
        }
示例#15
0
    private IEnumerator PlayEffect(EffectEntry entry)
    {
        var t = flyEffect.GetChild(matrialDataSource.GetItemIndex(curMatrial.PropItem));

        entry.go = PerfectInstantiate(t?.gameObject);
        entry.go.SafeSetActive(true);
        yield return(new WaitForSeconds(0.9f));

        entry.go1 = PerfectInstantiate(feedEffect?.gameObject);
        entry.go1.SafeSetActive(true);

        if (entry.levelUp)
        {
            entry.levelUpEffect = PerfectInstantiate(levelUpEffect?.gameObject);
            entry.levelUpEffect.SafeSetActive(true);
        }

        yield return(new WaitForSeconds(3));

        entry.Destory();
        effectEntryList.Remove(entry);
    }
        public void SaveToItem(EffectEntry effectEntry, string propertyName)
        {
            if (rbAnimation.IsChecked ?? false)
            {
                effectEntry.EffectKind = EffectKind.Animation;
                if (propertyName != STR_EffectKind)
                {
                    SaveToTarget(effectEntry.AnimationEffect.target);
                }
                else
                {
                    LoadFromTarget(effectEntry.AnimationEffect.target);
                }
            }

            if (rbEmitter.IsChecked ?? false)
            {
                effectEntry.EffectKind = EffectKind.Emitter;
                effectEntry.EmitterEffect.effectKind = EffectKind.Emitter;
                if (propertyName != STR_EffectKind)
                {
                    SaveToTarget(effectEntry.EmitterEffect.target);
                }
                else
                {
                    LoadFromTarget(effectEntry.EmitterEffect.target);
                }
            }

            if (rbSoundEffect.IsChecked ?? false)
            {
                effectEntry.EffectKind = EffectKind.SoundEffect;
            }
            SaveToSound(effectEntry.SoundEffect);
            SaveToAnimation(effectEntry.AnimationEffect);
            SaveToEmitter(effectEntry.EmitterEffect);
        }
示例#17
0
 void ClearEffectSlot(int slot)
 {
     effectEntries[slot] = new EffectEntry();
     UpdateSlotText(slot, string.Empty);
     UpdateAllowedButtons();
 }
            private EffectEntry ParseEffect()
            {
                EffectEntry eff = new EffectEntry();

                while (_reader.ReadAttribute())
                {
                    if (_reader.Name.Equals("id", true))
                        eff._id = (string)_reader.Value;
                    else if (_reader.Name.Equals("name", true))
                        eff._name = (string)_reader.Value;
                }

                while (_reader.BeginElement())
                {
                    //Only common is supported
                    if (_reader.Name.Equals("profile_COMMON", true))
                        while (_reader.BeginElement())
                        {
                            if (_reader.Name.Equals("newparam", true))
                                eff._newParams.Add(ParseNewParam());
                            else if (_reader.Name.Equals("technique", true))
                            {
                                while (_reader.BeginElement())
                                {
                                    if (_reader.Name.Equals("phong", true))
                                        eff._shader = ParseShader(ShaderType.phong);
                                    else if (_reader.Name.Equals("lambert", true))
                                        eff._shader = ParseShader(ShaderType.lambert);
                                    else if (_reader.Name.Equals("blinn", true))
                                        eff._shader = ParseShader(ShaderType.blinn);

                                    _reader.EndElement();
                                }
                            }
                            _reader.EndElement();
                        }

                    _reader.EndElement();
                }
                return eff;
            }
示例#19
0
        public TimeLineEffect AddEntry(TimeSpan start, TimeSpan duration, string name, EffectEntry data)
        {
            TimeLineEffect timeLineEntry = new TimeLineEffect()
            {
                Start = start, Duration = duration, Name = name, Effect = data, Index = Entries.Count
            };

            Entries.Add(timeLineEntry);
            return(timeLineEntry);
        }