private void btnAddFolder_Click(object sender, EventArgs e)
        {
            var folderName = "";
            var result     = DarkInputBox.ShowInformation(
                Strings.VariableEditor.folderprompt, Strings.VariableEditor.foldertitle, ref folderName,
                DarkDialogButton.OkCancel
                );

            if (result == DialogResult.OK && !string.IsNullOrEmpty(folderName))
            {
                if (!cmbFolder.Items.Contains(folderName))
                {
                    if (lstVariables.SelectedNode != null && lstVariables.SelectedNode.Tag != null)
                    {
                        if (rdoPlayerVariables.Checked)
                        {
                            var obj = PlayerVariableBase.Get((Guid)lstVariables.SelectedNode.Tag);
                            obj.Folder = folderName;
                            mExpandedFolders.Add(folderName);
                        }
                        else if (rdoGlobalVariables.Checked)
                        {
                            var obj = ServerVariableBase.Get((Guid)lstVariables.SelectedNode.Tag);
                            obj.Folder = folderName;
                            mGlobalExpandedFolders.Add(folderName);
                        }

                        InitEditor();
                        cmbFolder.Text = folderName;
                    }
                }
            }
        }
Exemplo n.º 2
0
        private void AssignEditorItem(Guid id)
        {
            if (id != Guid.Empty)
            {
                IDatabaseObject obj = null;
                if (rdoPlayerVariables.Checked)
                {
                    obj = PlayerVariableBase.Get(id);
                }
                else if (rdoGlobalVariables.Checked)
                {
                    obj = ServerVariableBase.Get(id);
                }

                if (obj != null)
                {
                    mEditorItem = obj;
                    if (!mChanged.Contains(obj))
                    {
                        mChanged.Add(obj);
                        obj.MakeBackup();
                    }
                }
            }
            UpdateEditor();
        }
