Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
    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));
        }
    }
Ejemplo n.º 3
0
 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;
     }
 }
Ejemplo n.º 4
0
 public override void Enter(StateMachine stateMachine)
 {
     MainThreadQueue.Add(() =>
     {
         go    = GameObject.Instantiate(Resources.Load("Bar")) as GameObject;
         begun = true;
     });
     Locator.Get <GridiaDriver>().TabbedGui.Visible = false;
 }
Ejemplo n.º 5
0
        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());
        }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 7
0
        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);
            });
        }
Ejemplo n.º 8
0
 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();
 }
Ejemplo n.º 9
0
        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);
                }
            });
        }
Ejemplo n.º 10
0
 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();
 }
Ejemplo n.º 11
0
        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);
            });
        }
Ejemplo n.º 12
0
 public static void LoadScene(String sceneName, Hashtable sceneArguments = null)
 {
     _sceneArguments = sceneArguments;
     MainThreadQueue.Add(() => Application.LoadLevel(sceneName));
 }