示例#1
0
            public static void PutBallInCup_Actual(
                Point hitLocation,
                int plr,
                int numberOfHits,
                int projid)
            {
                if (numberOfHits == 0)
                {
                    return;
                }
                Wiring.HitSwitch(hitLocation.X, hitLocation.Y);
                NetMessage.SendData(59, -1, -1, (NetworkText)null, hitLocation.X, (float)hitLocation.Y, 0.0f, 0.0f, 0, 0, 0);
                GolfHelper.ContactListener.EmitGolfballExplosion(hitLocation.ToWorldCoordinates(8f, 0.0f));
                string key = "Game.BallBounceResultGolf_Single";

                if (numberOfHits != 1)
                {
                    key = "Game.BallBounceResultGolf_Plural";
                }
                NetworkText text = NetworkText.FromKey(key, (object)Main.player[plr].name, (object)NetworkText.FromKey(Lang.GetProjectileName(projid).Key), (object)numberOfHits);

                switch (Main.netMode)
                {
                case 0:
                case 1:
                    Main.NewText(text.ToString(), byte.MaxValue, (byte)240, (byte)20);
                    break;

                case 2:
                    ChatHelper.BroadcastChatMessage(text, new Color((int)byte.MaxValue, 240, 20), -1);
                    break;
                }
            }
示例#2
0
 private static void UpdateEndInternal()
 {
     TELogicSensor.inUpdateLoop = false;
     foreach (Tuple <Point16, bool> tripPoint in TELogicSensor.tripPoints)
     {
         Wiring.blockPlayerTeleportationForOneIteration = tripPoint.Item2;
         Wiring.HitSwitch((int)tripPoint.Item1.X, (int)tripPoint.Item1.Y);
         if (Main.netMode == 2)
         {
             NetMessage.SendData(59, -1, -1, (NetworkText)null, (int)tripPoint.Item1.X, (float)tripPoint.Item1.Y, 0.0f, 0.0f, 0, 0, 0);
         }
     }
     Wiring.blockPlayerTeleportationForOneIteration = false;
     TELogicSensor.tripPoints.Clear();
     foreach (int key in TELogicSensor.markedIDsForRemoval)
     {
         TileEntity tileEntity;
         if (TileEntity.ByID.TryGetValue(key, out tileEntity) && (int)tileEntity.type == (int)TELogicSensor._myEntityID)
         {
             TileEntity.ByID.Remove(key);
         }
         TileEntity.ByPosition.Remove(tileEntity.Position);
     }
     TELogicSensor.markedIDsForRemoval.Clear();
 }
示例#3
0
 private static void UpdateEndInternal()
 {
     TELogicSensor.inUpdateLoop = false;
     using (List <Tuple <Point16, bool> > .Enumerator enumerator = TELogicSensor.tripPoints.GetEnumerator())
     {
         while (enumerator.MoveNext())
         {
             Tuple <Point16, bool> current = enumerator.Current;
             Wiring.blockPlayerTeleportationForOneIteration = current.get_Item2();
             Wiring.HitSwitch((int)current.get_Item1().X, (int)current.get_Item1().Y);
         }
     }
     Wiring.blockPlayerTeleportationForOneIteration = false;
     TELogicSensor.tripPoints.Clear();
     foreach (int key in TELogicSensor.markedIDsForRemoval)
     {
         TileEntity tileEntity;
         if (TileEntity.ByID.TryGetValue(key, out tileEntity) && (int)tileEntity.type == 2)
         {
             TileEntity.ByID.Remove(key);
         }
         TileEntity.ByPosition.Remove(tileEntity.Position);
     }
     TELogicSensor.markedIDsForRemoval.Clear();
 }
 private void PutBallInCup(Projectile proj, BallCollisionEvent collision)
 {
     if (proj.owner == Main.myPlayer && Main.LocalGolfState.ShouldScoreHole)
     {
         Point hitLocation = (collision.ImpactPoint - collision.Normal * 0.5f).ToTileCoordinates();
         int   owner       = proj.owner;
         int   num         = (int)proj.ai[1];
         int   type        = proj.type;
         if (num > 1)
         {
             Main.LocalGolfState.SetScoreTime();
         }
         Main.LocalGolfState.RecordBallInfo(proj);
         Main.LocalGolfState.LandBall(proj);
         int golfBallScore = Main.LocalGolfState.GetGolfBallScore(proj);
         if (num > 0)
         {
             Main.player[owner].AccumulateGolfingScore(golfBallScore);
         }
         PutBallInCup_TextAndEffects(hitLocation, owner, num, type);
         Main.LocalGolfState.ResetScoreTime();
         Wiring.HitSwitch(hitLocation.X, hitLocation.Y);
         NetMessage.SendData(59, -1, -1, null, hitLocation.X, hitLocation.Y);
         if (Main.netMode == 1)
         {
             NetMessage.SendData(128, -1, -1, null, owner, num, type, 0f, hitLocation.X, hitLocation.Y);
         }
     }
     proj.Kill();
 }
