Ejemplo n.º 1
0
        public override void Unload()
        {
            ItemHold.Clear();

            try
            {
                Plugin.OnDisconnected();
            }
            catch
            {
            }

            TargetManager.Reset();

            // special case for wmap. this allow us to save settings
            UIManager.GetGump <WorldMapGump>()
            ?.SaveSettings();

            ProfileManager.Current?.Save
            (
                UIManager.Gumps.OfType <Gump>()
                .Where(s => s.CanBeSaved)
                .Reverse()
                .ToList()
            );

            Macros.Save();
            InfoBars.Save();
            ProfileManager.UnLoadProfile();

            StaticFilters.CleanCaveTextures();
            StaticFilters.CleanTreeTextures();

            NetClient.Socket.Disconnected -= SocketOnDisconnected;
            NetClient.Socket.Disconnect();
            _lightRenderTarget?.Dispose();
            _world_render_target?.Dispose();

            CommandManager.UnRegisterAll();
            Weather.Reset();
            UIManager.Clear();
            World.Clear();
            UOChatManager.Clear();
            DelayedObjectClickManager.Clear();

            _useItemQueue?.Clear();
            _useItemQueue = null;
            Hotkeys       = null;
            Macros        = null;
            MessageManager.MessageReceived -= ChatOnMessageReceived;


            Settings.GlobalSettings.WindowSize        = new Point(Client.Game.Window.ClientBounds.Width, Client.Game.Window.ClientBounds.Height);
            Settings.GlobalSettings.IsWindowMaximized = Client.Game.IsWindowMaximized();
            Client.Game.SetWindowBorderless(false);

            base.Unload();
        }
Ejemplo n.º 2
0
 public override void Activate(GameObject parent)
 {
     base.Activate(parent);
     this.m_RequredItemIDs.Clear();
     this.m_RequredHoldItems.Clear();
     for (int i = 0; i < this.m_RequredItemNames.Count; i++)
     {
         ItemHold itemHold = ItemHold.FindByID((ItemID)Enum.Parse(typeof(ItemID), this.m_RequredItemNames[i]));
         this.m_RequredHoldItems.Add(itemHold);
         this.m_RequredItemIDs.Add(itemHold.m_ReplaceInfoID);
     }
 }
Ejemplo n.º 3
0
 public void SetItemHold()
 {
     for (int i = 0; i < itemMgr.itemInfoList.Count; i++)
     {
         GameObject itemHold = FactoryMgr.Instance.GetUI(StringMgr.ItemHold);
         itemHold.transform.SetParent(PackageContent);
         //itemHold.transform.localScale = Vector3.one;
         //道具持有数量等,更换图片资源
         ItemHold ih = new ItemHold(i, itemHold);
         itemHoldList.Add(ih);
     }
 }
        private bool PickupItemDirectly(Item item, int x, int y, int amount, Point?offset)
        {
            if (World.Player.IsDead || ItemHold.Enabled || item == null || item.IsDestroyed)
            {
                return(false);
            }

            if (amount <= 0)
            {
                amount = item.Amount;
            }

            ItemHold.Clear();
            ItemHold.Set(item, (ushort)amount);
            NetClient.Socket.Send(new PPickUpRequest(item, (ushort)amount));
            UIManager.GameCursor.SetDraggedItem(offset);

            if (!item.OnGround)
            {
                //Entity entity = World.Get(item.Container);
                //item.Container = Serial.INVALID;
                //entity.Items.Remove(item);

                //if (entity != null && entity.HasEquipment)
                //    entity.FindItemByLayer( item.Layer] = null;

                //entity.Items.ProcessDelta();
            }
            else
            {
                item.RemoveFromTile();
            }
            item.TextContainer?.Clear();

            //item.AllowedToDraw = false;
            //World.Items.Remove(item);
            //World.Items.ProcessDelta();
            //CloseItemGumps(item);

            //World.RemoveItem(item.Serial, true);

            World.ObjectToRemove = item.Serial;

            return(true);
        }
Ejemplo n.º 5
0
        private bool PickupItemDirectly(Item item, int x, int y, int amount, Point?offset)
        {
            if (World.Player.IsDead || ItemHold.Enabled || item == null || item.IsDestroyed /*|| (!ItemHold.Enabled && ItemHold.Dropped && ItemHold.Serial.IsValid)*/)
            {
                return(false);
            }

            ItemHold.Clear();
            ItemHold.Set(item, amount <= 0 ? item.Amount : (ushort)amount);
            UIManager.GameCursor.SetDraggedItem(offset);

            if (!item.OnGround)
            {
                Entity entity = World.Get(item.Container);
                //item.Container = Serial.INVALID;
                //entity.Items.Remove(item);

                if (entity.HasEquipment)
                {
                    entity.Equipment[(int)item.Layer] = null;
                }

                //entity.Items.ProcessDelta();
            }
            else
            {
                item.RemoveFromTile();
            }
            item.TextContainer?.Clear();

            item.AllowedToDraw = false;
            //World.Items.Remove(item);
            //World.Items.ProcessDelta();
            //CloseItemGumps(item);

            NetClient.Socket.Send(new PPickUpRequest(item, (ushort)amount));

            return(true);
        }
