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(); } } }
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); }
//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); }
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); }
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(); }