public override void Update() { if (buffer.Length == 0) { buffer = new bool[delay]; } if (buffer[0]) { Wiring.TripWire(base.Position.X + 2, base.Position.Y, 1, 1); } for (int i = 1; i < buffer.Length; i++) { buffer[i - 1] = buffer[i]; } buffer[delay - 1] = justHit; justHit = false; //string str = ""; //for(int i = 0; i < buffer.Length; i++) { // str += (buffer[i] ? "1" : "0") + " "; //} //Main.NewText(str); if (changed) { NetMessage.SendData(MessageID.TileEntitySharing, -1, -1, null, ID, Position.X, Position.Y); changed = false; } }
public override void Update() { if (Main.player.Any(player => Vector2.Distance(player.Center, Position.ToVector2() * 16) <= 100 && player.ActiveAbility<Wisp>()) && timer == 0) timer = 300; if (timer > 0) { timer--; if (timer == 299 || timer == 1) Wiring.TripWire(Position.X, Position.Y, 2, 2); Dust.NewDust(Position.ToVector2() * 16 + new Vector2(10, 10), 2, 2, DustType<Dusts.GoldWithMovement>(), 0, 0, 0, default, timer / 300f);
public bool deposit(Item item, Player player) { Players.RecieverChestSelector modPlayer = (Players.RecieverChestSelector)Main.LocalPlayer.GetModPlayer <Players.RecieverChestSelector>(); Point16 topLeft = modPlayer.topLeft; //chest int chestNo = Common.AutoStacker.FindChest(topLeft.X, topLeft.Y); if (chestNo != -1) { //stack item for (int slot = 0; slot < Main.chest[chestNo].item.Length; slot++) { if (Main.chest[chestNo].item[slot].stack == 0) { Main.chest[chestNo].item[slot] = item.Clone(); item.SetDefaults(0, true); Wiring.TripWire(topLeft.X, topLeft.Y, 2, 2); return(true); } Item chestItem = Main.chest[chestNo].item[slot]; if (item.IsTheSameAs(chestItem) && chestItem.stack < chestItem.maxStack) { int spaceLeft = chestItem.maxStack - chestItem.stack; if (spaceLeft >= item.stack) { chestItem.stack += item.stack; item.SetDefaults(0, true); Wiring.TripWire(topLeft.X, topLeft.Y, 2, 2); return(true); } else { item.stack -= spaceLeft; chestItem.stack = chestItem.maxStack; } } } } //storage heart else if (AutoStacker.modMagicStorage != null || AutoStacker.modMagicStorageExtra != null) { Common.MagicStorageConnecter.InjectItem(topLeft, item); if (item.stack == 0) { item.SetDefaults(0, true); return(true); } } return(false); }
public override void PostUpdate() { List <delayedTrip> temp = wireTriggerQ; wireTriggerQ = new List <delayedTrip>(); foreach (var item in temp) { Wiring.TripWire(item.x, item.y, item.width, item.height); } temp.Clear(); }
public override void Update() { if (Main.player.Any(player => Vector2.Distance(player.Center, Position.ToVector2() * 16) <= 100 && player.GetModPlayer <AbilityHandler>().wisp.Active) && timer == 0) { timer = 300; } if (timer > 0) { timer--; if (timer == 299 || timer == 1) { Wiring.TripWire(Position.X, Position.Y, 2, 2); } Dust.NewDust(Position.ToVector2() * 16 + new Vector2(10, 10), 2, 2, ModContent.DustType <Dusts.Gold2>(), 0, 0, 0, default, timer / 300f);
public void ReceiveTripWire(BinaryReader reader, int from) { // TODO: Find out what happens if player 0 leaves if (from != 0) { return; } var x = reader.ReadInt32(); var y = reader.ReadInt32(); WireMod.Instance.Logger.Info($"{from} Received TripWire: x {x}, y {y}"); Wiring.TripWire(x, y, 1, 1); }
public override void RightClick(int i, int j) { if (Main.netMode == 0) { Wiring.TripWire(i, j, 1, 1); } else { ModPacket packet = NetRouter.GetPacketTo(this, mod); packet.Write((Int16)i); packet.Write((Int16)j); packet.Send(); } mod.GetModWorld <ButtonDelayWorld>().setPoint(new Point16(i, j)); Main.PlaySound(SoundID.MenuTick); }
public override bool NewRightClick(int i, int j) { if (Main.netMode == 0) { Wiring.TripWire(i, j, 1, 1); } else { ModPacket packet = NetRouter.GetPacketTo(this, mod); packet.Write((Int16)i); packet.Write((Int16)j); packet.Send(); } ModContent.GetInstance <ButtonDelayWorld>().setPoint(new Point16(i, j)); Main.PlaySound(SoundID.MenuTick); return(true); }
void ActivateReceiver(Point16 receiver) { if (WirelessUtils.IsReceiver(receiver)) { Wiring.TripWire(receiver.X, receiver.Y, 1, 1); Tile tile = Main.tile[receiver.X, receiver.Y]; if (tile.TileType == ModContent.TileType <Tiles.WirelessTransceiver>() && WirelessSystem.Links.ContainsKey(receiver)) { if (WirelessUtils.IsReceiver(WirelessSystem.Links[receiver])) { Wiring.TripWire(WirelessSystem.Links[receiver].X, WirelessSystem.Links[receiver].Y, 1, 1); } } } else { SyncRemoveLink(receiver); } }
public override void RightClick(int i, int j) { Point16 origin = GetOrigin(i, j); Point16 topLeft = origin - tileObjectData.Origin; if (Main.netMode == 0) { Wiring.TripWire(topLeft.X, topLeft.Y, 2, 2); } else { ModPacket packet = NetRouter.GetPacketTo(this, mod); packet.Write(topLeft.X); packet.Write(topLeft.Y); packet.Send(); } mod.GetModWorld <ButtonDelayWorld>().setPoint(topLeft); Main.PlaySound(SoundID.MenuTick); }
public void ChangeState(bool onState, bool TripWire) { if (onState != this.On && !SanityCheck()) { return; } Main.tile[base.Position.X, base.Position.Y].frameX = (short)(onState ? 18 : 0); this.On = onState; GetFrame(); if (Main.netMode == 2) { NetMessage.SendTileSquare(-1, base.Position.X, base.Position.Y, 1, TileChangeType.None); } if (TripWire && Main.netMode != 1) { Wiring.TripWire(base.Position.X, base.Position.Y, 1, 1); } }
public static void Use(int i, int j) { Tile tile = Main.tile[i, j]; int num6 = Main.tile[i, j].frameX / 18 * -1; int num5 = Main.tile[i, j].frameY / 18 * -1; num6 %= 4; if (num6 < -1) { num6 += 2; } num6 += i; num5 += j; Main.PlaySound(28, i * 16, j * 16, 0); Wiring.TripWire(num6, num5, 2, 2); int num = i; if (tile.frameX % 36 != 0) { num--; } }
public static bool BeginTripWire(int left, int top, int width, int height) { if (!Active || Thread.CurrentThread.Name == wireThreadName) { VisualizerWorld.AddStart(new Rectangle(left, top, width, height)); return(true); } if (Running) { if (queuedWireTrips.Count < maxQueuedTrips) { queuedWireTrips.Enqueue(new Rectangle(left, top, width, height)); } return(false); } VisualizerWorld.ResetSegments(); Running = true; Thread wireThread = new Thread(delegate(object rand) { Main.rand = (UnifiedRandom)rand; //Main.rand is ThreadStatic, but we need it for faulty gates Wiring.TripWire(left, top, width, height); Running = false; mainWait.Set(); }); wireThread.IsBackground = true; wireThread.Name = wireThreadName; wireThread.Start(Main.rand); mainWait.WaitOne(); return(false); }
public override void Update(GameTime gameTime) { if (!this.GetPinIn(0).IsConnected()) { this.Settings["Value"] = "-1"; return; } ; if (!int.TryParse(this.Settings["Value"], out var val) || !int.TryParse(this.GetPinIn(0).GetValue(), out var in0)) { this.Settings["Value"] = "-2"; return; } if ((in0 <= 0 && val > 0) || (in0 > 0 && val <= 0)) { if (this.Settings["Trigger"] == Triggers[2] || // Enter and Exit (in0 == 1 && this.Settings["Trigger"] == Triggers[1]) || // Enter Only (in0 == 0 && this.Settings["Trigger"] == Triggers[0])) // Exit Only { Wiring.blockPlayerTeleportationForOneIteration = true; if (Main.netMode != NetmodeID.MultiplayerClient) { Wiring.TripWire(this.GetPinOut(0).Location.X, this.GetPinOut(0).Location.Y, 1, 1); } else { Wiring.TripWire(this.GetPinOut(0).Location.X, this.GetPinOut(0).Location.Y, 1, 1); WireMod.PacketHandler.SendTripWire(256, Main.myPlayer, this.GetPinOut(0).Location.X, this.GetPinOut(0).Location.Y); } } } this.Settings["Value"] = in0.ToString(); }
private int GetOutput() { if (!int.TryParse(this.Value, out var val)) { return(-1); } if (!this.Pins["In"][0].IsConnected()) { return(-1); } if (this.Pins["In"][0].DataType != "bool") { return(-1); } if (!int.TryParse(this.Pins["In"][0].GetValue(), out var in0)) { return(-1); } if ((in0 <= 0 && val > 0) || (in0 > 0 && val <= 0)) { Wiring.blockPlayerTeleportationForOneIteration = true; if (Main.netMode != NetmodeID.MultiplayerClient) { Wiring.TripWire(this.Pins["Out"][0].Location.X, this.Pins["Out"][0].Location.Y, 1, 1); } else { Wiring.TripWire(this.Pins["Out"][0].Location.X, this.Pins["Out"][0].Location.Y, 1, 1); WireMod.PacketHandler.SendTripWire(256, Main.myPlayer, this.Pins["Out"][0].Location.X, this.Pins["Out"][0].Location.Y); } } this.Value = in0.ToString(); return(in0); }
public void HandlePacket(BinaryReader reader, int WhoAmI) { Wiring.TripWire(reader.ReadInt16(), reader.ReadInt16(), 2, 2); }
private void Callback() { Wiring.TripWire(Position.X, Position.Y, 1, 1); }
public override bool OnTileCollide(Vector2 oldVelocity) { int x = (int)(projectile.Center.X + oldVelocity.X * 16) / 16; int y = (int)(projectile.Center.Y + oldVelocity.Y * 16) / 16; if (WorldGen.InWorld(x, y)) { Tile tile = Main.tile[x, y]; if (tile.type == TileType <Mirror>()) { Vector2 velocity = Vector2.Zero; if (oldVelocity == new Vector2(0, 1)) { switch (tile.frameX) { case 0: velocity = new Vector2(-1, 0); break; case 1: velocity = new Vector2(1, 0); break; default: return(true); } } if (oldVelocity == new Vector2(0, -1)) { switch (tile.frameX) { case 2: velocity = new Vector2(1, 0); break; case 3: velocity = new Vector2(-1, 0); break; default: return(true); } } if (oldVelocity == new Vector2(1, 0)) { switch (tile.frameX) { case 0: velocity = new Vector2(0, -1); break; case 3: velocity = new Vector2(0, 1); break; default: return(true); } } if (oldVelocity == new Vector2(-1, 0)) { switch (tile.frameX) { case 1: velocity = new Vector2(0, -1); break; case 2: velocity = new Vector2(0, 1); break; default: return(true); } } projectile.velocity = velocity; projectile.position = new Vector2(x, y) * 16; for (int k = 0; k < 8; k++) { Dust.NewDustPerfect(Vector2.Lerp(projectile.position, projectile.oldPosition, k / 8f) + projectile.Size / 2, DustType <Dusts.Electric>(), Vector2.Zero); } Main.PlaySound(SoundID.DD2_WitherBeastCrystalImpact, projectile.Center); return(false); } if (tile.type == TileType <Splitter>()) { Vector2 vel = oldVelocity.RotatedBy(MathHelper.Pi / 2f).ToPoint16().ToVector2(); Projectile.NewProjectile(new Vector2(x + 0.5f, y + 0.5f) * 16 + vel * 8, vel, projectile.type, 0, 0); Vector2 vel2 = oldVelocity.RotatedBy(-MathHelper.Pi / 2f).ToPoint16().ToVector2(); Projectile.NewProjectile(new Vector2(x + 0.5f, y + 0.5f) * 16 + vel2 * 8, vel2, projectile.type, 0, 0); for (int k = 0; k < 8; k++) { Dust.NewDustPerfect(projectile.Center + oldVelocity * k, DustType <Dusts.Electric>(), Vector2.Zero); } Main.PlaySound(SoundID.DD2_WitherBeastCrystalImpact, projectile.Center); } if (tile.type == TileType <RecieverPuzzle>()) { Main.NewText("Nice c**k.", new Color(255, 0, 255)); } if (tile.type == TileType <RecieverPlacable>()) { for (int k = 0; k < 50; k++) { Dust.NewDustPerfect(projectile.Center + oldVelocity * 16, DustType <Dusts.Starlight>(), Vector2.One.RotatedByRandom(6.28f) * Main.rand.NextFloat(20)); } Main.PlaySound(SoundID.DD2_BetsyFireballImpact, projectile.Center); Wiring.TripWire(x, y, 1, 1); } } return(true); }
internal static void TriggerMech(int x, int y) { HitWireSingle(x, y); Wiring.TripWire(x, y, 1, 1); }
// UseItem //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ public override bool UseItem(Player player) { Wiring.TripWire(Player.tileTargetX, Player.tileTargetY, 1, 1); return(true); }