Пример #1
0
    void Controller()
    {
        if (currentSubtitle == 0 || currentSubtitle == 1 || currentSubtitle == 3 || currentSubtitle == 5)
        {
            speaker = Speaking.Leader;
        }
        else if ( currentSubtitle == 2 || currentSubtitle == 4 || currentSubtitle == 6)
        {
            speaker = Speaking.King;
        }

        if (speaker == Speaking.Leader)
        {
        curObject = LeaderObject;
        curHeight = LeaderHeight;
        curSide = LeaderSide;

        }
        else if (speaker == Speaking.King)
        {
        curObject = KingObject;
        curHeight = KingHeight;
        curSide = KingSide;

        }

        if (currentSubtitle == 6)
        {
            KingAnimationObject.animation.CrossFade("Point");
        }
    }
Пример #2
0
                public override int GetHashCode()
                {
                    int hash = 1;

                    if (Id != 0L)
                    {
                        hash ^= Id.GetHashCode();
                    }
                    if (Z != 0F)
                    {
                        hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Z);
                    }
                    if (Speaking != 0)
                    {
                        hash ^= Speaking.GetHashCode();
                    }
                    if (Data.Length != 0)
                    {
                        hash ^= Data.GetHashCode();
                    }
                    if (rect_ != null)
                    {
                        hash ^= Rect.GetHashCode();
                    }
                    if (_unknownFields != null)
                    {
                        hash ^= _unknownFields.GetHashCode();
                    }
                    return(hash);
                }
Пример #3
0
        private void DoTick()
        {
            foreach (var playerService in PlayerServices)
            {
                if (playerService.Commands.Count > 0)
                {
                    var command = playerService.Commands.Dequeue();
                    var player  = playerService.Player;

                    if (!_commandParser.Parse(player, command))
                    {
                        player.InvalidCommand(command);
                    }
                }
            }

            foreach (var playerService in PlayerServices)
            {
                Speaking.ExecuteMagic(playerService.Player);
            }

            foreach (var playerService in PlayerServices)
            {
                playerService.Tick();
            }
        }
        public MainWindow()
        {
            InitializeComponent();

            this.main = this;

            this.screenWidth  = System.Windows.SystemParameters.PrimaryScreenWidth;
            this.screenHeight = System.Windows.SystemParameters.PrimaryScreenHeight;

            this.Height = 55;
            this.Width  = this.maxWindowWidth;

            this.Top  = screenHeight - this.Height + 7;
            this.Left = screenWidth - this.Width + 7;

            this.Topmost = true;

            this.Show();

            this.sm = new Speaking();

            mmiC          = new MmiCommunication("localhost", 8000, "User1", "GUI");
            mmiC.Message += MmiC_Message;
            mmiC.Start();

            //UpdateKinectStatus("active");
        }
Пример #5
0
        public Michael()
        {
            handlerName = this.GetType().Name;

            intentsToHandle.Add("ASB-digital-comms-team-perf");

            intentsToHandle.Add("ASB-digital-comms-highlight");

            intentsToHandle.Add("ASB-digital-comms-squad-mvp");

            intentsToHandle.Add("ASB-digital-comms-enjoyed-most");

            intentsToHandle.Add("ASB-digital-comms-still-need-host-RCU");

            intentsToHandle.Add("ASB-digital-comms-financial-climate");

            intentsToHandle.Add("ASB-digital-comms-terminator");

            intentsToHandle.Add("ASB-digital-comms-universe-muscles");

            intentsToHandle.Add("ASB-digital-comms-shut-you-down");

            intentsToHandle.Add("ASB-digital-comms-emily-creation");

            speaking = new Speaking();
        }
Пример #6
0
        private void speaking_Click(object sender, RoutedEventArgs e)
        {
            Speaking Speaking = new Speaking();

            Speaking.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
            this.Close();
            Speaking.Show();
        }
Пример #7
0
        public static Speaking GetSpeakingItem(long ID)
        {
            Speaking Item = null;

            Cache.TryGetValue(ID, out Item);

            return(Item);
        }
