void AddSpeculative(Speculative s_) { for (int i = 0; i < speculativeCount; i++) { if (speculative[i] == null) { speculative[i] = s_; return; } } speculative[speculativeCount++] = s_; }
private void SendSetBlockAndUpdateSpeculative(int activematerial, int x, int y, int z, BlockSetMode mode) { network.SendSetBlock(new Vector3(x, y, z), mode, activematerial); if (mode == BlockSetMode.Destroy) { activematerial = data.TileIdEmpty; } speculative[new Vector3i(x, y, z)] = new Speculative() { blocktype = activematerial, time = DateTime.Now }; terrain.UpdateTile(x, y, z); shadows.OnLocalBuild(x, y, z); }
internal void SendSetBlockAndUpdateSpeculative(int material, int x, int y, int z, int mode) { SendSetBlock(x, y, z, mode, material, ActiveMaterial); Packet_Item item = d_Inventory.RightHand[ActiveMaterial]; if (item != null && item.ItemClass == Packet_ItemClassEnum.Block) { //int blockid = d_Inventory.RightHand[d_Viewport.ActiveMaterial].BlockId; int blockid = material; if (mode == Packet_BlockSetModeEnum.Destroy) { blockid = SpecialBlockId.Empty; } Speculative s_ = new Speculative(); s_.x = x; s_.y = y; s_.z = z; s_.blocktype = map.GetBlock(x, y, z); s_.timeMilliseconds = platform.TimeMillisecondsFromStart(); AddSpeculative(s_); SetBlock(x, y, z, blockid); RedrawBlock(x, y, z); } else { //TODO } }
private void SendSetBlockAndUpdateSpeculative(int material, int x, int y, int z, BlockSetMode mode) { SendSetBlock(new Vector3(x, y, z), mode, material, ActiveMaterial); Item item = d_Inventory.RightHand[ActiveMaterial]; if (item != null && item.ItemClass == ItemClass.Block) { //int blockid = d_Inventory.RightHand[d_Viewport.ActiveMaterial].BlockId; int blockid = material; if (mode == BlockSetMode.Destroy) { blockid = SpecialBlockId.Empty; } speculative[new Vector3i(x, y, z)] = new Speculative() { blocktype = d_Map.GetBlock(x, y, z), time = DateTime.UtcNow }; SetBlock(x, y, z, blockid); RedrawBlock(x, y, z); OnLocalBuild(x, y, z); } else { //todo } }