示例#5
0
 private void PutBallInCup(Projectile proj, BallCollisionEvent collision)
 {
     if (proj.owner == Main.myPlayer && Main.LocalGolfState.ShouldScoreHole)
     {
         Point tileCoordinates = (collision.ImpactPoint - collision.Normal * 0.5f).ToTileCoordinates();
         int   owner           = proj.owner;
         int   numberOfHits    = (int)proj.ai[1];
         int   type            = proj.type;
         if (numberOfHits > 1)
         {
             Main.LocalGolfState.SetScoreTime();
         }
         Main.LocalGolfState.RecordBallInfo(proj);
         Main.LocalGolfState.LandBall(proj);
         int golfBallScore = Main.LocalGolfState.GetGolfBallScore(proj);
         if (numberOfHits > 0)
         {
             Main.player[owner].AccumulateGolfingScore(golfBallScore);
         }
         GolfHelper.ContactListener.PutBallInCup_TextAndEffects(tileCoordinates, owner, numberOfHits, type);
         Main.LocalGolfState.ResetScoreTime();
         Wiring.HitSwitch(tileCoordinates.X, tileCoordinates.Y);
         NetMessage.SendData(59, -1, -1, (NetworkText)null, tileCoordinates.X, (float)tileCoordinates.Y, 0.0f, 0.0f, 0, 0, 0);
         if (Main.netMode == 1)
         {
             NetMessage.SendData(128, -1, -1, (NetworkText)null, owner, (float)numberOfHits, (float)type, 0.0f, tileCoordinates.X, tileCoordinates.Y, 0);
         }
     }
     proj.Kill();
 }
 private static void PokeLocation(Point location)
 {
     if (Main.netMode != 1)
     {
         Wiring.blockPlayerTeleportationForOneIteration = true;
         Wiring.HitSwitch(location.X, location.Y);
         NetMessage.SendData(59, -1, -1, "", location.X, (float)location.Y, 0f, 0f, 0, 0, 0);
     }
 }
 private static void PokeLocation(Point location)
 {
     if (Main.netMode == 1)
     {
         return;
     }
     Wiring.blockPlayerTeleportationForOneIteration = true;
     Wiring.HitSwitch((int)location.X, (int)location.Y);
     NetMessage.SendData(59, -1, -1, (NetworkText)null, (int)location.X, (float)location.Y, 0.0f, 0.0f, 0, 0, 0);
 }
示例#8
0
        public override void Process(int whoAmI, byte[] readBuffer, int length, int num)
        {
            int x = (int)ReadInt16(readBuffer);
            int y = (int)ReadInt16(readBuffer);

            Wiring.HitSwitch(x, y);
            if (Main.netMode == 2)
            {
                NewNetMessage.SendData(59, -1, whoAmI, String.Empty, x, (float)y, 0f, 0f, 0);
                return;
            }
            return;
        }
示例#9
0
        public override bool NewRightClick(int x, int y)
        {
            int j = Main.tile[x, y].frameX / 18;

            j = x - j;
            int num8 = y - Main.tile[x, y].frameY / 18;

            Animation.NewTemporaryAnimation(2, Main.tile[x, y].type, j, num8);
            NetMessage.SendTemporaryAnimation(-1, 2, Main.tile[x, y].type, j, num8);
            Wiring.HitSwitch(x, y);
            Use(x, y);
            NetMessage.SendData(59, -1, -1, null, x, y);
            return(true);
        }