Ejemplo n.º 6
0
    protected override bool UpdateCollisions(Triangle blade_t0, Triangle blade_t1, Triangle handle_t0, Triangle handle_t1, Vector3 hit_dir, bool damage_window, out CJObject cj_obj, out Collider collider, out bool collision_with_handle, float damage_window_start, float damage_window_end, out Vector3 hit_pos)
    {
        collision_with_handle = false;
        Vector3    zero     = Vector3.zero;
        Vector3    zero2    = Vector3.zero;
        Quaternion identity = Quaternion.identity;

        cj_obj   = null;
        collider = null;
        hit_pos  = Vector3.zero;
        Item currentItem = this.m_Player.GetCurrentItem(Hand.Right);

        if (currentItem == null || currentItem.m_Info == null)
        {
            return(false);
        }
        ItemID id = currentItem.m_Info.m_ID;

        if (!this.m_PredictionData.ContainsKey((int)id))
        {
            return(base.UpdateCollisions(blade_t0, blade_t1, handle_t0, handle_t1, hit_dir, damage_window, out cj_obj, out collider, out collision_with_handle, damage_window_start, damage_window_end, out hit_pos));
        }
        AnimatorClipInfo[] currentAnimatorClipInfo = this.m_Animator.GetCurrentAnimatorClipInfo(1);
        AnimationClip      animationClip           = null;

        for (int i = 0; i < currentAnimatorClipInfo.Length; i++)
        {
            if (this.m_PredictionData[(int)id].ContainsKey(currentAnimatorClipInfo[i].clip))
            {
                animationClip = currentAnimatorClipInfo[i].clip;
            }
        }
        if (animationClip == null)
        {
            return(base.UpdateCollisions(blade_t0, blade_t1, handle_t0, handle_t1, hit_dir, damage_window, out cj_obj, out collider, out collision_with_handle, damage_window_start, damage_window_end, out hit_pos));
        }
        List <MeleeAttackPredictionData> list      = this.m_PredictionData[(int)id][animationClip];
        AnimatorStateInfo currentAnimatorStateInfo = this.m_Animator.GetCurrentAnimatorStateInfo(1);
        float             num  = 0.02f;
        float             num2 = (this.m_LastAnimFrame >= 0f) ? (this.m_LastAnimFrame / currentAnimatorStateInfo.length) : 0f;
        float             time = num2;
        float             num3 = currentAnimatorStateInfo.normalizedTime - num2;
        int num4 = (int)(num3 / num);

        if (num4 < 1)
        {
            num4 = 1;
        }
        num3 /= (float)num4;
        for (int j = 0; j < num4; j++)
        {
            float num5 = num2 + num3 * (float)(j + 1);
            if (num5 < damage_window_start || num5 > damage_window_end)
            {
                this.m_LastAnimFrame = this.m_Animator.GetCurrentAnimatorStateInfo(1).length *num5;
                cj_obj   = null;
                collider = null;
                time     = num5;
            }
            else
            {
                Vector3 damagerStartPos  = this.GetDamagerStartPos(num5, ref list);
                Vector3 damagerEndPos    = this.GetDamagerEndPos(num5, ref list);
                Vector3 damagerStartPos2 = this.GetDamagerStartPos(time, ref list);
                Vector3 damagerEndPos2   = this.GetDamagerEndPos(time, ref list);
                this.m_BladeT0Triangle.p0 = damagerStartPos;
                this.m_BladeT0Triangle.p1 = damagerStartPos2;
                this.m_BladeT0Triangle.p2 = damagerEndPos;
                this.m_BladeT1Triangle.p0 = damagerStartPos2;
                this.m_BladeT1Triangle.p1 = damagerEndPos2;
                this.m_BladeT1Triangle.p2 = damagerEndPos;
                base.GetBoxParameters(this.m_BladeT0Triangle, this.m_BladeT1Triangle, out zero2, out zero, out identity);
                int num6 = Physics.OverlapBoxNonAlloc(zero2, zero, this.m_HitCollidersTmp, identity);
                this.SortCollisions(this.m_HitCollidersTmp, num6);
                for (int k = 0; k < num6; k++)
                {
                    bool     flag      = false;
                    Collider collider2 = this.m_HitCollidersTmp[k];
                    if (!(collider2 == this.m_Player.m_CharacterController.m_Controller))
                    {
                        if (collider2.gameObject.IsWater())
                        {
                            this.OnHitWater(collider2);
                        }
                        if ((!collider2.isTrigger || collider2.gameObject.IsAI() || collider2.gameObject.IsFish() || collider2.gameObject.GetComponent <Spikes>()) && !(collider2.gameObject == this.m_Player.gameObject) && !(collider2.gameObject == currentItem.gameObject) && !(collider2.transform.parent == Player.Get().transform.GetChild(0)) && !this.m_HitObjects.Contains(collider2.gameObject) && !(collider2.gameObject.GetComponent <Player>() != null) && !PlayerArmorModule.Get().IsgameObjectEquipedArmor(collider2.gameObject))
                        {
                            Item component = collider2.gameObject.GetComponent <Item>();
                            if (!(component != null) || component.m_Info == null || (!component.m_Info.IsParasite() && !component.m_Info.IsArmor()))
                            {
                                ItemReplacer component2 = collider2.gameObject.GetComponent <ItemReplacer>();
                                if (component2)
                                {
                                    string text = component2.m_ReplaceInfoName.ToString().ToLower();
                                    if ((text.Contains("plant") && text != "plantain_lily_leaf") || text.Contains("leaf"))
                                    {
                                        goto IL_62D;
                                    }
                                }
                                ItemHold component3 = collider2.gameObject.GetComponent <ItemHold>();
                                if (component3)
                                {
                                    string text2 = component3.m_InfoName.ToString().ToLower();
                                    if ((text2.Contains("plant") && text2 != "plantain_lily_leaf") || text2.Contains("leaf"))
                                    {
                                        goto IL_62D;
                                    }
                                }
                                AI component4 = collider2.gameObject.GetComponent <AI>();
                                if (!component4 || !component4.m_GoalsModule || component4.m_GoalsModule.m_ActiveGoal == null || component4.m_GoalsModule.m_ActiveGoal.m_Type != AIGoalType.HumanJumpBack || component4.m_Animator.GetCurrentAnimatorStateInfo(0).normalizedTime >= 0.5f)
                                {
                                    CJObject component5 = collider2.gameObject.GetComponent <CJObject>();
                                    if (component5 == null)
                                    {
                                        Transform parent = collider2.gameObject.transform.parent;
                                        while (parent != null)
                                        {
                                            component5 = parent.GetComponent <CJObject>();
                                            if (component5)
                                            {
                                                break;
                                            }
                                            parent = parent.parent;
                                        }
                                    }
                                    if (component5 != null && component5.GetHitCollisionType() == HitCollisionType.Bones)
                                    {
                                        if (base.CheckBonesIntersection(blade_t0, blade_t1, component5))
                                        {
                                            flag = true;
                                        }
                                    }
                                    else
                                    {
                                        flag = true;
                                    }
                                    if (flag && damage_window)
                                    {
                                        float anim_frame = num5 * currentAnimatorStateInfo.length;
                                        this.SetupAnimFrameForHit(zero2, zero, identity, anim_frame, collider2);
                                        this.m_LastBoxHalfSizes  = zero;
                                        this.m_LastBoxPos        = zero2;
                                        this.m_LastBoxQuaternion = identity;
                                        this.m_LastAnimFrame     = this.m_Animator.GetCurrentAnimatorStateInfo(1).length *num5;
                                        cj_obj   = component5;
                                        collider = collider2;
                                        hit_pos  = this.m_BladeT0Triangle.p0;
                                        float proportionalClamp = CJTools.Math.GetProportionalClamp(0f, 1f, num5, num2, currentAnimatorStateInfo.normalizedTime);
                                        this.m_AnimationStoppedHandPos = Vector3.Lerp(this.m_LastHandPos, this.m_RHand.transform.position, proportionalClamp);
                                        this.m_LastHandPos             = this.m_RHand.position;
                                        return(true);
                                    }
                                }
                            }
                        }
                    }
                    IL_62D :;
                }
                time = num5;
            }
        }
        this.m_LastBoxHalfSizes  = zero;
        this.m_LastBoxPos        = zero2;
        this.m_LastBoxQuaternion = identity;
        this.m_LastAnimFrame     = this.m_Animator.GetCurrentAnimatorStateInfo(1).length *this.m_Animator.GetCurrentAnimatorStateInfo(1).normalizedTime;
        this.m_LastHandPos       = this.m_RHand.position;
        cj_obj   = null;
        collider = null;
        return(false);
    }
