Example #1
0
        private void UpdateFormElements()
        {
            //Hide editor windows until we have a variable selected to work with
            grpNumericVariable.Hide();
            grpBooleanVariable.Hide();
            grpStringVariable.Hide();

            var varType = 0;

            if (cmbVariable.SelectedIndex > -1)
            {
                //Determine Variable Type
                if (rdoPlayerVariable.Checked)
                {
                    var playerVar = PlayerVariableBase.FromList(cmbVariable.SelectedIndex);
                    if (playerVar != null)
                    {
                        varType = (byte)playerVar.Type;
                    }
                }
                else if (rdoGlobalVariable.Checked)
                {
                    var serverVar = ServerVariableBase.FromList(cmbVariable.SelectedIndex);
                    if (serverVar != null)
                    {
                        varType = (byte)serverVar.Type;
                    }
                }
            }

            //Load the correct editor
            if (varType > 0)
            {
                switch ((VariableDataTypes)varType)
                {
                case VariableDataTypes.Boolean:
                    grpBooleanVariable.Show();
                    TryLoadBooleanMod(mMyCommand.Modification);

                    break;

                case VariableDataTypes.Integer:
                    grpNumericVariable.Show();
                    TryLoadNumericMod(mMyCommand.Modification);
                    UpdateNumericFormElements();

                    break;

                case VariableDataTypes.Number:
                    break;

                case VariableDataTypes.String:
                    grpStringVariable.Show();
                    TryLoadStringMod(mMyCommand.Modification);

                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
        }
Example #2
0
        private void SetupAmountInput()
        {
            grpManualAmount.Visible   = rdoManual.Checked;
            grpVariableAmount.Visible = !rdoManual.Checked;

            VariableTypes conditionVariableType;
            Guid          conditionVariableId;
            int           ConditionQuantity;

            switch (Condition.Type)
            {
            case ConditionTypes.HasFreeInventorySlots:
                conditionVariableType = ((HasFreeInventorySlots)Condition).VariableType;
                conditionVariableId   = ((HasFreeInventorySlots)Condition).VariableId;
                ConditionQuantity     = ((HasFreeInventorySlots)Condition).Quantity;
                break;

            case ConditionTypes.HasItem:
                conditionVariableType = ((HasItemCondition)Condition).VariableType;
                conditionVariableId   = ((HasItemCondition)Condition).VariableId;
                ConditionQuantity     = ((HasItemCondition)Condition).Quantity;
                break;

            default:
                conditionVariableType = VariableTypes.PlayerVariable;
                conditionVariableId   = Guid.Empty;
                ConditionQuantity     = 0;
                return;
            }

            cmbInvVariable.Items.Clear();
            if (rdoInvPlayerVariable.Checked)
            {
                cmbInvVariable.Items.AddRange(PlayerVariableBase.GetNamesByType(VariableDataTypes.Integer));
                // Do not update if the wrong type of variable is saved
                if (conditionVariableType == VariableTypes.PlayerVariable)
                {
                    var index = PlayerVariableBase.ListIndex(conditionVariableId, VariableDataTypes.Integer);
                    if (index > -1)
                    {
                        cmbInvVariable.SelectedIndex = index;
                    }
                    else
                    {
                        VariableBlank();
                    }
                }
                else
                {
                    VariableBlank();
                }
            }
            else
            {
                cmbInvVariable.Items.AddRange(ServerVariableBase.GetNamesByType(VariableDataTypes.Integer));
                // Do not update if the wrong type of variable is saved
                if (conditionVariableType == VariableTypes.ServerVariable)
                {
                    var index = ServerVariableBase.ListIndex(conditionVariableId, VariableDataTypes.Integer);
                    if (index > -1)
                    {
                        cmbInvVariable.SelectedIndex = index;
                    }
                    else
                    {
                        VariableBlank();
                    }
                }
                else
                {
                    VariableBlank();
                }
            }

            nudItemAmount.Value = Math.Max(1, ConditionQuantity);
        }
        public static bool CheckVariableComparison(
            VariableValue currentValue,
            IntegerVariableComparison comparison,
            Player player,
            Event instance
            )
        {
            long compareAgainst = 0;

            VariableValue compValue = null;

            if (comparison.CompareVariableId != Guid.Empty)
            {
                if (comparison.CompareVariableType == VariableTypes.PlayerVariable)
                {
                    compValue = player.GetVariableValue(comparison.CompareVariableId);
                }
                else if (comparison.CompareVariableType == VariableTypes.ServerVariable)
                {
                    compValue = ServerVariableBase.Get(comparison.CompareVariableId)?.Value;
                }
            }
            else
            {
                compValue         = new VariableValue();
                compValue.Integer = comparison.Value;
            }

            if (compValue == null)
            {
                compValue = new VariableValue();
            }

            if (currentValue.Type == 0)
            {
                currentValue.Integer = 0;
            }

            if (compValue.Type != currentValue.Type)
            {
                return(false);
            }

            var varVal = currentValue.Integer;

            compareAgainst = compValue.Integer;

            switch (comparison.Comparator) //Comparator
            {
            case VariableComparators.Equal:
                if (varVal == compareAgainst)
                {
                    return(true);
                }

                break;

            case VariableComparators.GreaterOrEqual:
                if (varVal >= compareAgainst)
                {
                    return(true);
                }

                break;

            case VariableComparators.LesserOrEqual:
                if (varVal <= compareAgainst)
                {
                    return(true);
                }

                break;

            case VariableComparators.Greater:
                if (varVal > compareAgainst)
                {
                    return(true);
                }

                break;

            case VariableComparators.Less:
                if (varVal < compareAgainst)
                {
                    return(true);
                }

                break;

            case VariableComparators.NotEqual:
                if (varVal != compareAgainst)
                {
                    return(true);
                }

                break;
            }

            return(false);
        }
Example #4
0
        //GameObjectPacket
        private static void HandlePacket(GameObjectPacket packet)
        {
            var id      = packet.Id;
            var deleted = packet.Deleted;
            var json    = "";

            if (!packet.Deleted)
            {
                json = packet.Data;
            }

            switch (packet.Type)
            {
            case GameObjectType.Animation:
                if (deleted)
                {
                    var anim = AnimationBase.Get(id);
                    anim.Delete();
                }
                else
                {
                    var anim = new AnimationBase(id);
                    anim.Load(json);
                    try
                    {
                        AnimationBase.Lookup.Set(id, anim);
                    }
                    catch (Exception exception)
                    {
                        Log.Error($"Another mystery NPE. [Lookup={AnimationBase.Lookup}]");
                        if (exception.InnerException != null)
                        {
                            Log.Error(exception.InnerException);
                        }

                        Log.Error(exception);
                        Log.Error($"{nameof(id)}={id},{nameof(anim)}={anim}");

                        throw;
                    }
                }

                break;

            case GameObjectType.Class:
                if (deleted)
                {
                    var cls = ClassBase.Get(id);
                    cls.Delete();
                }
                else
                {
                    var cls = new ClassBase(id);
                    cls.Load(json);
                    ClassBase.Lookup.Set(id, cls);
                }

                break;

            case GameObjectType.Item:
                if (deleted)
                {
                    var itm = ItemBase.Get(id);
                    itm.Delete();
                }
                else
                {
                    var itm = new ItemBase(id);
                    itm.Load(json);
                    ItemBase.Lookup.Set(id, itm);
                }

                break;

            case GameObjectType.Npc:
                if (deleted)
                {
                    var npc = NpcBase.Get(id);
                    npc.Delete();
                }
                else
                {
                    var npc = new NpcBase(id);
                    npc.Load(json);
                    NpcBase.Lookup.Set(id, npc);
                }

                break;

            case GameObjectType.Projectile:
                if (deleted)
                {
                    var proj = ProjectileBase.Get(id);
                    proj.Delete();
                }
                else
                {
                    var proj = new ProjectileBase(id);
                    proj.Load(json);
                    ProjectileBase.Lookup.Set(id, proj);
                }

                break;

            case GameObjectType.Quest:
                if (deleted)
                {
                    var qst = QuestBase.Get(id);
                    qst.Delete();
                }
                else
                {
                    var qst = new QuestBase(id);
                    qst.Load(json);
                    foreach (var tsk in qst.Tasks)
                    {
                        qst.OriginalTaskEventIds.Add(tsk.Id, tsk.CompletionEventId);
                    }

                    QuestBase.Lookup.Set(id, qst);
                }

                break;

            case GameObjectType.Resource:
                if (deleted)
                {
                    var res = ResourceBase.Get(id);
                    res.Delete();
                }
                else
                {
                    var res = new ResourceBase(id);
                    res.Load(json);
                    ResourceBase.Lookup.Set(id, res);
                }

                break;

            case GameObjectType.Shop:
                if (deleted)
                {
                    var shp = ShopBase.Get(id);
                    shp.Delete();
                }
                else
                {
                    var shp = new ShopBase(id);
                    shp.Load(json);
                    ShopBase.Lookup.Set(id, shp);
                }

                break;

            case GameObjectType.Spell:
                if (deleted)
                {
                    var spl = SpellBase.Get(id);
                    spl.Delete();
                }
                else
                {
                    var spl = new SpellBase(id);
                    spl.Load(json);
                    SpellBase.Lookup.Set(id, spl);
                }

                break;

            case GameObjectType.CraftTables:
                if (deleted)
                {
                    var cft = CraftingTableBase.Get(id);
                    cft.Delete();
                }
                else
                {
                    var cft = new CraftingTableBase(id);
                    cft.Load(json);
                    CraftingTableBase.Lookup.Set(id, cft);
                }

                break;

            case GameObjectType.Crafts:
                if (deleted)
                {
                    var cft = CraftBase.Get(id);
                    cft.Delete();
                }
                else
                {
                    var cft = new CraftBase(id);
                    cft.Load(json);
                    CraftBase.Lookup.Set(id, cft);
                }

                break;

            case GameObjectType.Map:
                //Handled in a different packet
                break;

            case GameObjectType.Event:
                var wasCommon = false;
                if (deleted)
                {
                    var evt = EventBase.Get(id);
                    wasCommon = evt.CommonEvent;
                    evt.Delete();
                }
                else
                {
                    var evt = new EventBase(id);
                    evt.Load(json);
                    wasCommon = evt.CommonEvent;
                    EventBase.Lookup.Set(id, evt);
                }

                if (!wasCommon)
                {
                    return;
                }

                break;

            case GameObjectType.PlayerVariable:
                if (deleted)
                {
                    var pvar = PlayerVariableBase.Get(id);
                    pvar.Delete();
                }
                else
                {
                    var pvar = new PlayerVariableBase(id);
                    pvar.Load(json);
                    PlayerVariableBase.Lookup.Set(id, pvar);
                }

                break;

            case GameObjectType.ServerVariable:
                if (deleted)
                {
                    var svar = ServerVariableBase.Get(id);
                    svar.Delete();
                }
                else
                {
                    var svar = new ServerVariableBase(id);
                    svar.Load(json);
                    ServerVariableBase.Lookup.Set(id, svar);
                }

                break;

            case GameObjectType.Tileset:
                var obj = new TilesetBase(id);
                obj.Load(json);
                TilesetBase.Lookup.Set(id, obj);
                if (Globals.HasGameData && !packet.AnotherFollowing)
                {
                    GameContentManager.LoadTilesets();
                }

                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            GameObjectUpdatedDelegate?.Invoke(packet.Type);
        }
Example #5
0
 private void SaveFormValues(HasFreeInventorySlots condition)
 {
     condition.Quantity     = (int)nudItemAmount.Value;
     condition.VariableType = rdoInvPlayerVariable.Checked ? VariableTypes.PlayerVariable : VariableTypes.ServerVariable;
     condition.UseVariable  = !rdoManual.Checked;
     condition.VariableId   = rdoInvPlayerVariable.Checked ? PlayerVariableBase.IdFromList(cmbInvVariable.SelectedIndex) : ServerVariableBase.IdFromList(cmbInvVariable.SelectedIndex);
 }
        private void btnSave_Click(object sender, EventArgs e)
        {
            mMyCommand.Add          = !Convert.ToBoolean(cmbAction.SelectedIndex);
            mMyCommand.ItemId       = ItemBase.IdFromList(cmbItem.SelectedIndex);
            mMyCommand.VariableType = rdoPlayerVariable.Checked ? VariableTypes.PlayerVariable : VariableTypes.ServerVariable;
            mMyCommand.UseVariable  = !rdoManual.Checked;
            mMyCommand.VariableId   = rdoPlayerVariable.Checked ? PlayerVariableBase.IdFromList(cmbVariable.SelectedIndex, VariableDataTypes.Integer) : ServerVariableBase.IdFromList(cmbVariable.SelectedIndex, VariableDataTypes.Integer);

            mMyCommand.Quantity     = (int)nudGiveTakeAmount.Value;
            mMyCommand.ItemHandling = (ItemHandling)cmbMethod.SelectedIndex;
            mEventEditor.FinishCommandEdit();
        }
        private IntegerVariableMod GetNumericVariableMod()
        {
            var mod = new IntegerVariableMod();

            if (optNumericSet.Checked && optNumericStaticVal.Checked)
            {
                mod.ModType = VariableMods.Set;
                mod.Value   = (int)nudNumericValue.Value;
            }
            else if (optNumericAdd.Checked && optNumericStaticVal.Checked)
            {
                mod.ModType = VariableMods.Add;
                mod.Value   = (int)nudNumericValue.Value;
            }
            else if (optNumericSubtract.Checked && optNumericStaticVal.Checked)
            {
                mod.ModType = VariableMods.Subtract;
                mod.Value   = (int)nudNumericValue.Value;
            }
            else if (optNumericRandom.Checked)
            {
                mod.ModType   = VariableMods.Random;
                mod.Value     = (int)nudLow.Value;
                mod.HighValue = (int)nudHigh.Value;
                if (mod.HighValue < mod.Value)
                {
                    var n = mod.Value;
                    mod.Value     = mod.HighValue;
                    mod.HighValue = n;
                }
            }
            else if (optNumericSystemTime.Checked)
            {
                mod.ModType = VariableMods.SystemTime;
            }
            else if (optNumericClonePlayerVar.Checked)
            {
                if (optNumericSet.Checked)
                {
                    mod.ModType = VariableMods.DupPlayerVar;
                }
                else if (optNumericAdd.Checked)
                {
                    mod.ModType = VariableMods.AddPlayerVar;
                }
                else
                {
                    mod.ModType = VariableMods.SubtractPlayerVar;
                }

                mod.DuplicateVariableId = PlayerVariableBase.IdFromList(cmbNumericClonePlayerVar.SelectedIndex);
            }
            else if (optNumericCloneGlobalVar.Checked)
            {
                if (optNumericSet.Checked)
                {
                    mod.ModType = VariableMods.DupGlobalVar;
                }
                else if (optNumericAdd.Checked)
                {
                    mod.ModType = VariableMods.AddGlobalVar;
                }
                else
                {
                    mod.ModType = VariableMods.SubtractGlobalVar;
                }

                mod.DuplicateVariableId = ServerVariableBase.IdFromList(cmbNumericCloneGlobalVar.SelectedIndex);
            }

            return(mod);
        }
        private void TryLoadNumericMod(VariableMod varMod)
        {
            if (varMod == null)
            {
                varMod = new IntegerVariableMod();
            }

            if (varMod.GetType() == typeof(IntegerVariableMod))
            {
                var mod = (IntegerVariableMod)varMod;

                switch (mod.ModType)
                {
                case VariableMods.Set:
                    optNumericSet.Checked       = true;
                    optNumericStaticVal.Checked = true;
                    nudNumericValue.Value       = mod.Value;

                    break;

                case VariableMods.Add:
                    optNumericAdd.Checked       = true;
                    optNumericStaticVal.Checked = true;
                    nudNumericValue.Value       = mod.Value;

                    break;

                case VariableMods.Subtract:
                    optNumericSubtract.Checked  = true;
                    optNumericStaticVal.Checked = true;
                    nudNumericValue.Value       = mod.Value;

                    break;

                case VariableMods.Random:
                    optNumericRandom.Checked = true;
                    nudLow.Value             = mod.Value;
                    nudHigh.Value            = mod.HighValue;

                    break;

                case VariableMods.SystemTime:
                    optNumericSystemTime.Checked = true;

                    break;

                case VariableMods.DupPlayerVar:
                    optNumericSet.Checked                  = true;
                    optNumericClonePlayerVar.Checked       = true;
                    cmbNumericClonePlayerVar.SelectedIndex = PlayerVariableBase.ListIndex(mod.DuplicateVariableId);

                    break;

                case VariableMods.DupGlobalVar:
                    optNumericSet.Checked                  = true;
                    optNumericCloneGlobalVar.Checked       = true;
                    cmbNumericCloneGlobalVar.SelectedIndex = ServerVariableBase.ListIndex(mod.DuplicateVariableId);

                    break;

                case VariableMods.AddPlayerVar:
                    optNumericAdd.Checked                  = true;
                    optNumericClonePlayerVar.Checked       = true;
                    cmbNumericClonePlayerVar.SelectedIndex = PlayerVariableBase.ListIndex(mod.DuplicateVariableId);

                    break;

                case VariableMods.AddGlobalVar:
                    optNumericAdd.Checked                  = true;
                    optNumericCloneGlobalVar.Checked       = true;
                    cmbNumericCloneGlobalVar.SelectedIndex = ServerVariableBase.ListIndex(mod.DuplicateVariableId);

                    break;

                case VariableMods.SubtractPlayerVar:
                    optNumericSubtract.Checked             = true;
                    optNumericClonePlayerVar.Checked       = true;
                    cmbNumericClonePlayerVar.SelectedIndex = PlayerVariableBase.ListIndex(mod.DuplicateVariableId);

                    break;

                case VariableMods.SubtractGlobalVar:
                    optNumericSubtract.Checked             = true;
                    optNumericCloneGlobalVar.Checked       = true;
                    cmbNumericCloneGlobalVar.SelectedIndex = ServerVariableBase.ListIndex(mod.DuplicateVariableId);

                    break;
                }
            }
        }
        private static string GetVariableModText(SetVariableCommand command, IntegerVariableMod mod)
        {
            var varvalue = "";

            switch (mod.ModType)
            {
            case Enums.VariableMods.Set:
                varvalue = Strings.EventCommandList.setvariable.ToString(mod.Value);

                break;

            case Enums.VariableMods.Add:
                varvalue = Strings.EventCommandList.addvariable.ToString(mod.Value);

                break;

            case Enums.VariableMods.Subtract:
                varvalue = Strings.EventCommandList.subtractvariable.ToString(mod.Value);

                break;

            case Enums.VariableMods.Random:
                varvalue = Strings.EventCommandList.randvariable.ToString(mod.Value, mod.HighValue);

                break;

            case Enums.VariableMods.SystemTime:
                varvalue = Strings.EventCommandList.systemtimevariable;

                break;

            case Enums.VariableMods.DupPlayerVar:
                varvalue = Strings.EventCommandList.dupplayervariable.ToString(
                    PlayerVariableBase.GetName(mod.DuplicateVariableId)
                    );

                break;

            case Enums.VariableMods.DupGlobalVar:
                varvalue = Strings.EventCommandList.dupglobalvariable.ToString(
                    ServerVariableBase.GetName(mod.DuplicateVariableId)
                    );

                break;

            case Enums.VariableMods.AddPlayerVar:
                varvalue = Strings.EventCommandList.addplayervariable.ToString(
                    PlayerVariableBase.GetName(mod.DuplicateVariableId)
                    );

                break;

            case Enums.VariableMods.AddGlobalVar:
                varvalue = Strings.EventCommandList.addglobalvariable.ToString(
                    ServerVariableBase.GetName(mod.DuplicateVariableId)
                    );

                break;

            case Enums.VariableMods.SubtractPlayerVar:
                varvalue = Strings.EventCommandList.subtractplayervariable.ToString(
                    PlayerVariableBase.GetName(mod.DuplicateVariableId)
                    );

                break;

            case Enums.VariableMods.SubtractGlobalVar:
                varvalue = Strings.EventCommandList.subtractglobalvariable.ToString(
                    ServerVariableBase.GetName(mod.DuplicateVariableId)
                    );

                break;
            }

            if (command.VariableType == VariableTypes.PlayerVariable)
            {
                return(Strings.EventCommandList.playervariable.ToString(
                           PlayerVariableBase.GetName(command.VariableId), varvalue
                           ));
            }

            if (command.VariableType == VariableTypes.ServerVariable)
            {
                return(Strings.EventCommandList.globalvariable.ToString(
                           ServerVariableBase.GetName(command.VariableId), varvalue
                           ));
            }

            return(Strings.EventCommandList.invalid);
        }
Example #10
0
 private void btnSave_Click(object sender, EventArgs e)
 {
     mMyCommand.Exp          = (long)nudExperience.Value;
     mMyCommand.VariableType = rdoPlayerVariable.Checked ? VariableTypes.PlayerVariable : VariableTypes.ServerVariable;
     mMyCommand.UseVariable  = !rdoManual.Checked;
     mMyCommand.VariableId   = rdoPlayerVariable.Checked ? PlayerVariableBase.IdFromList(cmbVariable.SelectedIndex, VariableDataTypes.Integer) : ServerVariableBase.IdFromList(cmbVariable.SelectedIndex, VariableDataTypes.Integer);
     mEventEditor.FinishCommandEdit();
 }