Пример #8
0
        public Intro()
        {
            handlerName = this.GetType().Name;

            intentsToHandle.Add("ASB-Digital-comms-opening");

            speaking = new Speaking(speeches);
        }
Пример #9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="WebrtcManager"/> class.
 /// </summary>
 /// <param name="inputDeviceId">The id of the input device.</param>
 /// <param name="outputDeviceId">The id of the output device.</param>
 public WebrtcManager()
 {
     manager = new Webrtc.WebrtcManager();
     manager.IpAndPortObtained += (ip, port) => IpAndPortObtained.Invoke(this, new Tuple <string, ushort>(ip, port));
     manager.AudioInData       += (sender, data) => AudioInData?.Invoke(sender, data);
     manager.AudioOutData      += (sender, data) => AudioOutData?.Invoke(sender, data);
     manager.Speaking          += (sender, data) => Speaking?.Invoke(sender, data);
 }
Пример #10
0
        public Rommel()
        {
            handlerName = this.GetType().Name;

            intentsToHandle.Add("ASB-digital-comms-rommel");

            speaking = new Speaking(speeches);
        }
Пример #11
0
 private void OnSpeak()
 {
     if (!string.IsNullOrEmpty(Speaking.Text))
     {
         Speak(Speaking.Text);
         Speaking.Clear();
     }
 }
Пример #12
0
 public static void New(Speaking a)
 {
     if (Cache.ContainsKey(a.ID))
     {
         Logger.Error("Duplicate speaking item name " + a.ID);
         return;
     }
     Cache.Add(a.ID, a);
     Add(a);
 }
Пример #13
0
 internal void Init(ClientController controller)
 {
     Controller = controller;
     Speaking.Clear();
     chat.Inlines.Clear();
     whom.Items.MoveCurrentToFirst();
     for (int i = whom.Items.Count - 1; i != 0; i--)
     {
         whom.Items.RemoveAt(i);
     }
 }
Пример #14
0
    public float walking, wait;      //for walking and waiting time



    // Use this for initialization
    void Start()
    {
        notalking    = true;                           //The npc is walking
        speak        = FindObjectOfType <Speaking> (); //just setting object of class
        rigid        = GetComponent <Rigidbody2D> ();  // --------------
        lowWalk      = area.bounds.min;                //Sets lower bound
        highWalk     = area.bounds.max;                //Sets higher bound
        waitforcount = wait;                           //sets wait counter equal to wait time
        movecount    = walking;                        //sets walk counter equal to walk time
        forwalking();                                  //calls function
        _area = true;                                  //The area is ture
    }
 public void Mute(Client player, bool silent = false)
 {
     if (Listening.TryRemove(player))
     {
         if (!silent)
         {
             player.Message("Radio off.");
         }
     }
     Speaking.TryRemove(player);
     player.setData("RADIO_MODE", "off");
     player.UpdateHUD();
 }
Пример #16
0
        public static void Load(List <long> IDS)
        {
            StringBuilder IDSB = new StringBuilder();

            foreach (var items in IDS)
            {
                if (IDSB.Length != 0)
                {
                    IDSB.Append(',');
                }
                IDSB.Append(items);
            }

            var reader = DatabaseManager.Provider.ExecuteReader("SELECT * FROM items_speaking WHERE id IN (" + IDSB.ToString() + ");");

            while (reader.Read())
            {
                var item = new Speaking()
                {
                    ID           = reader.GetInt64("id"),
                    LastEatYear  = reader.GetInt32("LastEatYear"),
                    LastEatTime  = reader.GetInt32("LastEatTime"),
                    LastEatHour  = reader.GetInt32("LastEatHour"),
                    Humour       = reader.GetInt32("humour"),
                    Masque       = reader.GetInt32("masque"),
                    Type         = reader.GetInt32("type"),
                    LinkedItem   = reader.GetInt64("linkedItem"),
                    EXP          = reader.GetInt64("xp"),
                    YearInter    = reader.GetInt32("YearInter"),
                    DateInter    = reader.GetInt32("DateInter"),
                    HourInter    = reader.GetInt32("HourInter"),
                    YearReceive  = reader.GetInt32("YearReceived"),
                    DateReceived = reader.GetInt32("DateReceived"),
                    HourReceived = reader.GetInt32("HourReceived"),
                    Associated   = reader.GetInt32("Associated"),
                    TemplateReal = reader.GetInt32("TemplateReal"),
                    LivingItem   = reader.GetInt64("livingitem"),
                    Stats        = reader.GetString("stats"),
                };
                Cache.Add(item.ID, item);
            }

            reader.Close();
            Cache.Values.Where(x => !x.Intialized).ToList().ForEach(x => x.Intialize());
        }
        public bool Leave(Client player, bool removeMember = true)
        {
            bool wasRemoved = false;

            if (removeMember)
            {
                wasRemoved = ChannelMembers.Remove(player.GetCharacterId());
            }
            wasRemoved |= Listening.TryRemove(player);
            Speaking.TryRemove(player);
            if (wasRemoved)
            {
                player.SetRadioChannel(0);
                player.resetData("RADIO_MODE");
                player.UpdateHUD();
            }
            return(wasRemoved);
        }
