Esempio n. 1
0
        public void CacheEnemy(NPC npc)
        {
            if (npc.boss || npc.realLife != -1 || (npc.rarity > 0 || npc.extraValue < CoinLossRevengeSystem.MinimumCoinsForCaching) || ((double)npc.position.X < (double)Main.leftWorld + 640.0 + 16.0 || (double)npc.position.X + (double)npc.width > (double)Main.rightWorld - 640.0 - 32.0 || ((double)npc.position.Y < (double)Main.topWorld + 640.0 + 16.0 || (double)npc.position.Y > (double)Main.bottomWorld - 640.0 - 32.0 - (double)npc.height)))
            {
                return;
            }
            int num1 = npc.netID;
            int num2;

            if (NPCID.Sets.RespawnEnemyID.TryGetValue(num1, out num2))
            {
                num1 = num2;
            }
            if (num1 == 0)
            {
                return;
            }
            CoinLossRevengeSystem.RevengeMarker marker = new CoinLossRevengeSystem.RevengeMarker(npc.Center, num1, npc.GetLifePercent(), npc.type, npc.aiStyle, npc.extraValue, npc.value, npc.SpawnedFromStatue, this._gameTime, -1);
            this.AddMarker(marker);
            if (Main.netMode == 2)
            {
                NetMessage.SendCoinLossRevengeMarker(marker, -1, -1);
            }
            if (!CoinLossRevengeSystem.DisplayCaching)
            {
                return;
            }
            Main.NewText("Cached " + npc.GivenOrTypeName, byte.MaxValue, byte.MaxValue, byte.MaxValue);
        }
Esempio n. 2
0
 public CoinLossRevengeSystem.RevengeMarker DrawMapIcons(
     SpriteBatch spriteBatch,
     Vector2 mapTopLeft,
     Vector2 mapX2Y2AndOff,
     Rectangle?mapRect,
     float mapScale,
     float drawScale,
     ref string unused)
 {
     CoinLossRevengeSystem.RevengeMarker revengeMarker = (CoinLossRevengeSystem.RevengeMarker)null;
     lock (this._markersLock)
     {
         foreach (CoinLossRevengeSystem.RevengeMarker marker in this._markers)
         {
             if (marker.DrawMapIcon(spriteBatch, mapTopLeft, mapX2Y2AndOff, mapRect, mapScale, drawScale, this._gameTime))
             {
                 revengeMarker = marker;
             }
         }
     }
     return(revengeMarker);
 }
Esempio n. 3
0
 private void AddMarker(CoinLossRevengeSystem.RevengeMarker marker)
 {
     lock (this._markersLock)
         this._markers.Add(marker);
 }
Esempio n. 4
0
        public void CheckRespawns()
        {
            lock (this._markersLock)
            {
                if (this._markers.Count == 0)
                {
                    return;
                }
            }
            List <Tuple <int, Rectangle, Rectangle> > tupleList = new List <Tuple <int, Rectangle, Rectangle> >();

            for (int index = 0; index < (int)byte.MaxValue; ++index)
            {
                Player player = Main.player[index];
                if (player.active && !player.dead)
                {
                    tupleList.Add(Tuple.Create <int, Rectangle, Rectangle>(index, Utils.CenteredRectangle(player.Center, CoinLossRevengeSystem._playerBoxSizeInner), Utils.CenteredRectangle(player.Center, CoinLossRevengeSystem._playerBoxSizeOuter)));
                }
            }
            if (tupleList.Count == 0)
            {
                return;
            }
            this.RemoveExpiredOrInvalidMarkers();
            lock (this._markersLock)
            {
                List <CoinLossRevengeSystem.RevengeMarker> revengeMarkerList = new List <CoinLossRevengeSystem.RevengeMarker>();
                for (int index = 0; index < this._markers.Count; ++index)
                {
                    CoinLossRevengeSystem.RevengeMarker marker = this._markers[index];
                    bool flag = false;
                    Tuple <int, Rectangle, Rectangle> tuple1 = (Tuple <int, Rectangle, Rectangle>)null;
                    foreach (Tuple <int, Rectangle, Rectangle> tuple2 in tupleList)
                    {
                        if (marker.Intersects(tuple2.Item2, tuple2.Item3))
                        {
                            tuple1 = tuple2;
                            flag   = true;
                            break;
                        }
                    }
                    if (!flag)
                    {
                        marker.SetRespawnAttemptLock(false);
                    }
                    else if (!marker.RespawnAttemptLocked)
                    {
                        marker.SetRespawnAttemptLock(true);
                        if (marker.WouldNPCBeDiscouraged(Main.player[tuple1.Item1]))
                        {
                            marker.SetToExpire();
                        }
                        else
                        {
                            marker.SpawnEnemy();
                            revengeMarkerList.Add(marker);
                            NetMessage.SendData((int)sbyte.MaxValue, -1, -1, (NetworkText)null, marker.UniqueID, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        }
                    }
                }
                this._markers = this._markers.Except <CoinLossRevengeSystem.RevengeMarker>((IEnumerable <CoinLossRevengeSystem.RevengeMarker>)revengeMarkerList).ToList <CoinLossRevengeSystem.RevengeMarker>();
            }
        }