private void UpdateFlags(Creature selectedUnit)
 {
     for (int i = 0; i < 32; i++)
     {
         uint       item    = 1u << i;
         UnitFlags1 flag    = (UnitFlags1)item;
         string     name    = flag.ToString();
         bool       enabled = (selectedUnit.flags1 & flag) == flag;
         flag1List[i].Enabled = enabled;
     }
     for (int i = 0; i < 32; i++)
     {
         uint       item    = 1u << i;
         UnitFlags2 flag    = (UnitFlags2)item;
         string     name    = flag.ToString();
         bool       enabled = (selectedUnit.flags2 & flag) == flag;
         flag2List[i].Enabled = enabled;
     }
     for (int i = 0; i < 29; i++)
     {
         uint       item    = 1u << i;
         UnitFlags3 flag    = (UnitFlags3)item;
         string     name    = flag.ToString();
         bool       enabled = (selectedUnit.flags3 & flag) == flag;
         flag3List[i].Enabled = enabled;
     }
 }
        public MainWindow()
        {
            InitializeComponent();

            UnitList  = new ObservableCollection <Creature>();
            RaceList  = new ObservableCollection <Creature>();
            flag1List = new ObservableCollection <FlagDisplay>();
            flag2List = new ObservableCollection <FlagDisplay>();
            flag3List = new ObservableCollection <FlagDisplay>();

            unitListView.ItemsSource = UnitList;
            raceListView.ItemsSource = RaceList;

            flags1ListView.ItemsSource = flag1List;
            flags2ListView.ItemsSource = flag2List;
            flags3ListView.ItemsSource = flag3List;



            for (int i = 0; i < 32; i++)
            {
                uint       item = 1u << i;
                UnitFlags1 flag = (UnitFlags1)item;
                string     name = flag.ToString();
                name = name.Replace('_', ' ');
                name = TI.ToTitleCase(name);
                flag1List.Add(new FlagDisplay()
                {
                    Name = name, Enabled = false
                });
            }
            for (int i = 0; i < 32; i++)
            {
                uint       item = 1u << i;
                UnitFlags2 flag = (UnitFlags2)item;
                string     name = flag.ToString();
                name = name.Replace('_', ' ');
                name = TI.ToTitleCase(name);
                flag2List.Add(new FlagDisplay()
                {
                    Name = name, Enabled = false
                });
            }
            for (int i = 0; i < 29; i++)
            {
                uint       item = 1u << i;
                UnitFlags3 flag = (UnitFlags3)item;
                string     name = flag.ToString();
                name = name.Replace('_', ' ');
                name = TI.ToTitleCase(name);
                flag3List.Add(new FlagDisplay()
                {
                    Name = name, Enabled = false
                });
            }
        }
Пример #3
0
        private void UnitFlags_BmspChanged(object sender, EventArgs e)
        {
            BitmaskCheckBox bmcb = (BitmaskCheckBox)sender;

            if (bmcb.GetValue() == 536870912) // play dead sets feign dead
            {
                if (bmcb.IsChecked == true)
                {
                    UnitFlags2.SetValueIsChecked(1, true);
                }
                else
                {
                    UnitFlags2.SetValueIsChecked(1, false);
                }
            }
        }