Пример #18
0
 private async void VoiceConnection_Speak(object sender, Voice.VoiceConnectionEventArgs <Voice.DownstreamEvents.Speak> e)
 {
     await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
                                                                   () =>
     {
         if (e.EventData.UserId == DisplayedUser.UserId)
         {
             if (e.EventData.Speaking)
             {
                 Speaking.Begin();
             }
             else
             {
                 StopSpeaking.Begin();
             }
         }
     });
 }
Пример #19
0
        public static void Load(long IDS)
        {
            var reader = DatabaseManager.Provider.ExecuteReader("SELECT * FROM items_speaking WHERE id = " + IDS + ";");

            Speaking item = null;

            while (reader.Read())
            {
                item = new Speaking()
                {
                    ID           = reader.GetInt64("id"),
                    LastEatYear  = reader.GetInt32("LastEatYear"),
                    LastEatTime  = reader.GetInt32("LastEatTime"),
                    LastEatHour  = reader.GetInt32("LastEatHour"),
                    Humour       = reader.GetInt32("humour"),
                    Masque       = reader.GetInt32("masque"),
                    Type         = reader.GetInt32("type"),
                    LinkedItem   = reader.GetInt64("linkedItem"),
                    EXP          = reader.GetInt64("xp"),
                    YearInter    = reader.GetInt32("YearInter"),
                    DateInter    = reader.GetInt32("DateInter"),
                    HourInter    = reader.GetInt32("HourInter"),
                    YearReceive  = reader.GetInt32("YearReceived"),
                    DateReceived = reader.GetInt32("DateReceived"),
                    HourReceived = reader.GetInt32("HourReceived"),
                    Associated   = reader.GetInt32("Associated"),
                    TemplateReal = reader.GetInt32("TemplateReal"),
                    LivingItem   = reader.GetInt64("livingitem"),
                    Stats        = reader.GetString("stats"),
                };
                Cache.Add(item.ID, item);
            }

            reader.Close();
            if (item != null)
            {
                item.Intialize();
            }
        }
