private AudioClip GetAudioClip(String name) { var wavFile = GetWavFile(name); if (wavFile == null) { return(null); } var signal = new AutoResetEvent(false); AudioClip audioClip = null; MainThreadQueue.Add(() => { var position = 0; audioClip = AudioClip.Create(name, wavFile.AudioData.Length / wavFile.NumChannels, wavFile.NumChannels, wavFile.SampleRate, true, data => { // this or UnityEngine.Debug.Log is needed to prevent a crash. // Why? impossible to say ... //UnityEngine.Debug.LogWarning("."); var length = Math.Min(data.Length, wavFile.AudioData.Length); Array.Copy(wavFile.AudioData, position, data, 0, length); position += length; }, p => position = p); DontDestroyOnLoad(audioClip); signal.Set(); }); signal.WaitOne(); return(audioClip); }
public void CreateCreature(int id, String name, CreatureImage image, int x, int y, int z) { var cre = TileMap.CreateCreature(id, name, image, x, y, z); if (cre != null) { MainThreadQueue.Add(() => _driver.AddCreature(cre)); } }
public void RemoveCreature(int id) { TileMap.RemoveCreature(id); MainThreadQueue.Add(() => GameObject.Destroy(GameObject.Find("Creature " + id))); if (_driver.SelectedCreature != null && _driver.SelectedCreature.Id == id) { _driver.SelectedCreature = null; } }
public override void Enter(StateMachine stateMachine) { MainThreadQueue.Add(() => { go = GameObject.Instantiate(Resources.Load("Bar")) as GameObject; begun = true; }); Locator.Get <GridiaDriver>().TabbedGui.Visible = false; }
protected override void Handle(ConnectionToGridiaServerHandler connection, JObject data) { var game = connection.GetGame(); var id = (int)data["id"]; UnityEngine.Debug.Log(data); var backToJson = JsonConvert.SerializeObject(data["image"]); // :( var image = JsonConvert.DeserializeObject <CreatureImage>(backToJson, new CreatureImageConverter()); game.TileMap.GetCreature(id).Image = image; MainThreadQueue.Add(() => GameObject.Find("Creature " + id).GetComponent <CreatureScript>().ClearImage()); }
protected override void Handle(ConnectionToGridiaServerHandler connection, JObject data) { var user = (String)data["user"]; var text = (String)data["text"]; var x = (int)data["loc"]["x"]; // :( var y = (int)data["loc"]["y"]; var z = (int)data["loc"]["z"]; var chat = Locator.Get <ChatWindow>(); MainThreadQueue.Add(() => chat.Append(user, text)); Locator.Get <GridiaDriver>().FloatingTexts.Add(new FloatingText(new Vector3(x, y, z), " " + text)); }
protected override void Handle(ConnectionToGridiaServerHandler connection, JObject data) { var id = (int)data["id"]; var index = (int)data["index"]; var item = (int)data["item"]; var quantity = (int)data["quantity"]; var itemInstance = Locator.Get <ContentManager>().GetItem(item).GetInstance(quantity); MainThreadQueue.Add(() => { GameState.Instance.SetContainerItem(id, itemInstance, index); }); }
public void PlayMusic(String name) { Debug.Log("Song: " + name); StartingMusic = true; new Thread(() => { CurrentSongName = name; var clip = GetAudioClip(name); MainThreadQueue.Add(() => { MusicAudio.clip = clip; MusicAudio.Play(); StartingMusic = false; }); }).Start(); }
protected override void Handle(ConnectionToGridiaServerHandler connection, JObject data) { var id = (int)data["id"]; var currentHealth = (int)data["currentLife"]; var maxHealth = (int)data["maxLife"]; MainThreadQueue.Add(() => { var cre = GameObject.Find("Creature " + id); var sc = cre.GetComponent <StatusCircle>(); var takeDamage = sc.IsActive() && currentHealth < sc.CurrentHealth; sc.MaxHealth = maxHealth; sc.CurrentHealth = currentHealth; if (takeDamage) { iTween.ColorFrom(cre, Color.red, 1f); } }); }
public void PlaySfx(String name, float volume = 1.0f) { #if UNITY_WEBPLAYER if (Application.loadedLevelName != "Main") { return; } #endif if (MuteSfx) { return; } new Thread(() => { var clip = GetAudioClip(name); MainThreadQueue.Add(() => { SfxAudio.PlayOneShot(clip, volume); }); }).Start(); }
protected override void Handle(ConnectionToGridiaServerHandler connection, JObject data) { var backToJson = JsonConvert.SerializeObject(data["items"]); // :( var items = JsonConvert.DeserializeObject <List <ItemInstance> >(backToJson, new ItemInstanceConverter()); var id = (int)data["id"]; var type = (String)data["type"]; var tabGfxItemId = (int)data["tabGfxItemId"]; if (type == "Inventory" && GameState.Instance.InventoryContainerId == 0) { // TODO for some reason this is getting reset. check server for why. GameState.Instance.InventoryContainerId = id; } if (type == "Equipment") { GameState.Instance.EquipmentContainerId = id; } MainThreadQueue.Add(() => { GameState.Instance.SetContainerItems(id, items); }); }
public static void LoadScene(String sceneName, Hashtable sceneArguments = null) { _sceneArguments = sceneArguments; MainThreadQueue.Add(() => Application.LoadLevel(sceneName)); }