Пример #4
0
            public override void Process(CmdTrigger <RealmServerCmdArgs> trigger)
            {
                string str  = trigger.Text.NextModifiers();
                string name = "";

                if (str.Contains("n"))
                {
                    name = trigger.Text.NextWord();
                }
                Unit target = trigger.Args.Target;

                if (target == null)
                {
                    trigger.Reply("No target found.");
                }
                else
                {
                    Map rgn = target.Map;
                    if (rgn == null)
                    {
                        trigger.Reply("Instances are currently not supported.");
                    }
                    else
                    {
                        NPC npc = null;
                        rgn.ExecuteInContext(() =>
                        {
                            foreach (WorldObject worldObject in rgn)
                            {
                                if (worldObject is NPC && (name == "" || worldObject.Name.ContainsIgnoreCase(name)))
                                {
                                    npc = (NPC)worldObject;
                                    break;
                                }
                            }
                        });
                        if (npc == null)
                        {
                            trigger.Reply("Could not find a matching NPC.");
                        }
                        else
                        {
                            Character character = trigger.Args.Character;
                            if (trigger.Args.HasCharacter)
                            {
                                if (name == "" && character.Target != null)
                                {
                                    if (character.Target is NPC)
                                    {
                                        npc = character.Target as NPC;
                                    }
                                    else
                                    {
                                        character.Target = npc;
                                    }
                                }
                                else
                                {
                                    character.Target = npc;
                                }
                            }
                            else
                            {
                                trigger.Args.Target  = npc;
                                trigger.Args.Context = npc;
                            }

                            trigger.Reply("Selected: {0}", (object)npc);
                            NPCFlags npcFlags = npc.NPCFlags;
                            trigger.Reply("NPCFlags {0}:{1}", (object)npcFlags, (object)npcFlags);
                            UnitDynamicFlags dynamicFlags = npc.DynamicFlags;
                            trigger.Reply("DynamicFlags {0}:{1}", (object)dynamicFlags, (object)dynamicFlags);
                            UnitExtraFlags extraFlags = npc.ExtraFlags;
                            trigger.Reply("ExtraFlags {0}:{1}", (object)extraFlags, (object)extraFlags);
                            StateFlag stateFlags = npc.StateFlags;
                            trigger.Reply("StateFlags {0}:{1}", (object)stateFlags, (object)stateFlags);
                            UnitFlags unitFlags = npc.UnitFlags;
                            trigger.Reply("UnitFlags {0}:{1}", (object)unitFlags, (object)(int)unitFlags);
                            UnitFlags2 unitFlags2 = npc.UnitFlags2;
                            trigger.Reply("UnitFlags2 {0}:{1}", (object)unitFlags2, (object)unitFlags2);
                        }
                    }
                }
            }
Пример #5
0
    void ShowCursorInfo()
    {
        cursorProperties.text  = "";
        cursorProperties.text += "Cursor: ";
        cursorProperties.text += cursX + ",";
        cursorProperties.text += cursY + ",";
        cursorProperties.text += cursZ + "\n";
        var maybeTile = MapDataStore.Main[cursX, cursY, cursZ];

        if (maybeTile != null)
        {
            var tile = maybeTile.Value;
            cursorProperties.text += "Tiletype:\n";
            var tiletype = DFConnection.Instance.NetTiletypeList.tiletype_list
                           [tile.tileType];
            cursorProperties.text += tiletype.name + "\n";
            cursorProperties.text +=
                tiletype.shape + ":" +
                tiletype.special + ":" +
                tiletype.material + ":" +
                tiletype.variant + ":" +
                tiletype.direction + "\n";
            var mat = tile.material;
            cursorProperties.text += "Material: ";
            cursorProperties.text += mat.mat_type + ",";
            cursorProperties.text += mat.mat_index + "\n";

            if (materials.ContainsKey(mat))
            {
                cursorProperties.text += "Material Name: ";
                cursorProperties.text += materials[mat].id + "\n";
            }
            else
            {
                cursorProperties.text += "Unknown Material\n";
            }

            cursorProperties.text += "\n";

            var basemat = tile.base_material;
            cursorProperties.text += "Base Material: ";
            cursorProperties.text += basemat.mat_type + ",";
            cursorProperties.text += basemat.mat_index + "\n";

            if (materials.ContainsKey(basemat))
            {
                cursorProperties.text += "Base Material Name: ";
                cursorProperties.text += materials[basemat].id + "\n";
            }
            else
            {
                cursorProperties.text += "Unknown Base Material\n";
            }

            cursorProperties.text += "\n";

            var layermat = tile.layer_material;
            cursorProperties.text += "Layer Material: ";
            cursorProperties.text += layermat.mat_type + ",";
            cursorProperties.text += layermat.mat_index + "\n";

            if (materials.ContainsKey(layermat))
            {
                cursorProperties.text += "Layer Material Name: ";
                cursorProperties.text += materials[layermat].id + "\n";
            }
            else
            {
                cursorProperties.text += "Unknown Layer Material\n";
            }

            cursorProperties.text += "\n";

            var veinmat = tile.vein_material;
            cursorProperties.text += "Vein Material: ";
            cursorProperties.text += veinmat.mat_type + ",";
            cursorProperties.text += veinmat.mat_index + "\n";

            if (materials.ContainsKey(veinmat))
            {
                cursorProperties.text += "Vein Material Name: ";
                cursorProperties.text += materials[veinmat].id + "\n";
            }
            else
            {
                cursorProperties.text += "Unknown Vein Material\n";
            }

            cursorProperties.text += "\n";

            var cons = tile.construction_item;
            cursorProperties.text += "Construction Item: ";
            cursorProperties.text += cons.mat_type + ",";
            cursorProperties.text += cons.mat_index + "\n";

            if (materials.ContainsKey(cons))
            {
                cursorProperties.text += "Construction Item Name: ";
                cursorProperties.text += items[cons].id + "\n";
            }
            else
            {
                cursorProperties.text += "Unknown Construction Item\n";
            }
        }

        if (unitList != null)
        {
            foreach (UnitDefinition unit in unitList.creature_list)
            {
                UnitFlags1 flags1 = (UnitFlags1)unit.flags1;
                UnitFlags2 flags2 = (UnitFlags2)unit.flags2;
                UnitFlags3 flags3 = (UnitFlags3)unit.flags3;

                if (((flags1 & UnitFlags1.dead) == UnitFlags1.dead) ||
                    ((flags1 & UnitFlags1.left) == UnitFlags1.left))
                {
                    continue;
                }
                if (unit.pos_x != cursX || unit.pos_y != cursY || unit.pos_z != cursZ)
                {
                    continue;
                }

                CreatureRaw creatureRaw = null;
                if (DFConnection.Instance.NetCreatureRawList != null)
                {
                    creatureRaw = DFConnection.Instance.NetCreatureRawList.creature_raws[unit.race.mat_type];
                }

                if (creatureRaw != null)
                {
                    cursorProperties.text += "Unit:   \n";

                    cursorProperties.text += "Race: ";
                    cursorProperties.text += creatureRaw.creature_id + ":";
                    cursorProperties.text += creatureRaw.caste[unit.race.mat_index].caste_id;
                    cursorProperties.text += "\n";

                    cursorProperties.text += flags1 + "\n";
                    cursorProperties.text += flags2 + "\n";
                    cursorProperties.text += flags3 + "\n";
                }
                break;
            }
        }
    }