Пример #20
0
    public void WriteAllData()
    {
        memberURL = reference.Child(LoginManager.localId).Push().Key;
        print("memberurl " + memberURL);
        Dictionary <string, Object> childUpdates = new Dictionary <string, Object>();
        // เขียนข้อมูลลง Model
        Member mData = new Member();

        // mData.m_name = Random.Range(0f, 5f);
        mData.m_password = passwordField1.text + "" + passwordField2.text + "" + passwordField3.text + "" + passwordField4.text;
        mData.pic        = ProfileMember.count;
        memberName       = mData.m_name = nameField.text;
        nameList2.Add(nameField.text);
        picList2.Add(ProfileMember.count);
        keykListEditUI.Add(memberURL);
        passwordList.Add(passwordField1.text + "" + passwordField2.text + "" + passwordField3.text + "" + passwordField4.text);

        string json = JsonUtility.ToJson(mData);

        print("json " + json);
        string s = LoginManager.localId;

        // เขียนข้อมูลลง Firebase
        reference.Child(LoginManager.localId).Child(memberURL).SetRawJsonValueAsync(json);

        HelpOther   helpOther   = new HelpOther();
        string      json2       = JsonUtility.ToJson(helpOther);
        KeepInorder keepInorder = new KeepInorder();
        string      json3       = JsonUtility.ToJson(keepInorder);
        Queue       queue       = new Queue();
        string      json4       = JsonUtility.ToJson(queue);
        Speaking    speaking    = new Speaking();
        string      json5       = JsonUtility.ToJson(speaking);

        /*reference.Child(LoginManager.localId).Child(memberURL).Child("HelpOther").Child("History").SetRawJsonValueAsync(json2);
        *  reference.Child(LoginManager.localId).Child(memberURL).Child("KeepInorder").Child("History").SetRawJsonValueAsync(json3);
        *  reference.Child(LoginManager.localId).Child(memberURL).Child("Queue").Child("History").SetRawJsonValueAsync(json4);
        *  reference.Child(LoginManager.localId).Child(memberURL).Child("Speaking").Child("History").SetRawJsonValueAsync(json5); */
    }
Пример #21
0
        public static void Add(Speaking item)
        {
            try
            {
                MySqlCommand Command = new MySqlCommand()
                {
                    Connection  = DatabaseManager.Provider.getConnection(),
                    CommandText = "REPLACE INTO `items_speaking` VALUES(@guid,@2,@3,@4,@5,@6,@7,@8,@9,@10,@11,@12,@13,@14,@15,@16,@17,@18,@19);",
                };
                Command.Prepare();
                Command.Parameters.AddWithValue("@guid", item.ID);
                Command.Parameters.AddWithValue("@2", item.LastEatYear);
                Command.Parameters.AddWithValue("@3", item.LastEatTime);
                Command.Parameters.AddWithValue("@4", item.LastEatHour);
                Command.Parameters.AddWithValue("@5", item.Humour);
                Command.Parameters.AddWithValue("@6", item.Masque);
                Command.Parameters.AddWithValue("@7", item.Type);
                Command.Parameters.AddWithValue("@8", item.LinkedItem);
                Command.Parameters.AddWithValue("@9", item.EXP);
                Command.Parameters.AddWithValue("@10", item.YearInter);
                Command.Parameters.AddWithValue("@11", item.DateInter);
                Command.Parameters.AddWithValue("@12", item.HourInter);
                Command.Parameters.AddWithValue("@13", item.YearReceive);
                Command.Parameters.AddWithValue("@14", item.DateReceived);
                Command.Parameters.AddWithValue("@15", item.HourReceived);
                Command.Parameters.AddWithValue("@16", item.Associated);
                Command.Parameters.AddWithValue("@17", item.TemplateReal);
                Command.Parameters.AddWithValue("@18", item.LivingItem);
                Command.Parameters.AddWithValue("@19", item.Stats);

                Command.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                Logger.Error("Can't execute query : " + e.ToString());
            }
        }
