public void UnsubscribeMethods(InteractingState state) { state.OnInteractingStart -= TakeKnife; state.OnInteractingStop -= PutDownKnife; playerHands = null; }
public void StartEvent() { interactingState = InteractingState.INTERACTING_WITH_PLAYER; NPCs.Instance.DisableInput(); }
public void SubscribeMethods(InteractingState state, Transform hands) { playerHands = hands; state.OnInteractingStart += TakeKnife; state.OnInteractingStop += PutDownKnife; }
/// <summary> /// Starts the conversation with the player /// </summary> public void StartConversation() { if (conversationTree.root == conversationTree.currentNode) { DialogueWindow.instance.progressBar.ClearStars(conversationParts); DialogueWindow.instance.UpdateNPCArrow(conversationTree.currentNode); DialogueWindow.instance.UpdateNPCPortrait(conversationTree.currentNode); #if !UNITY_WEBPLAYER if (npcDatabaseId != -1) { MainDatabase.Instance.InsertSql("INSERT INTO Interaction (NPCID,LevelPlayID,Completed)VALUES(" + npcDatabaseId + "," + GameManager.Instance.LevelPlayID + ",'False');"); interactionID = MainDatabase.Instance.getIDs("Select Max(InteractionID) from Interaction;"); MainDatabase.Instance.InsertSql("INSERT INTO InteractionTime (InteractionID,StartTime)VALUES(" + interactionID + ",datetime('now','localtime'));"); } #endif } // Set NPC interaction state to talking with the player interactingState = InteractingState.TALKING_PLAYER; // Set dialogue to current conversation node SetDialogue(conversationTree.currentNode); // Disable input to all other NPCs NPCs.Instance.DisableInput(); }
/// <summary> /// Sets current dialogue in conversation tree /// </summary> /// <param name='dialogueReply'> /// Dialogue to be used for conversation /// </param> public void SetDialogue(Sentence dialogueReply) { // If a dialogue was given in the function if (dialogueReply != null) { // then start the conversation with given dialogue conversationTree.ShowCurrentDialogue(dialogueReply); } else { // Otherwise hide dialogue window DialogueWindow.instance.ShowWindow(null); // Set state to waiting player interactingState = InteractingState.WAITING_PLAYER; } }
public void ResetState() { interactingState = InteractingState.WAITING_PLAYER; NPCs.Instance.EnableInput(); Glow(); }
/// <summary> /// Handle Event: OnQuestCompleted /// </summary> public void OnQuestCompleted() { if (miniGame != null) { ResourceManager.UnloadAsset(miniGame.gameObject); Destroy(miniGame.gameObject); } Destroy(conversationTree.gameObject); conversationTree = null; Destroy(cutScene.gameObject); cutScene = null; Resources.UnloadUnusedAssets(); InputManager.Instance.ReceivedUIInput(); Player.instance.PlayRewardPortrait(playerRewardPortrait, missingToy, foundToyColor, celebratingTime); //Add interaction Completed in interaction table //RecordAnswers("Emotions"); //RecordAnswers("Comprehension"); //RecordAnswers("ConversationStart"); //RecordAnswers("MaintainConversation"); //RecordAnswers("ProblemSolving"); interactionID = MainDatabase.Instance.getIDs("Select Max(InteractionID) from Interaction;"); MainDatabase.Instance.UpdateSql("UPDATE Interaction SET Completed='True' WHERE InteractionID=" + interactionID + ";"); int NPCID = MainDatabase.Instance.getIDs("Select NPCID from Interaction where InteractionID=" + interactionID + ";"); //changing the status of NPC to completed by assigning to 1 MainDatabase.Instance.ChangeUserNPCStatus(ApplicationState.Instance.userID, NPCID, 1); //Adding toy to userToy table. DBToyInfo toyAchieved = MainDatabase.Instance.getToyInfoByInteractionID(interactionID); MainDatabase.Instance.InsertSql("INSERT INTO UserToy (UserID,ToyID,InteractionID) VALUES ('" + ApplicationState.Instance.userID + "','"+toyAchieved.ToyID+ "','"+interactionID+ "');"); // Remove glowing effect around NPC RemoveGlow(); Markers.Instance.OnQuestCompleted(toyWorldPosition, NPCs.Instance.GetNpcID(this)); interactingState = InteractingState.COMPLETED_TASK; NPCs.Instance.UpdateNPCStatus(); NPCs.Instance.EnableInput(); GameManager.Instance.PrepareUserPrompt(); }
//Set NPC to completed state (used for when loading) public void NPCCompletedStatus() { if (miniGame != null) Destroy(miniGame.gameObject); if (conversationTree != null) Destroy(conversationTree.gameObject); if (cutScene != null) Destroy(cutScene.gameObject); RemoveGlow(); Markers.Instance.DisplayNPCToyCompleted(NPCs.Instance.GetNpcID(this)); interactingState = InteractingState.COMPLETED_TASK; if (finalSprite1 != null) sprite.mainTexture = finalSprite1; if (finalSprite2 != null) sprite2.mainTexture = finalSprite2; NPCs.Instance.EnableInput(); }