Ejemplo n.º 7
0
        public override void Load()
        {
            base.Load();

            ItemHold.Clear();
            Hotkeys = new HotkeysManager();
            Macros  = new MacroManager();

            // #########################################################
            // [FILE_FIX]
            // TODO: this code is a workaround to port old macros to the new xml system.
            if (ProfileManager.CurrentProfile.Macros != null)
            {
                for (int i = 0; i < ProfileManager.CurrentProfile.Macros.Length; i++)
                {
                    Macros.PushToBack(ProfileManager.CurrentProfile.Macros[i]);
                }

                Macros.Save();

                ProfileManager.CurrentProfile.Macros = null;
            }
            // #########################################################

            Macros.Load();

            InfoBars = new InfoBarManager();
            InfoBars.Load();
            _healthLinesManager = new HealthLinesManager();
            Weather             = new Weather();

            WorldViewportGump viewport = new WorldViewportGump(this);

            UIManager.Add(viewport, false);

            if (!ProfileManager.CurrentProfile.TopbarGumpIsDisabled)
            {
                TopBarGump.Create();
            }


            CommandManager.Initialize();
            NetClient.Socket.Disconnected += SocketOnDisconnected;

            MessageManager.MessageReceived += ChatOnMessageReceived;

            UIManager.ContainerScale = ProfileManager.CurrentProfile.ContainersScale / 100f;

            SDL.SDL_SetWindowMinimumSize(Client.Game.Window.Handle, 640, 480);

            if (ProfileManager.CurrentProfile.WindowBorderless)
            {
                Client.Game.SetWindowBorderless(true);
            }
            else if (Settings.GlobalSettings.IsWindowMaximized)
            {
                Client.Game.MaximizeWindow();
            }
            else if (Settings.GlobalSettings.WindowSize.HasValue)
            {
                int w = Settings.GlobalSettings.WindowSize.Value.X;
                int h = Settings.GlobalSettings.WindowSize.Value.Y;

                w = Math.Max(640, w);
                h = Math.Max(480, h);

                Client.Game.SetWindowSize(w, h);
            }


            CircleOfTransparency.Create(ProfileManager.CurrentProfile.CircleOfTransparencyRadius);
            Plugin.OnConnected();


            Camera.SetZoomValues
            (
                new[]
            {
                .5f, .6f, .7f, .8f, 0.9f, 1f, 1.1f, 1.2f, 1.3f, 1.5f, 1.6f, 1.7f, 1.8f, 1.9f, 2.0f, 2.1f, 2.2f,
                2.3f, 2.4f, 2.5f
            }
            );

            Camera.Zoom = ProfileManager.CurrentProfile.DefaultScale;
        }