Пример #22
0
        public void MoveItem(int Guid, ItemSlotEnum Slot, bool Packet, int Quantity = 1)
        {
            var Item = this.get(Guid);

            // Item inexistant
            if (Item == null)
            {
                return;
            }

            // Meme endroit ?
            if (Item.Slot == Slot)
            {
                return;
            }

            // Veu equiper un item
            if (Slot > ItemSlotEnum.SLOT_INVENTAIRE && Slot <= ItemSlotEnum.SLOT_BOUCLIER)
            {
                if (Item.Template.Type == 113)
                {
                    if (this.GetItemInSlot(Slot) == null)
                    {
                        this.Player.Send(new TextInformationMessage(TextInformationTypeEnum.ERREUR, 161));
                        return;
                    }
                    if (Item.Quantity > 1)
                    {
                        if (Quantity > Item.Quantity)
                        {
                            Quantity = Item.Quantity;
                        }
                        int newQ = Item.Quantity - Quantity;
                        if (newQ > 0)
                        {
                            InventoryItemTable.TryCreateItem(Item.TemplateID, this.Player, newQ, -1, Item.GetStats().ToItemStats());
                            UpdateObjectquantity(Item, Quantity);
                        }
                    }
                    var EquipedItemB = this.GetItemInSlot(Slot);

                    var SpeakingTestItem = SpeakingTable.Cache.Values.FirstOrDefault(x => x != null && x.LinkedItem == Item.ID && x.Associated == 0);

                    if (SpeakingTestItem != null)
                    {
                        EquipedItemB.SpeakingID     = SpeakingTestItem.ID;
                        SpeakingTestItem.Stats      = EquipedItemB.GetStats().ToItemStats();
                        SpeakingTestItem.LinkedItem = EquipedItemB.ID;
                        SpeakingTestItem.Associated = 1;
                        remove(Item.ID);
                        Player.Send(new ObjectRemoveMessage(Item.ID));
                        Player.Send(new ObjectRefreshMessage(EquipedItemB));
                        Player.myMap.SendToMap(new ObjectActualiseMessage(Player));
                        if (Player.Client.GetFight() != null)
                        {
                            Player.Client.GetFight().SendToFight(new ObjectActualiseMessage(Player));
                        }
                        return;
                    }

                    var    ID        = DatabaseCache.nextSpeakingId++;
                    String Date      = DateTime.Now.Month + "" + DateTime.Now.Day;
                    String InterDate = (DateTime.Now.Month + 3) + "" + DateTime.Now.Day;
                    String Time      = DateTime.Now.Hour + "" + DateTime.Now.Minute;

                    Speaking newItem = new Speaking(ID, DateTime.Now.Year, int.Parse(Date), int.Parse(Time), 1, 1, EquipedItemB.Template.Type, EquipedItemB.ID, 0, DateTime.Now.Year, int.Parse(InterDate), int.Parse(Time), DateTime.Now.Year, int.Parse(Date), int.Parse(Time), 1, Item.TemplateID, Item.ID, EquipedItemB.GetStats().ToItemStats());
                    SpeakingTable.New(newItem);
                    EquipedItemB.SpeakingID = ID;
                    remove(Item.ID);
                    Player.Send(new ObjectRemoveMessage(Item.ID));
                    Player.Send(new ObjectRefreshMessage(EquipedItemB));
                    Player.myMap.SendToMap(new ObjectActualiseMessage(Player));
                    if (Player.Client.GetFight() != null)
                    {
                        Player.Client.GetFight().SendToFight(new ObjectActualiseMessage(Player));
                    }
                    return;
                }

                // Il peu placer l'item dans le slot desiré ?
                if (!ItemTemplateModel.CanPlaceInSlot(ItemTemplateTable.GetTemplate(Item.TemplateID).ItemType, Slot))
                {
                    return;
                }

                // Level requis
                if (ItemTemplateTable.GetTemplate(Item.TemplateID).Level > Player.Level)
                {
                    if (Packet)
                    {
                        Player.Send(new ObjectMoveFailMessage(ObjectMoveFailReasonEnum.REASON_LEVEL_REQUIRED));
                    }
                    return;
                }

                if (!ItemTemplateTable.GetTemplate(Item.TemplateID).Criterions.Equals("") && !ConditionParser.validConditions(this.Player, ItemTemplateTable.GetTemplate(Item.TemplateID).Criterions))
                {
                    this.Player.Send(new ImMessage("119|43"));
                    return;
                }

                var EquipedItem = this.GetItemInSlot(Slot);

                // Si item deja equipé dans le slot
                if (EquipedItem != null)
                {
                    // Deplacement dans l'inventaire
                    Player.GetStats().UnMerge(EquipedItem.GetStats());
                    this.Player.Life    -= EquipedItem.GetStats().GetTotal(EffectEnum.AddVitalite);
                    EquipedItem.Position = -1;
                    Player.Send(new ObjectMoveSucessMessage(EquipedItem.ID, -1));
                }

                // Template deja equipé
                if (this.HasTemplateEquiped(Item.TemplateID))
                {
                    if (Packet)
                    {
                        Player.Send(new ObjectMoveFailMessage(ObjectMoveFailReasonEnum.REASON_ALREADY_EQUIPED));
                    }
                    return;
                }

                /*var simlarItem = this.getSimilarInventoryItem(Item);
                 * if (simlarItem != null)
                 * {
                 *  this.UpdateObjectquantity(simlarItem, simlarItem.Quantity + Item.Quantity);
                 *  remove(Item.ID);
                 *  InventoryItemTable.removeItem(Item.ID);
                 *  Player.Send(new ObjectRemoveMessage(Item.ID));
                 *
                 * }
                 * else*/
                if (Item.Quantity > 1)
                {
                    var NewItem = InventoryItemTable.TryCreateItem(Item.TemplateID, this.Player, 1, (short)Slot, Item.Effects);
                    this.UpdateObjectquantity(Item, Item.Quantity - 1);
                }
                else
                {
                    // On modifi la position et fusionne les stats
                    Item.Position = (short)Slot;
                    Player.Send(new ObjectMoveSucessMessage(Item.ID, (short)Slot));
                    Player.Send(new ObjectMoveSucessMessage(Item.ID, (short)Item.Position));
                }

                if (GetItemInSlot(ItemSlotEnum.SLOT_ARME) != null)
                {
                    Player.Send(new ObjectTaskMessage(-1));
                }

                Player.GetStats().Merge(Item.GetStats());
                this.Player.Life += Item.GetStats().GetTotal(EffectEnum.AddVitalite);
                this.Player.Life += Item.GetStats().GetTotal(EffectEnum.AddVie);
                if (Packet)
                {
                    Player.Client.Send(new AccountStatsMessage(Player));
                    Player.myMap.SendToMap(new ObjectActualiseMessage(Player));
                    if (Player.Client.GetFight() != null)
                    {
                        Player.Client.GetFight().SendToFight(new ObjectActualiseMessage(Player));
                    }
                }
            }
            else
            {
                var NeedActualise = false;

                // Si l'item est equipé, on deduit les stats
                if (Item.Slot > ItemSlotEnum.SLOT_INVENTAIRE && Item.Slot < ItemSlotEnum.SLOT_BOUCLIER)
                {
                    // Retire les stats
                    Player.GetStats().UnMerge(Item.GetStats());
                    this.Player.Life -= Item.GetStats().GetTotal(EffectEnum.AddVitalite);
                    this.Player.Life -= Item.GetStats().GetTotal(EffectEnum.AddVie);
                    if (Player.Life <= 0)
                    {
                        Player.Life = 1;
                    }
                    if (Packet)
                    {
                        Player.Client.Send(new AccountStatsMessage(this.Player));
                        NeedActualise = true;
                    }
                }

                // On tente de fusionner
                if (!this.TryMergeItem(Item.TemplateID, Item.Effects, Slot, Item.Quantity, Item))
                {
                    Item.Position = (short)Slot;
                    if (Packet)
                    {
                        Player.Send(new ObjectMoveSucessMessage(Item.ID, (short)Item.Position));
                    }
                }

                if (NeedActualise)
                {
                    Player.myMap.SendToMap(new ObjectActualiseMessage(Player));
                    if (Player.Client.GetFight() != null)
                    {
                        Player.Client.GetFight().SendToFight(new ObjectActualiseMessage(Player));
                    }
                }
            }
            onMoveItem(Item);
        }