示例#10
0
        public static void Kill(int x, int y)
        {
            TileEntity tileEntity;

            if (!TileEntity.ByPosition.TryGetValue(new Point16(x, y), out tileEntity) || (int)tileEntity.type != (int)TELogicSensor._myEntityID)
            {
                return;
            }
            Wiring.blockPlayerTeleportationForOneIteration = ((TELogicSensor)tileEntity).logicCheck == TELogicSensor.LogicCheckType.PlayerAbove;
            bool flag = false;

            if (((TELogicSensor)tileEntity).logicCheck == TELogicSensor.LogicCheckType.PlayerAbove && ((TELogicSensor)tileEntity).On)
            {
                flag = true;
            }
            else if (((TELogicSensor)tileEntity).logicCheck == TELogicSensor.LogicCheckType.Water && ((TELogicSensor)tileEntity).On)
            {
                flag = true;
            }
            else if (((TELogicSensor)tileEntity).logicCheck == TELogicSensor.LogicCheckType.Lava && ((TELogicSensor)tileEntity).On)
            {
                flag = true;
            }
            else if (((TELogicSensor)tileEntity).logicCheck == TELogicSensor.LogicCheckType.Honey && ((TELogicSensor)tileEntity).On)
            {
                flag = true;
            }
            else if (((TELogicSensor)tileEntity).logicCheck == TELogicSensor.LogicCheckType.Liquid && ((TELogicSensor)tileEntity).On)
            {
                flag = true;
            }
            if (flag)
            {
                Wiring.HitSwitch((int)tileEntity.Position.X, (int)tileEntity.Position.Y);
                NetMessage.SendData(59, -1, -1, (NetworkText)null, (int)tileEntity.Position.X, (float)tileEntity.Position.Y, 0.0f, 0.0f, 0, 0, 0);
            }
            Wiring.blockPlayerTeleportationForOneIteration = false;
            if (TELogicSensor.inUpdateLoop)
            {
                TELogicSensor.markedIDsForRemoval.Add(tileEntity.ID);
            }
            else
            {
                TileEntity.ByPosition.Remove(new Point16(x, y));
                TileEntity.ByID.Remove(tileEntity.ID);
            }
        }
示例#11
0
        public static void Kill(int x, int y)
        {
            TileEntity tileEntity;

            if (!TileEntity.ByPosition.TryGetValue(new Point16(x, y), out tileEntity) || tileEntity.type != (byte)2)
            {
                return;
            }
            Wiring.blockPlayerTeleportationForOneIteration =
                ((TELogicSensor)tileEntity).logicCheck == TELogicSensor.LogicCheckType.PlayerAbove;
            if (((TELogicSensor)tileEntity).logicCheck == TELogicSensor.LogicCheckType.PlayerAbove &&
                ((TELogicSensor)tileEntity).On)
            {
                Wiring.HitSwitch((int)tileEntity.Position.X, (int)tileEntity.Position.Y);
            }
            if (((TELogicSensor)tileEntity).logicCheck == TELogicSensor.LogicCheckType.Water &&
                ((TELogicSensor)tileEntity).On)
            {
                Wiring.HitSwitch((int)tileEntity.Position.X, (int)tileEntity.Position.Y);
            }
            if (((TELogicSensor)tileEntity).logicCheck == TELogicSensor.LogicCheckType.Lava &&
                ((TELogicSensor)tileEntity).On)
            {
                Wiring.HitSwitch((int)tileEntity.Position.X, (int)tileEntity.Position.Y);
            }
            if (((TELogicSensor)tileEntity).logicCheck == TELogicSensor.LogicCheckType.Honey &&
                ((TELogicSensor)tileEntity).On)
            {
                Wiring.HitSwitch((int)tileEntity.Position.X, (int)tileEntity.Position.Y);
            }
            if (((TELogicSensor)tileEntity).logicCheck == TELogicSensor.LogicCheckType.Liquid &&
                ((TELogicSensor)tileEntity).On)
            {
                Wiring.HitSwitch((int)tileEntity.Position.X, (int)tileEntity.Position.Y);
            }
            Wiring.blockPlayerTeleportationForOneIteration = false;
            if (TELogicSensor.inUpdateLoop)
            {
                TELogicSensor.markedIDsForRemoval.Add(tileEntity.ID);
            }
            else
            {
                TileEntity.ByPosition.Remove(new Point16(x, y));
                TileEntity.ByID.Remove(tileEntity.ID);
            }
        }
 public static void Kill(int x, int y)
 {
     if (TileEntity.ByPosition.TryGetValue(new Point16(x, y), out var value) && value.type == _myEntityID)
     {
         Wiring.blockPlayerTeleportationForOneIteration = ((TELogicSensor)value).logicCheck == LogicCheckType.PlayerAbove;
         bool flag = false;
         if (((TELogicSensor)value).logicCheck == LogicCheckType.PlayerAbove && ((TELogicSensor)value).On)
         {
             flag = true;
         }
         else if (((TELogicSensor)value).logicCheck == LogicCheckType.Water && ((TELogicSensor)value).On)
         {
             flag = true;
         }
         else if (((TELogicSensor)value).logicCheck == LogicCheckType.Lava && ((TELogicSensor)value).On)
         {
             flag = true;
         }
         else if (((TELogicSensor)value).logicCheck == LogicCheckType.Honey && ((TELogicSensor)value).On)
         {
             flag = true;
         }
         else if (((TELogicSensor)value).logicCheck == LogicCheckType.Liquid && ((TELogicSensor)value).On)
         {
             flag = true;
         }
         if (flag)
         {
             Wiring.HitSwitch(value.Position.X, value.Position.Y);
             NetMessage.SendData(59, -1, -1, null, value.Position.X, value.Position.Y);
         }
         Wiring.blockPlayerTeleportationForOneIteration = false;
         if (inUpdateLoop)
         {
             markedIDsForRemoval.Add(value.ID);
             return;
         }
         TileEntity.ByPosition.Remove(new Point16(x, y));
         TileEntity.ByID.Remove(value.ID);
     }
 }
