private IEnumerator EndTurnCoroutine(Process process)
        {
            yield return(new WaitUntil(() => process.HasExited));

            // Close prompt
            dialogueMenu.CloseDialogue();

            // Read new additions from file
            string[] lines = File.ReadAllLines(Application.dataPath + "/StreamingAssets/Model/additions.csv");
            float    rate  = totalDuration / lines.Length;         // Was weird to have this change depending on # of additions

            if (lines.Length < 8)
            {
                rate = 0.5f;
            }

            foreach (string line in lines)
            {
                // - Parse values
                string[]   values  = line.Split(',');
                SpriteData sprite  = SpriteManager.Instance.GetSprite(values[0]);
                int        spriteX = int.Parse(values[1]);
                int        spriteY = int.Parse(values[2]);

                if (GridManager.Instance.CanAddGridObject(sprite, spriteX, spriteY))
                {
                    // - Scroll window to addition location
                    windowScroll.ScrollOverTime(spriteX + sprite.Width / 2);
                    float time = 0;
                    while (time < rate * 0.75f)
                    {
                        yield return(null);

                        if (!IsLocked(dialogueMenu))
                        {
                            time += Time.deltaTime;
                        }
                    }

                    // - Fade addition in
                    GridObject addition = GridManager.Instance.AddGridObject(sprite, spriteX, spriteY);
                    addition.SetAlpha(0);
                    while (time < rate)
                    {
                        yield return(null);

                        if (!IsLocked(dialogueMenu))
                        {
                            time += Time.deltaTime;
                            addition.SetAlpha((time - rate * 0.75f) / (rate * 0.25f));
                        }
                    }
                    addition.SetAlpha(1);
                }
            }

            // Unblock input
            windowScroll.StopScrolling();
            gridPlacement.RemoveLock(this);
            RemoveLock(this);
        }
Beispiel #2
0
        private IEnumerator EndTurnCoroutine()
        {
            yield return(new WaitForSeconds(0.5f));

            /**
             * int numAttempts = 0;
             * while (!System.IO.File.Exists(Constants.directory+ "/StreamingAssets/Model/additions.csv") && numAttempts<10){
             *  numAttempts+=1;
             *  UnityEngine.Debug.Log (numAttempts);
             *  yield return new WaitForSeconds(0.5f);
             *
             * }
             */
            //process.Close();
            string receivedFromServer = "";

            try {
                Byte[] bytes     = new Byte[8112];
                bool   listening = true;
                while (listening)
                {
                    // Get a stream object for reading
                    using (NetworkStream stream = socketConnection.GetStream()) {
                        int length;
                        // Read incomming stream into byte arrary.
                        while ((length = stream.Read(bytes, 0, bytes.Length)) != 0)
                        {
                            var incommingData = new byte[length];
                            Array.Copy(bytes, 0, incommingData, 0, length);
                            // Convert byte array to string message.
                            string serverMessage = Encoding.ASCII.GetString(incommingData);
                            UnityEngine.Debug.Log("server message received as: " + serverMessage);
                            receivedFromServer += serverMessage;
                        }
                        listening = false;
                    }
                }
            }
            catch (SocketException socketException) {
                UnityEngine.Debug.Log("Socket exception: " + socketException);
            }

            string[] eachAddition = receivedFromServer.Split(new char[] { '*' });

            socketConnection.Close();
            socketConnection = null;
            float rate = 2.0f / eachAddition.Length;//Was weird to have this change depending on # of additions

            if (eachAddition.Length < 8)
            {
                rate = 0.3f;
            }

            dialogueMenu.CloseDialogue();
            foreach (string value in eachAddition)
            {
                string[] additionSplitFormat = value.Split(new char[] { ',' });
                if (additionSplitFormat.Length == 4)
                {
                    SpriteData sprite  = SpriteManager.Instance.GetSprite(actions[int.Parse(additionSplitFormat[2])]);
                    int        spriteX = int.Parse(additionSplitFormat[0]) + startX;
                    int        spriteY = int.Parse(additionSplitFormat[1]);

                    // - Scroll window to addition location
                    windowScroll.ScrollOverTime(spriteX + sprite.Width / 2);
                    float time = 0;
                    while (time < rate * 0.75f)
                    {
                        yield return(null);

                        if (!IsLocked)
                        {
                            time += Time.deltaTime;
                        }
                    }

                    // - Fade addition in
                    GridObject addition = GridManager.Instance.AddGridObject(sprite, spriteX, spriteY, true);

                    if (addition != null)
                    {
                        gridObjects.Add(addition);
                        addition.SetAlpha(0);
                        time = 0;
                        while (time < rate)
                        {
                            yield return(null);

                            if (!IsLocked)
                            {
                                time += Time.deltaTime;
                                addition.SetAlpha((time - rate * 0.25f) / (rate * 0.25f));
                            }
                        }
                    }
                    else
                    {
                        yield return(new WaitForSeconds(rate - time));
                    }
                }
            }



            // Unblock input
            windowScroll.StopScrolling();
            gridPlacement.RemoveLock(this);
            LogHandler.Instance.WriteLine("Player Turn:  time = " + Time.time);
        }