Пример #23
0
 public void Clear()
 {
     Speaking.Clear();
 }
Пример #24
0
 private Speaking UpdateSpeaking()
 {
     Speaking current = GetSpeaking();
     // if this speaker is different from the last one, start with the
     // mouth open and reset the cooldown
     if(current != previousSpeaker) {
         isMouthOpen = true;
         nextMouthToggle = Time.time
             + Random.Range(.5f * mouthCooldown, 1.5f * mouthCooldown);
     } else {
         // same speaker, see if we need to toggle the mouth
         if(Time.time > nextMouthToggle) {
             isMouthOpen = !isMouthOpen;
             nextMouthToggle = Time.time
                 + Random.Range(.5f * mouthCooldown, 1.5f * mouthCooldown);
         }
     }
     previousSpeaker = current;
     return current;
 }
Пример #25
0
    public string[] lines;     //a string array to hold the various lines of dialouge

    // Use this for initialization
    void Start()
    {
        speak = FindObjectOfType <Speaking> ();        //justs sets as previously stated
    }
Пример #26
0
 public void Speak()
 {
     //null-conditional operator
     Speaking?.Invoke(this, new EventArgs());
 }
Пример #27
0
    private void Update()
    {
        if (!ended)   //If the cutscene is not ended...

        //Managing the spooky sound effect.
        {
            if (!Game.savedVektor)
            {
                if (index < 20)
                {
                    spooky.volume = 0f;
                }
                else if (index == 20)
                {
                    spooky.volume = 0.1f;
                }
                else if (index == 21)
                {
                    spooky.volume = 0.25f;
                }
                else if (index == 22)
                {
                    spooky.volume = 0.4f;
                }
                else if (index == 23)
                {
                    spooky.volume = 0.6f;
                }
                else if (index == 24)
                {
                    spooky.volume = 0.8f;
                }
                else if (index == 25)
                {
                    spooky.volume = 1f;
                }
            }
            else
            {
                spooky.volume = 0f;
            }

            //Determine which text mesh is currently being used.
            int currentSpeaker = speakingCharacterIndex[index];
            switch (currentSpeaker)
            {
            case 0:     //Heart speaking.
                whoSpeak                = Speaking.Heart;
                maxCharsALine           = 30;
                tMeshCurrentlyBeingUsed = heartTMesh;
                cAndVTMesh.text         = "";
                break;

            case 1:     //Carl Speaking.
                whoSpeak                = Speaking.Carl;
                maxCharsALine           = 48;
                tMeshCurrentlyBeingUsed = cAndVTMesh;
                heartTMesh.text         = "";
                break;

            case 2:     //Vektor speaking.
                whoSpeak                = Speaking.Vektor;
                maxCharsALine           = 48;
                tMeshCurrentlyBeingUsed = cAndVTMesh;
                heartTMesh.text         = "";
                break;
            }

            //When to set certain graphics to be active.
            heartText.SetActive(whoSpeak == Speaking.Heart);
            carlAndVektorText.SetActive(whoSpeak == Speaking.Vektor || whoSpeak == Speaking.Carl);
            carlAndVektorTextBox.SetActive(whoSpeak == Speaking.Vektor || whoSpeak == Speaking.Carl);
            carlPicture.SetActive(whoSpeak == Speaking.Carl);
            vektorPicture.SetActive(whoSpeak == Speaking.Vektor);

            if ((Input.GetButtonDown("Submit") || Input.GetButtonDown("Shoot")) && index != endAtLine && ableToGoOn)
            {
                index++;
                charsCurrently = 0;
                PlaySound.NoLoop(advanceTextSound);
                textBeingWritten = "";
                StartCoroutine(TypeText());
                tMeshCurrentlyBeingUsed.text = "";
                ableToGoOn = false;
            }

            if ((Input.GetButtonDown("Submit") || Input.GetButtonDown("Shoot")) && index >= endAtLine && ableToGoOn)
            {
                ended = true;
            }
        }
        else     //Load credits when ended...
        {
            if (!Game.savedVektor)
            {
                SceneManager.LoadScene(16);
            }
            else
            {
                fadeOutTime       -= Time.deltaTime;
                whiteNoise.volume -= Time.deltaTime / 7f;
                if (whiteNoise.volume <= 0)
                {
                    whiteNoise.volume = 0;
                }
                if (!playedFadeTween)
                {
                    iTweenEvent.GetEvent(fadeOut, "fadeout").Play();
                    playedFadeTween = true;
                }
                if (fadeOutTime <= 0)
                {
                    SceneManager.LoadScene(16);
                }
            }
        }
    }