Пример #6
0
    public void OnMouseOver()
    {
        if (!UnityEngine.GameObject.Find("InfoPanel"))
        {
            UnityEngine.GameObject tempAuth = Instantiate(Resources.Load("InfoPanel") as UnityEngine.GameObject, new Vector3(Screen.width - 50, 100, 0), Quaternion.identity);
            tempAuth.transform.SetParent(UnityEngine.GameObject.Find("Canvas").gameObject.transform);
            tempAuth.transform.localScale = new Vector3(1, 1, 1);
            tempAuth.name = "InfoPanel";

            targetHealth            = UnityEngine.GameObject.Find("targethealthBarInfo").GetComponent <Image>();
            targetHealth.fillAmount = 0f;

            Transform[] ts = tempAuth.transform.GetComponentsInChildren <Transform>(true);
            foreach (Transform t in ts)
            {
                if (t.gameObject.name == "InfoPanelName")
                {
                    Text temo = t.gameObject.GetComponent <Text>();
                    temo.text = obj.Name;
                }

                if (obj is Unit)
                {
                    unit = obj as Unit;
                    if (t.gameObject.name == "InfoPanelLevel")
                    {
                        Text temo = t.gameObject.GetComponent <Text>();
                        if (obj is Unit)
                        {
                            if (unit.Health <= 0)
                            {
                                temo.text = unit.Level.ToString() + " (Corpse)";
                            }
                            else
                            {
                                temo.text = unit.Level.ToString();
                            }
                        }
                    }

                    uint healthPercent = (unit.Health * 200 + unit.MaxHealth) / (unit.MaxHealth * 2);
                    targetHealth.fillAmount = healthPercent / 100f;
                }

                if (obj is Player)
                {
                    player = obj as Player;
                    if (t.gameObject.name == "InfoPanelLevel")
                    {
                        Text temo = t.gameObject.GetComponent <Text>();
                        temo.text = player.Level.ToString() + " " + player.Race + " " + player.Class;
                    }

                    uint healthPercent = (player.Health * 200 + player.MaxHealth) / (player.MaxHealth * 2);
                    targetHealth.fillAmount = healthPercent / 100f;
                }
            }
        }

        if (this.obj is Unit)
        {
            Unit unit = this.obj as Unit;

            UnitFlags  flags    = (UnitFlags)unit.UnitFlags;
            UnitFlags2 flags2   = (UnitFlags2)unit.UnitFlags2;
            NPCFlags   NpcFlags = (NPCFlags)unit.NpcFlags;

            float distance = Vector3.Distance(UnityEngine.GameObject.Find(Exchange.gameClient.Player.GUID.ToString()).transform.position, transform.position);

            if (NpcFlags.HasAnyFlag(NPCFlags.Gossip))
            {
                if (distance > 4)
                {
                    Texture2D texture2D = Resources.Load("Images/login/speak") as Texture2D;
                    Cursor.SetCursor(texture2D, Vector2.zero, CursorMode.Auto);
                }
                else
                {
                    Texture2D texture2D = Resources.Load("Images/login/speak") as Texture2D;
                    Cursor.SetCursor(texture2D, Vector2.zero, CursorMode.Auto);
                }
            }

            if (NpcFlags.HasAnyFlag(NPCFlags.QuestGiver))
            {
                if (distance > 4)
                {
                    Texture2D texture2D = Resources.Load("Images/login/unablequest") as Texture2D;
                    Cursor.SetCursor(texture2D, Vector2.zero, CursorMode.Auto);
                }
                else
                {
                    Texture2D texture2D = Resources.Load("Images/login/quest") as Texture2D;
                    Cursor.SetCursor(texture2D, Vector2.zero, CursorMode.Auto);
                }
            }
        }

        if (Input.GetKeyUp(KeyCode.Mouse0))
        {
            if (this.obj is GameObject)
            {
                return;
            }

            if (Exchange.gameClient.Player.Target == this.obj)
            {
                return;
            }

            if (Exchange.gameClient.Player.Target != null)
            {
                UnityEngine.GameObject.Find(Exchange.gameClient.Player.Target.GUID.ToString() + "targetSelectUnderlay").GetComponent <SpriteRenderer>().enabled = false;
            }

            UnityEngine.GameObject.Find(obj.GUID.ToString() + "targetSelectUnderlay").GetComponent <SpriteRenderer>().enabled = true;
            //UnityEngine.GameObject.Find(obj.GUID.ToString() + "targetSelectUnderlay").GetComponent<SpriteRenderer>().color = Color.red;
            Exchange.gameClient.ThreadHelper.playAudio(obj, "interface/iselecttarget").Play();
            Exchange.gameClient.ThreadHelper.setTarget(this.obj);
        }

        if (Input.GetKeyUp(KeyCode.Mouse1))
        {
            if (Exchange.gameClient.Player.Target != this.obj)
            {
                if (Exchange.gameClient.Player.Target != null)
                {
                    UnityEngine.GameObject.Find(Exchange.gameClient.Player.Target.GUID.ToString() + "targetSelectUnderlay").GetComponent <SpriteRenderer>().enabled = false;
                }

                UnityEngine.GameObject.Find(obj.GUID.ToString() + "targetSelectUnderlay").GetComponent <SpriteRenderer>().enabled = true;
                //UnityEngine.GameObject.Find(obj.GUID.ToString() + "targetSelectUnderlay").GetComponent<SpriteRenderer>().color = Color.red;
                Exchange.gameClient.ThreadHelper.playAudio(obj, "interface/iselecttarget").Play();
                Exchange.gameClient.ThreadHelper.setTarget(this.obj);
            }

            float distance = Vector3.Distance(UnityEngine.GameObject.Find(Exchange.gameClient.Player.GUID.ToString()).transform.position, UnityEngine.GameObject.Find(Exchange.gameClient.Player.Target.GUID.ToString()).transform.position);

            if (distance > 4)
            {
                System.Random random    = new System.Random();
                int[]         AudioFile = new int[3] {
                    2, 4, 5
                };
                int slot = AudioFile[random.Next(0, AudioFile.Length)];

                Exchange.gameClient.ThreadHelper.playAudio(Exchange.gameClient.Player, "character/" +
                                                           Exchange.gameClient.Player.Race.ToString() + "/" +
                                                           Exchange.gameClient.Player.Race.ToString() +
                                                           Exchange.gameClient.Player.Gender.ToString() + "errormessages/" +
                                                           Exchange.gameClient.Player.Race.ToString() +
                                                           Exchange.gameClient.Player.Gender.ToString() + "_err_outofrange0" + slot.ToString()).Play();
            }
        }
    }