public void askAllBarricades(NetworkPlayer player, int x, int y) { for (int i = 0; i < SpawnBarricades.regions[x, y].barricades.Count; i++) { ServerBarricade item = SpawnBarricades.regions[x, y].barricades[i]; if (player != Network.player) { base.networkView.RPC("createBarricade", player, new object[] { item.id, item.position, item.rotation }); } else { this.createBarricade(item.id, item.position, item.rotation); } } }
public static void damage(Vector3 position, int amount) { Point2 region = NetworkRegions.getRegion(position); int indexFromPositionServer = SpawnBarricades.getIndexFromPositionServer(region, position); if (indexFromPositionServer != -1) { ServerBarricade item = SpawnBarricades.regions[region.x, region.y].barricades[indexFromPositionServer]; item.health = item.health - amount; if (SpawnBarricades.regions[region.x, region.y].barricades[indexFromPositionServer].health <= 0) { NetworkEffects.askEffect(BarricadeStats.getEffect(SpawnBarricades.regions[region.x, region.y].barricades[indexFromPositionServer].id), position, Quaternion.Euler(-90f, 0f, 0f), -1f); NetworkSounds.askSound(BarricadeStats.getSound(SpawnBarricades.regions[region.x, region.y].barricades[indexFromPositionServer].id), position, 1f, UnityEngine.Random.Range(0.9f, 1.1f), 1f); SpawnBarricades.tool.networkView.RPC("destroyBarricade", RPCMode.All, new object[] { position }); } } }
public static void save(int x, int y) { if (SpawnBarricades.regions[x, y].barricades.Count > 0 || SpawnBarricades.regions[x, y].edit) { string empty = string.Empty; for (int i = 0; i < SpawnBarricades.regions[x, y].barricades.Count; i++) { ServerBarricade item = SpawnBarricades.regions[x, y].barricades[i]; empty = string.Concat(empty, item.id, ":"); empty = string.Concat(empty, item.health, ":"); empty = string.Concat(empty, item.state, ":"); empty = string.Concat(empty, Mathf.Floor(item.position.x * 100f) / 100f, ":"); empty = string.Concat(empty, Mathf.Floor(item.position.y * 100f) / 100f, ":"); empty = string.Concat(empty, Mathf.Floor(item.position.z * 100f) / 100f, ":"); empty = string.Concat(empty, Mathf.Floor(item.rotation.x * 100f) / 100f, ":"); empty = string.Concat(empty, Mathf.Floor(item.rotation.y * 100f) / 100f, ":"); empty = string.Concat(empty, Mathf.Floor(item.rotation.z * 100f) / 100f, ":;"); } Savedata.saveBarricades(x, y, empty); } }
public void onReady() { SpawnBarricades.tool = this; SpawnBarricades.model = GameObject.Find(Application.loadedLevelName).transform.FindChild("barricades").gameObject; SpawnBarricades.regions = new BarricadesRegion[NetworkRegions.REGION_X, NetworkRegions.REGION_Y]; for (int i = 0; i < NetworkRegions.REGION_X; i++) { for (int j = 0; j < NetworkRegions.REGION_Y; j++) { SpawnBarricades.regions[i, j] = new BarricadesRegion(); } } if (Network.isServer) { for (int k = 0; k < NetworkRegions.REGION_X; k++) { for (int l = 0; l < NetworkRegions.REGION_Y; l++) { string str = Savedata.loadBarricades(k, l); if (str != string.Empty) { string[] strArrays = Packer.unpack(str, ';'); for (int m = 0; m < (int)strArrays.Length; m++) { string[] strArrays1 = Packer.unpack(strArrays[m], ':'); int num = int.Parse(strArrays1[0]); ServerBarricade serverBarricade = new ServerBarricade(num, int.Parse(strArrays1[1]), strArrays1[2], new Vector3(float.Parse(strArrays1[3]), float.Parse(strArrays1[4]), float.Parse(strArrays1[5])), new Vector3(float.Parse(strArrays1[6]), float.Parse(strArrays1[7]), float.Parse(strArrays1[8]))); SpawnBarricades.regions[k, l].barricades.Add(serverBarricade); this.createBarricade(SpawnBarricades.regions[k, l].barricades[SpawnBarricades.regions[k, l].barricades.Count - 1].id, SpawnBarricades.regions[k, l].barricades[SpawnBarricades.regions[k, l].barricades.Count - 1].position, SpawnBarricades.regions[k, l].barricades[SpawnBarricades.regions[k, l].barricades.Count - 1].rotation); } SpawnBarricades.regions[k, l].edit = true; } } } } }