Ejemplo n.º 8
0
        public static void EquipCustom()
        {
            GameScene gs11         = Client.Game.GetScene <GameScene>();
            var       _backpack    = World.Player.FindItemByLayer(Layer.Backpack);
            Item      customweapon = World.Items.Get(ProfileManager.CurrentProfile.CustomSerial);

            if (World.Player != null && !World.Player.IsDead)
            {
                if (ItemHold.Enabled)
                {
                    return;
                }
                if (_backpack == null)
                {
                    return;
                }
                if (customweapon == null)
                {
                    return;
                }

                if (customweapon.Serial == 0 || ProfileManager.CurrentProfile.CustomSerial == 0)
                {
                    if (World.Player.FindItemByLayer(Layer.OneHanded) != null)
                    {
                        customweapon.Serial = World.Player.FindItemByLayer(Layer.OneHanded).Serial;
                        GameActions.Print("Custom Item not defined, Setting current equipped Item", 33, MessageType.System);
                    }
                    else if (World.Player.FindItemByLayer(Layer.OneHanded) != null)
                    {
                        customweapon.Serial = World.Player.FindItemByLayer(Layer.TwoHanded).Serial;
                        GameActions.Print("Custom Item not defined, Setting current equipped Item", 33, MessageType.System);
                    }
                    else
                    {
                        TargetManager.SetTargeting(CursorTarget.SetCustomSerial, 0, TargetType.Neutral);
                        GameActions.Print("Custom Item not defined, Using SetCustomSerial Hotkey.", 33, MessageType.System);
                    }
                }

                if (EM_FindCustomWeapon() != null)
                {
                    EM_UnEquip();
                    TimeSpan.FromMilliseconds(50);
                }
                else if (customweapon != null && customweapon.Serial != 0)
                {
                    customweapon.Serial = ProfileManager.CurrentProfile.CustomSerial;
                    GameActions.PickUp(customweapon.Serial, 0, 0, 1);
                    TimeSpan.FromMilliseconds(50);

                    if (ItemHold.Enabled && !ItemHold.Dropped)
                    {
                        GameActions.Equip();
                    }
                    else
                    {
                        return;
                    }

                    if (ItemHold.Dropped)
                    {
                        ItemHold.Clear();
                    }
                    else
                    {
                        return;
                    }
                }
            }
        }