private void FireEvent() { Animator.SetBool("Fire", false); if (IsShooting) { if (IsMine) { Debug.Log("Spawn bullet " + this); var position = WeaponBone.position + shootDirection * 0.65f; var entity = status.SpawnBullet(position, shootDirection); var cmd = new EntityCreate(); cmd.prefab = PrefabType.Bullet; cmd.id = entity.Id; cmd.position = position; cmd.forward = shootDirection; outgoings.Enqueue(cmd); } State &= ~StateFlags.Attack; } else if (IsBuilding) { if (IsMine) { Debug.Log("Spawn Crate " + this); var position = transform.position + shootDirection * 1.2f + Vector3.up * 1.5f; var entity = status.SpawnCrate(position); var cmd = new EntityCreate(); cmd.prefab = PrefabType.Crate; cmd.id = entity.Id; cmd.position = position; outgoings.Enqueue(cmd); } State &= ~StateFlags.Build; } // TODO: Authority }
public void OnPlayStatusChange(PlayState state) { if (!status.InGame) { respawnView.Hide(); return; } if (state != PlayState.Alive && state != PlayState.Await) { respawnView.Show(); respawnView.Await = state != PlayState.Respawn; } else { respawnView.Hide(); } if (state == PlayState.Respawn) { respawnAfter = 5f; respawnView.RespawnWait(respawnAfter); } if (state == PlayState.Await) { var x = UnityEngine.Random.Range(-5f, 5f); var z = UnityEngine.Random.Range(16f, 22f); var side = characterStatus.Team == Team.TeamA ? -1f : 1f; var position = new Vector3(x, 0, z * side); var entity = characterStatus.SpawnCharacter(position); var cmd = new EntityCreate(); cmd.prefab = PrefabType.Character; cmd.id = entity.Id; outgoings.Enqueue(cmd); } }