示例#13
0
 private static void UpdateEndInternal()
 {
     TELogicSensor.inUpdateLoop = false;
     foreach (Tuple <Point16, bool> tripPoint in TELogicSensor.tripPoints)
     {
         Wiring.blockPlayerTeleportationForOneIteration = tripPoint.Item2;
         Wiring.HitSwitch((int)tripPoint.Item1.X, (int)tripPoint.Item1.Y);
     }
     Wiring.blockPlayerTeleportationForOneIteration = false;
     TELogicSensor.tripPoints.Clear();
     foreach (int key in TELogicSensor.markedIDsForRemoval)
     {
         TileEntity tileEntity;
         if (TileEntity.ByID.TryGetValue(key, out tileEntity) && (int)tileEntity.type == 2)
         {
             TileEntity.ByID.Remove(key);
         }
         TileEntity.ByPosition.Remove(tileEntity.Position);
     }
     TELogicSensor.markedIDsForRemoval.Clear();
 }
示例#14
0
 public static void PutBallInCup_Actual(Point hitLocation, int plr, int numberOfHits, int projid)
 {
     if (numberOfHits != 0)
     {
         Wiring.HitSwitch(hitLocation.X, hitLocation.Y);
         NetMessage.SendData(59, -1, -1, null, hitLocation.X, hitLocation.Y);
         EmitGolfballExplosion(hitLocation.ToWorldCoordinates(8f, 0f));
         string key = "Game.BallBounceResultGolf_Single";
         if (numberOfHits != 1)
         {
             key = "Game.BallBounceResultGolf_Plural";
         }
         NetworkText networkText = NetworkText.FromKey(key, Main.player[plr].name, NetworkText.FromKey(Lang.GetProjectileName(projid).Key), numberOfHits);
         if (Main.netMode == 0 || Main.netMode == 1)
         {
             Main.NewText(networkText.ToString(), byte.MaxValue, 240, 20);
         }
         else if (Main.netMode == 2)
         {
             ChatHelper.BroadcastChatMessage(networkText, new Color(255, 240, 20));
         }
     }
 }
 private static void UpdateEndInternal()
 {
     inUpdateLoop = false;
     foreach (Tuple <Point16, bool> tripPoint in tripPoints)
     {
         Wiring.blockPlayerTeleportationForOneIteration = tripPoint.Item2;
         Wiring.HitSwitch(tripPoint.Item1.X, tripPoint.Item1.Y);
         if (Main.netMode == 2)
         {
             NetMessage.SendData(59, -1, -1, null, tripPoint.Item1.X, tripPoint.Item1.Y);
         }
     }
     Wiring.blockPlayerTeleportationForOneIteration = false;
     tripPoints.Clear();
     foreach (int item in markedIDsForRemoval)
     {
         if (TileEntity.ByID.TryGetValue(item, out var value) && value.type == _myEntityID)
         {
             TileEntity.ByID.Remove(item);
         }
         TileEntity.ByPosition.Remove(value.Position);
     }
     markedIDsForRemoval.Clear();
 }