Exemplo n.º 3
0
        public object PlayerVariableSet(LookupKey lookupKey, Guid variableId, [FromBody] VariableValue value)
        {
            if (lookupKey.IsInvalid)
            {
                return(Request.CreateErrorResponse(
                           HttpStatusCode.BadRequest, lookupKey.IsIdInvalid ? @"Invalid player id." : @"Invalid player name."
                           ));
            }

            if (variableId == Guid.Empty || PlayerVariableBase.Get(variableId) == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, $@"Invalid variable id ${variableId}."));
            }

            var(client, player) = Player.Fetch(lookupKey);
            if (player == null)
            {
                return(Request.CreateErrorResponse(
                           HttpStatusCode.NotFound,
                           lookupKey.HasId
                        ? $@"No player with id '{lookupKey.Id}'."
                        : $@"No player with name '{lookupKey.Name}'."
                           ));
            }

            var variable = player.GetVariable(variableId, true);

            if (variable?.Value != null)
            {
                variable.Value.Value = value.Value;
            }

            return(variable);
        }
        private void LoadVariableList()
        {
            cmbVariable.Items.Clear();
            if (rdoPlayerVariables.Checked)
            {
                cmbVariable.Items.AddRange(PlayerVariableBase.Names);
                cmbVariable.SelectedIndex = PlayerVariableBase.ListIndex(mMyCommand.VariableId);

                if (cmbVariable.SelectedIndex != -1)
                {
                    UpdateMinMaxValues(
                        PlayerVariableBase.Get(PlayerVariableBase.IdFromList(cmbVariable.SelectedIndex)).Type
                        );
                }
            }
            else
            {
                cmbVariable.Items.AddRange(ServerVariableBase.Names);
                cmbVariable.SelectedIndex = ServerVariableBase.ListIndex(mMyCommand.VariableId);

                if (cmbVariable.SelectedIndex != -1)
                {
                    UpdateMinMaxValues(
                        ServerVariableBase.Get(ServerVariableBase.IdFromList(cmbVariable.SelectedIndex)).Type
                        );
                }
            }
        }
        public object PlayerVariableSet(LookupKey lookupKey, Guid variableId, [FromBody] VariableValue value)
        {
            if (lookupKey.IsInvalid)
            {
                return(Request.CreateErrorResponse(
                           HttpStatusCode.BadRequest, lookupKey.IsIdInvalid ? @"Invalid player id." : @"Invalid player name."
                           ));
            }

            if (variableId == Guid.Empty || PlayerVariableBase.Get(variableId) == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, $@"Invalid variable id ${variableId}."));
            }

            var(client, player) = Player.Fetch(lookupKey);
            if (player == null)
            {
                return(Request.CreateErrorResponse(
                           HttpStatusCode.NotFound,
                           lookupKey.HasId
                        ? $@"No player with id '{lookupKey.Id}'."
                        : $@"No player with name '{lookupKey.Name}'."
                           ));
            }

            var variable = player.GetVariable(variableId, true);

            var changed = true;

            if (variable?.Value != null)
            {
                if (variable?.Value?.Value != value.Value)
                {
                    changed = false;
                }
                variable.Value.Value = value.Value;
            }

            if (changed)
            {
                var plyr = Player.FindOnline(player.Id);
                if (plyr != null)
                {
                    player.StartCommonEventsWithTrigger(CommonEventTrigger.PlayerVariableChange, "", variableId.ToString());
                }
            }

            using (var context = DbInterface.CreatePlayerContext(false))
            {
                context.Update(player);
                context.SaveChanges();
            }

            return(variable);
        }
 private void cmbVariable_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (rdoPlayerVariables.Checked)
     {
         UpdateMinMaxValues(
             PlayerVariableBase.Get(PlayerVariableBase.IdFromList(cmbVariable.SelectedIndex)).Type
             );
     }
     else
     {
         UpdateMinMaxValues(
             ServerVariableBase.Get(ServerVariableBase.IdFromList(cmbVariable.SelectedIndex)).Type
             );
     }
 }
 private void txtId_TextChanged(object sender, EventArgs e)
 {
     if (lstVariables.SelectedNode != null && lstVariables.SelectedNode.Tag != null)
     {
         if (rdoPlayerVariables.Checked)
         {
             var obj = PlayerVariableBase.Get((Guid)lstVariables.SelectedNode.Tag);
             obj.TextId = txtId.Text;
         }
         else if (rdoGlobalVariables.Checked)
         {
             var obj = ServerVariableBase.Get((Guid)lstVariables.SelectedNode.Tag);
             obj.TextId = txtId.Text;
         }
     }
 }
        private void cmbFolder_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lstVariables.SelectedNode != null && lstVariables.SelectedNode.Tag != null)
            {
                if (rdoPlayerVariables.Checked)
                {
                    var obj = PlayerVariableBase.Get((Guid)lstVariables.SelectedNode.Tag);
                    obj.Folder = cmbFolder.Text;
                }
                else if (rdoGlobalVariables.Checked)
                {
                    var obj = ServerVariableBase.Get((Guid)lstVariables.SelectedNode.Tag);
                    obj.Folder = cmbFolder.Text;
                }

                InitEditor();
            }
        }
 private void UpdateSelection()
 {
     if (lstVariables.SelectedNode != null && lstVariables.SelectedNode.Tag != null)
     {
         grpEditor.Show();
         if (rdoPlayerVariables.Checked)
         {
             var obj = PlayerVariableBase.Get((Guid)lstVariables.SelectedNode.Tag);
             lstVariables.SelectedNode.Text = obj.Name;
             grpValue.Hide();
         }
         else if (rdoGlobalVariables.Checked)
         {
             var obj = ServerVariableBase.Get((Guid)lstVariables.SelectedNode.Tag);
             lstVariables.SelectedNode.Text = obj.Name + " = " + obj.Value.ToString(obj.Type);
         }
     }
 }
        private void cmbVariableType_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lstVariables.SelectedNode != null && lstVariables.SelectedNode.Tag != null)
            {
                if (rdoPlayerVariables.Checked)
                {
                    var obj = PlayerVariableBase.Get((Guid)lstVariables.SelectedNode.Tag);
                    obj.Type = (VariableDataTypes)(cmbVariableType.SelectedIndex + 1);
                }
                else if (rdoGlobalVariables.Checked)
                {
                    var obj = ServerVariableBase.Get((Guid)lstVariables.SelectedNode.Tag);
                    obj.Type = (VariableDataTypes)(cmbVariableType.SelectedIndex + 1);
                }

                InitValueGroup();
                UpdateSelection();
            }
        }
        private void lstVariables_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (mChangingName)
            {
                return;
            }

            if (lstVariables.SelectedNode == null || lstVariables.SelectedNode.Tag == null)
            {
                mEditorItem = null;
                UpdateEditor();

                return;
            }

            var id = (Guid)lstVariables.SelectedNode.Tag;

            if (id != Guid.Empty)
            {
                IDatabaseObject obj = null;
                if (rdoPlayerVariables.Checked)
                {
                    obj = PlayerVariableBase.Get(id);
                }
                else if (rdoGlobalVariables.Checked)
                {
                    obj = ServerVariableBase.Get(id);
                }

                if (obj != null)
                {
                    mEditorItem = obj;
                    if (!mChanged.Contains(obj))
                    {
                        mChanged.Add(obj);
                        obj.MakeBackup();
                    }
                }
            }

            UpdateEditor();
        }
 private void txtObjectName_TextChanged(object sender, EventArgs e)
 {
     if (lstVariables.SelectedNode != null && lstVariables.SelectedNode.Tag != null)
     {
         grpEditor.Show();
         grpValue.Hide();
         if (rdoPlayerVariables.Checked)
         {
             var obj = PlayerVariableBase.Get((Guid)lstVariables.SelectedNode.Tag);
             obj.Name = txtObjectName.Text;
             lstVariables.SelectedNode.Text = obj.Name;
         }
         else if (rdoGlobalVariables.Checked)
         {
             var obj = ServerVariableBase.Get((Guid)lstVariables.SelectedNode.Tag);
             obj.Name = txtObjectName.Text;
             lstVariables.SelectedNode.Text = obj.Name + " = " + obj.Value.ToString();
         }
     }
 }
        public void InitEditor()
        {
            var selectedId  = Guid.Empty;
            var folderNodes = new Dictionary <string, TreeNode>();

            if (lstVariables.SelectedNode != null && lstVariables.SelectedNode.Tag != null)
            {
                selectedId = (Guid)lstVariables.SelectedNode.Tag;
            }

            lstVariables.Nodes.Clear();

            //Fix Title
            if (rdoPlayerVariables.Checked)
            {
                grpVariables.Text = rdoPlayerVariables.Text;
            }
            else
            {
                grpVariables.Text = rdoGlobalVariables.Text;
            }

            grpEditor.Hide();
            cmbBooleanValue.Hide();
            nudVariableValue.Hide();
            txtStringValue.Hide();

            //Collect folders
            var mFolders = new List <string>();

            cmbFolder.Items.Clear();
            cmbFolder.Items.Add("");

            if (rdoPlayerVariables.Checked)
            {
                foreach (var itm in PlayerVariableBase.Lookup)
                {
                    if (!string.IsNullOrEmpty(((PlayerVariableBase)itm.Value).Folder) &&
                        !mFolders.Contains(((PlayerVariableBase)itm.Value).Folder))
                    {
                        mFolders.Add(((PlayerVariableBase)itm.Value).Folder);
                        if (!mKnownFolders.Contains(((PlayerVariableBase)itm.Value).Folder))
                        {
                            mKnownFolders.Add(((PlayerVariableBase)itm.Value).Folder);
                        }
                    }
                }

                mKnownFolders.Sort();
                cmbFolder.Items.AddRange(mKnownFolders.ToArray());
                lblId.Text = Strings.VariableEditor.textidpv;
            }
            else if (rdoGlobalVariables.Checked)
            {
                foreach (var itm in ServerVariableBase.Lookup)
                {
                    if (!string.IsNullOrEmpty(((ServerVariableBase)itm.Value).Folder) &&
                        !mFolders.Contains(((ServerVariableBase)itm.Value).Folder))
                    {
                        mFolders.Add(((ServerVariableBase)itm.Value).Folder);
                        if (!mGlobalKnownFolders.Contains(((ServerVariableBase)itm.Value).Folder))
                        {
                            mGlobalKnownFolders.Add(((ServerVariableBase)itm.Value).Folder);
                        }
                    }
                }

                mGlobalKnownFolders.Sort();
                cmbFolder.Items.AddRange(mGlobalKnownFolders.ToArray());
                lblId.Text = Strings.VariableEditor.textidgv;
            }

            mFolders.Sort();

            lstVariables.Sorted = !btnChronological.Checked;

            if (!btnChronological.Checked && !CustomSearch())
            {
                foreach (var folder in mFolders)
                {
                    var node = lstVariables.Nodes.Add(folder);
                    node.ImageIndex         = 0;
                    node.SelectedImageIndex = 0;
                    folderNodes.Add(folder, node);
                }
            }

            var itemPairs = rdoPlayerVariables.Checked ? PlayerVariableBase.ItemPairs : ServerVariableBase.ItemPairs;

            foreach (var itm in itemPairs)
            {
                var node = new TreeNode(itm.Value);
                if (rdoGlobalVariables.Checked)
                {
                    node.Text = node.Text +
                                " = " +
                                ServerVariableBase.Get(itm.Key).Value.ToString(ServerVariableBase.Get(itm.Key).Type);
                }

                node.Tag                = itm.Key;
                node.ImageIndex         = 1;
                node.SelectedImageIndex = 1;

                var folder = "";
                if (rdoPlayerVariables.Checked)
                {
                    folder = PlayerVariableBase.Get(itm.Key).Folder;
                }

                if (rdoGlobalVariables.Checked)
                {
                    folder = ServerVariableBase.Get(itm.Key).Folder;
                }

                if (!string.IsNullOrEmpty(folder) && !btnChronological.Checked && !CustomSearch())
                {
                    var folderNode = folderNodes[folder];
                    folderNode.Nodes.Add(node);
                    if (itm.Key == selectedId)
                    {
                        folderNode.Expand();
                    }
                }
                else
                {
                    lstVariables.Nodes.Add(node);
                }

                if (CustomSearch())
                {
                    if (!node.Text.ToLower().Contains(txtSearch.Text.ToLower()))
                    {
                        node.Remove();
                    }
                }

                if (itm.Key == selectedId)
                {
                    lstVariables.SelectedNode = node;
                }
            }

            var selectedNode = lstVariables.SelectedNode;

            if (!btnChronological.Checked)
            {
                lstVariables.Sort();
            }

            lstVariables.SelectedNode = selectedNode;
            var expandedFolders = mExpandedFolders;

            if (rdoGlobalVariables.Checked)
            {
                expandedFolders = mGlobalExpandedFolders;
            }

            foreach (var node in expandedFolders)
            {
                if (folderNodes.ContainsKey(node))
                {
                    folderNodes[node].Expand();
                }
            }

            UpdateEditor();
        }
Exemplo n.º 14
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);
        }