private void Start()
    {
        // get the transform of the main camera
        if (Camera.main != null)
        {
            m_Cam = Camera.main.transform;
        }
        else
        {
            Debug.LogWarning(
                "Warning: no main camera found. Third person character needs a Camera tagged \"MainCamera\", for camera-relative controls.");
            // we use self-relative controls in this case, which probably isn't what the user wants, but hey, we warned them!
        }
        // get the third person character ( this should never be null due to require component )
        m_Character = GetComponentInChildren<HumanCharacter>();
        m_CharacterAim = GetComponent<HumanMovement>();
        //col = GetComponent<CapsuleCollider>();
        //startHeight = col.height;
        m_RigidBody = GetComponent<Rigidbody>();
        anim = GetComponentInChildren<Animator>();
        charStats = GetComponent<CharacterStats>();
        weaponManager = GetComponent<WeaponManager>();
        cameraFunctions = Camera.main.gameObject.GetComponentInParent<FreeCameraLook>();
        offsetCross = cameraFunctions.crosshairOffsetWiggle;
        //m_RigidBody.AddForce(1, 1, 1);

        //m_Character.Move(m_Move, crouch, m_Jump, false, lookPos);
    }
Beispiel #2
0
    public HumanCharacter SpawnRandomHumanCharacter(string name, AISquad squad, Vector3 loc)
    {
        HumanCharacter character = GameObject.Instantiate(Resources.Load("HumanCharacter") as GameObject).GetComponent <HumanCharacter>();



        character.CharacterID = name;

        character.Initialize();
        character.MyNavAgent.enabled = false;
        character.CharacterType      = CharacterType.Human;

        character.SquadID = squad.ID;
        character.Faction = squad.Faction;
        GameManager.Inst.ItemManager.LoadNPCInventory(character.Inventory, squad.Faction, squad.Tier);
        character.MyAI.WeaponSystem.LoadWeaponsFromInventory(false);

        character.MyStatus.MaxHealth = 100;
        character.MyStatus.Health    = 100;

        character.transform.position = loc;
        //character.transform.position = new Vector3(70.76f, 3.296f, -23.003f);

        character.MyNavAgent.enabled = true;

        character.Name = GameManager.Inst.DBManager.DBHandlerDialogue.GetRandomName();

        character.gameObject.name = character.gameObject.name + _counter.ToString();
        _counter++;



        return(character);
    }
Beispiel #3
0
 public void TriggerOnSelectActiveMember(HumanCharacter prev)
 {
     if (OnSelectActiveMember != null)
     {
         OnSelectActiveMember(prev);
     }
 }
Beispiel #4
0
    private void UpdateBoostIndicators()
    {
        foreach (UISprite indicator in IndicatorSprites)
        {
            NGUITools.SetActive(indicator.gameObject, false);
        }

        List <PlayerStatBoost> boosts = GameManager.Inst.PlayerControl.Survival.GetStatBoosts();

        foreach (PlayerStatBoost boost in boosts)
        {
            if (_boostIndicators.ContainsKey(boost.Type))
            {
                if (!boost.IsEnded)
                {
                    NGUITools.SetActive(_boostIndicators[boost.Type].gameObject, true);
                }
            }
        }

        HumanCharacter player = GameManager.Inst.PlayerControl.SelectedPC;

        //check if bleeding
        if (player.MyStatus.BleedingSpeed > 0)
        {
            NGUITools.SetActive(IndicatorSprites[0].gameObject, true);
        }

        //check if there's food
        if (GameManager.Inst.PlayerControl.Survival.GetEatenCalories() > 0)
        {
            NGUITools.SetActive(IndicatorSprites[1].gameObject, true);
        }
    }
 public void Show(HumanCharacter character)
 {
     this.character           = character;
     this.pic.sprite          = Resources.Load <Sprite>("Images/Pics/" + character.characterName);
     this.areYouSureText.text = "Are you sure you want to sacrifice " + character.characterName + " ?";
     for (int i = 0; i < this.prosPanel.childCount; ++i)
     {
         Transform proPanel = this.prosPanel.GetChild(i);
         if (character.prosKeepAlive.Length > i)
         {
             proPanel.GetComponentInChildren <Text>().text = character.prosKeepAlive[i];
         }
         proPanel.gameObject.SetActive(character.prosKeepAlive.Length > i);
     }
     for (int i = 0; i < this.consPanel.childCount; ++i)
     {
         Transform conPanel = this.consPanel.GetChild(i);
         if (character.consKeepAlive.Length > i)
         {
             conPanel.GetComponentInChildren <Text>().text = character.consKeepAlive[i];
         }
         conPanel.gameObject.SetActive(character.consKeepAlive.Length > i);
     }
     this.gameObject.SetActive(true);
 }
Beispiel #6
0
 public void SetFollowTaskForSelectedMember(HumanCharacter target)
 {
     SelectedMember.MyAI.BlackBoard.FollowTarget = target;
     SelectedMember.MyAI.SetDynamicyGoal(MemberFollowGoal, 0);
     RefreshMarkerForMember(SelectedMember);
     _lastAssignedMember = SelectedMember;
 }
Beispiel #7
0
    public override bool Evaluate(int compareValue, int op)
    {
        if (!IsActive)
        {
            return(false);
        }

        if (!IsForDurability)
        {
            int value = GetValue();

            return(StaticUtility.CompareIntWithOp(value, compareValue, op));
        }
        else
        {
            //get a list of all items with ItemID
            //see if any of them has durability percent greater than DurabilityPercent
            float               desiredDurabilityPercent = Convert.ToSingle(compareValue) / 100f;
            HumanCharacter      player = GameManager.Inst.PlayerControl.SelectedPC;
            List <GridItemData> items  = player.Inventory.FindItemsInBackpack(ItemID);
            foreach (GridItemData item in items)
            {
                float durability = item.Item.Durability / item.Item.MaxDurability;
                if (durability >= desiredDurabilityPercent)
                {
                    return(true);
                }
            }
        }

        return(false);
    }
Beispiel #8
0
    private void Start()
    {
        // get the transform of the main camera
        if (Camera.main != null)
        {
            m_Cam = Camera.main.transform;
        }
        else
        {
            Debug.LogWarning(
                "Warning: no main camera found. Third person character needs a Camera tagged \"MainCamera\", for camera-relative controls.");
            // we use self-relative controls in this case, which probably isn't what the user wants, but hey, we warned them!
        }
        // get the third person character ( this should never be null due to require component )
        m_Character    = GetComponentInChildren <HumanCharacter>();
        m_CharacterAim = GetComponent <HumanMovement>();
        //col = GetComponent<CapsuleCollider>();
        //startHeight = col.height;
        m_RigidBody     = GetComponent <Rigidbody>();
        anim            = GetComponentInChildren <Animator>();
        charStats       = GetComponent <CharacterStats>();
        weaponManager   = GetComponent <WeaponManager>();
        cameraFunctions = Camera.main.gameObject.GetComponentInParent <FreeCameraLook>();
        offsetCross     = cameraFunctions.crosshairOffsetWiggle;
        //m_RigidBody.AddForce(1, 1, 1);

        //m_Character.Move(m_Move, crouch, m_Jump, false, lookPos);
    }
Beispiel #9
0
    void OnTriggerExit(Collider other)
    {
        HumanCharacter human = other.GetComponent <HumanCharacter>();

        if (human != null)
        {
            human.CurrentDoor = null;
        }
    }
    void OnTriggerExit(Collider other)
    {
        HumanCharacter human = other.GetComponent <HumanCharacter>();

        if (human != null && human.MyAI.ControlType == AIControlType.Player)
        {
            GameManager.Inst.PlayerControl.CurrentEntrance = null;
        }
    }
    void OnTriggerEnter(Collider other)
    {
        //Debug.Log("collision! " + other.name);
        HumanCharacter human = other.GetComponent <HumanCharacter>();

        if (human != null && human.MyAI.ControlType == AIControlType.Player)
        {
            GameManager.Inst.PlayerControl.CurrentEntrance = this;
        }
    }
Beispiel #12
0
 public void SetGuardTaskForSelectedMember(int guardLevel, Vector3 guardDirection, Vector3 guardPos, float range)
 {
     SelectedMember.MyAI.BlackBoard.GuardLevel     = guardLevel;
     SelectedMember.MyAI.BlackBoard.GuardDirection = guardDirection;
     SelectedMember.MyAI.BlackBoard.PatrolLoc      = guardPos;
     SelectedMember.MyAI.BlackBoard.PatrolRange    = new Vector3(range, 5, range);
     SelectedMember.MyAI.BlackBoard.HasPatrolInfo  = true;
     SelectedMember.MyAI.SetDynamicyGoal(MemberGuardGoal, 0);
     _lastAssignedMember = SelectedMember;
 }
    public DialogueHandle LoadNPCDialogue(HumanCharacter npc)
    {
        if (npc == null)
        {
            return(null);
        }

        XmlDocument xmlDoc     = new XmlDocument();
        string      path       = Application.dataPath + "/GameData/Dialogue/";
        string      dialogueID = npc.CharacterID;

        if (!File.Exists(path + dialogueID + ".xml"))
        {
            dialogueID = npc.SquadID;
            if (!File.Exists(path + dialogueID + ".xml"))
            {
                dialogueID = npc.Faction.ToString();
                if (!File.Exists(path + dialogueID + ".xml"))
                {
                    dialogueID = "Default";
                }
            }
        }



        string file = File.ReadAllText(path + dialogueID + ".xml");

        try
        {
            xmlDoc.LoadXml(file);
        }
        catch (XmlException)
        {
            return(null);
        }

        CurrentDialogXML = xmlDoc;

        string introText = "";
        string nextNode  = "";

        DialogueHandle handle = new DialogueHandle();

        if (GetDialogueIntro(out introText, out nextNode))
        {
            handle.NextNode  = nextNode;
            handle.IntroText = introText;

            return(handle);
        }

        return(null);
    }
Beispiel #14
0
 public bool GiveSmallRation(HumanCharacter character)
 {
     if (this.rations <= 0)
     {
         return(false);
     }
     this.rations--;
     character.hungry = false;
     this.OnGameDataChanged();
     return(true);
 }
Beispiel #15
0
    void OnTriggerEnter(Collider other)
    {
        //Debug.Log("collision! " + other.name);
        HumanCharacter human = other.GetComponent <HumanCharacter>();

        if (human != null)
        {
            human.CurrentDoor = this;
            //Debug.Log("assigning current door for " + human.name);
        }
    }
Beispiel #16
0
    private void RefillHouseHoldSquadMembers()
    {
        if (CurrentSquad == null || MaxOccupants <= 0)
        {
            return;
        }

        if (GameManager.Inst.NPCManager.GetFactionData(CurrentSquad.Faction).CharacterType == CharacterType.Mutant)
        {
            int numberToSpawn = MaxOccupants - CurrentSquad.Members.Count;
            for (int i = 0; i < numberToSpawn; i++)
            {
                Vector3         spawnLoc  = FindSpawnLocation();
                string          modelID   = GetRandomCharacterModelID(CurrentSquad.Faction);
                MutantCharacter character = GameManager.Inst.NPCManager.SpawnRandomMutantCharacter(modelID, CurrentSquad, spawnLoc);
                CurrentSquad.AddMember(character);
            }
        }
        else if (GameManager.Inst.NPCManager.GetFactionData(CurrentSquad.Faction).CharacterType == CharacterType.Animal)
        {
            int numberToSpawn = MaxOccupants - CurrentSquad.Members.Count;
            for (int i = 0; i < numberToSpawn; i++)
            {
                Vector3         spawnLoc  = FindSpawnLocation();
                string          modelID   = GetRandomCharacterModelID(CurrentSquad.Faction);
                MutantCharacter character = GameManager.Inst.NPCManager.SpawnRandomAnimalCharacter(modelID, CurrentSquad, spawnLoc);
                CurrentSquad.AddMember(character);
            }
        }
        else
        {
            int currentMembersCount = GetAllMembersCount();
            if (currentMembersCount < MaxOccupants)
            {
                //first create a commander if there isn't one
                if (!CurrentSquad.IsThereCommander() && CommanderIdleDest != null)
                {
                    string         modelID   = GetRandomCharacterModelID(CurrentSquad.Faction);
                    HumanCharacter commander = GameManager.Inst.NPCManager.SpawnRandomHumanCharacter(modelID, CurrentSquad, CommanderIdleDest.transform.position);
                    commander.IsCommander = true;
                    CurrentSquad.AddMember(commander);
                    CurrentSquad.Commander = commander;
                }
                int numberToSpawn = MaxOccupants - currentMembersCount;
                for (int i = 0; i < numberToSpawn; i++)
                {
                    Vector3        spawnLoc  = FindSpawnLocation();
                    string         modelID   = GetRandomCharacterModelID(CurrentSquad.Faction);
                    HumanCharacter character = GameManager.Inst.NPCManager.SpawnRandomHumanCharacter(modelID, CurrentSquad, spawnLoc);
                    CurrentSquad.AddMember(character);
                }
            }
        }
    }
Beispiel #17
0
    public void FadeOutCallBack()
    {
        HumanCharacter character = GameManager.Inst.PlayerControl.SelectedPC;

        character.transform.position = OtherPortal.SpawnPoint.position;
        character.Destination        = character.transform.position;
        GameManager.Inst.CameraController.ResetCamera();
        GameManager.Inst.WorldManager.ChangeEnvironment(OtherPortal.Environment);
        GameManager.Inst.SoundManager.SetMusic(OtherPortal.Environment, GameManager.Inst.WorldManager.IsDayTime);
        Time.timeScale = 1;
    }
Beispiel #18
0
 public bool GiveFullRation(HumanCharacter character)
 {
     if (this.rations <= 1)
     {
         return(false);
     }
     this.rations     -= 2;
     character.hungry  = false;
     character.Health += 20;
     this.OnGameDataChanged();
     return(true);
 }
Beispiel #19
0
 public bool Sacrifice(HumanCharacter character)
 {
     if (character.IsDestroyed())
     {
         return(false);
     }
     character.Health = 0;
     this.UpdateOtherCharacters();
     this.rations += 9;
     this.OnGameDataChanged();
     return(true);
 }
Beispiel #20
0
    public void SaveInventoryData(HumanCharacter character)
    {
        List <GridItemData> datas = character.Inventory.Backpack;

        datas.Clear();

        foreach (GridItem item in BackpackGrid.Items)
        {
            GridItemData data = new GridItemData(item.Item, item.ColumnPos, item.RowPos, item.Orientation, item.GetQuantity());
            datas.Add(data);
        }
    }
Beispiel #21
0
    private string GetSpeakerName()
    {
        HumanCharacter speaker = (HumanCharacter)GameManager.Inst.PlayerControl.SelectedPC.MyAI.BlackBoard.InteractTarget;

        if (speaker == null)
        {
            return("");
        }
        else
        {
            return(speaker.Name);
        }
    }
Beispiel #22
0
 void Start()
 {
     agent         = GetComponent <NavMeshAgent>();
     charMove      = GetComponentInChildren <HumanCharacter>();
     anim          = GetComponentInChildren <Animator>();
     weaponManager = GetComponent <WeaponManager>();
     Transform[] wayp = waypointHolder.GetComponentsInChildren <Transform>();
     foreach (Transform tr in wayp)
     {
         if (tr != waypointHolder.transform)
         {
             waypoints.Add(tr);
         }
     }
 }
Beispiel #23
0
    public void Pause()
    {
        GameManager.Inst.CameraController.SetCameraMode(CameraModeEnum.Party);
        _lastAssignedMember = null;
        GameManager.Inst.CursorManager.SetCursorState(CursorState.Default);

        InputEventHandler.OnIssueTaskRMB -= GameManager.Inst.PlayerControl.OnIssueTaskMouseDown;
        InputEventHandler.OnIssueTaskRMB += GameManager.Inst.PlayerControl.OnIssueTaskMouseDown;
        InputEventHandler.OnIssueTaskLMB -= GameManager.Inst.PlayerControl.OnIssueTaskMouseDown;


        SelectedMemberTask = PartyTasks.Default;

        InputEventHandler.Instance.TriggerOnGamePause();
    }
Beispiel #24
0
    private void RepositionateTeamMembers()
    {
        List <HumanCharacter> charactersToPlace = new List <HumanCharacter>(this.otherCharacters)
        {
            this.player
        };
        float angle = 360 / charactersToPlace.Count;

        for (Vector2 position = this.startPosition; charactersToPlace.Count > 0; position = position.Rotate(angle))
        {
            int            randomCharacterIndex = UnityEngine.Random.Range(0, charactersToPlace.Count);
            HumanCharacter c = charactersToPlace[randomCharacterIndex];
            charactersToPlace.RemoveAt(randomCharacterIndex);
            c.transform.position = position;
        }
    }
Beispiel #25
0
    public void PerSecondUpdate()
    {
        HumanCharacter player = GameManager.Inst.PlayerControl.SelectedPC;

        //update running speed
        if (player.MyStatus.CarryWeight <= player.MyStatus.MaxCarryWeight)
        {
            float weightRatio = player.MyStatus.CarryWeight / player.MyStatus.MaxCarryWeight;
            player.MyStatus.RunSpeedModifier    = 0.8f + (1 - weightRatio) * 0.4f;
            player.MyStatus.SprintSpeedModifier = 1.0f + (1 - weightRatio) * 0.2f;
            player.MyStatus.StaminaReduceMult   = Mathf.Clamp01(0.4f + weightRatio * 0.6f);
        }
        else
        {
            //only allow walk and sprint
            player.MyStatus.RunSpeedModifier    = 0.8f;
            player.MyStatus.SprintSpeedModifier = 0.7f;
            player.MyStatus.StaminaReduceMult   = 1.5f;
        }

        //update stamina restore speed
        player.MyStatus.StaminaRestoreSpeed = 1 + (player.MyStatus.Energy / player.MyStatus.MaxEnergy) * 5;

        //increase energy if there's consumed calories
        if (_eatenCalories > 0)
        {
            float amount = 1;
            _eatenCalories -= amount;
            player.MyStatus.SetEnergy(player.MyStatus.Energy + amount);
        }

        //update boosts
        List <PlayerStatBoost> boostCopy = new List <PlayerStatBoost>(_statBoosts);

        foreach (PlayerStatBoost boost in boostCopy)
        {
            if (boost.IsEnded)
            {
                _statBoosts.Remove(boost);
            }
            else
            {
                boost.PerSecondUpdate();
            }
        }
    }
Beispiel #26
0
    private void ClearAIForMember(HumanCharacter member)
    {
        member.MyAI.ForceStopCurrentAction();
        member.MyAI.ClearDynamicGoal(0);
        member.SendCommand(CharacterCommands.ReleaseTrigger);

        if (member.UpperBodyState == HumanUpperBodyStates.Aim && Input.GetKey(KeyCode.Mouse1) &&
            member == SelectedMember && member.MyAI.ControlType == AIControlType.Player)
        {
            member.SendCommand(CharacterCommands.Aim);
        }
        else
        {
            member.SendCommand(CharacterCommands.StopAim);
        }
        member.SendCommand(CharacterCommands.Idle);
    }
Beispiel #27
0
    public void Enter(HumanCharacter character)
    {
        if (IsLocked)
        {
            //here check if player has key
            int keyCount = GameManager.Inst.PlayerControl.SelectedPC.Inventory.CountItemsInBackpack(KeyItemID);
            if (keyCount > 0)
            {
                //play unlock key sound
                IsLocked = false;
            }
            else
            {
                //play locked door sound
                if (SoundType == ContainerSoundType.Wood)
                {
                    AudioClip clip = GameManager.Inst.SoundManager.GetClip("WoodDoorLocked");
                    DoorSound.PlayOneShot(clip, 0.6f);
                }
                else
                {
                    AudioClip clip = GameManager.Inst.SoundManager.GetClip("MetalDoorLocked");
                    DoorSound.PlayOneShot(clip, 0.6f);
                }

                return;
            }
        }

        //adjust environment for player
        if (character.MyAI.ControlType == AIControlType.Player)
        {
            Time.timeScale = 0;
            GameManager.Inst.UIManager.FadingPanel.FadeOutAndInCallBack(1, 1, 1, FadeOutCallBack);
            character.SendCommand(CharacterCommands.Idle);
        }
        else
        {
            character.transform.position = OtherPortal.SpawnPoint.position;
            character.Destination        = character.transform.position;
            character.SendCommand(CharacterCommands.Idle);
        }

        DoorSound.Play();
    }
Beispiel #28
0
    public void RemoveHumanCharacter(HumanCharacter character)
    {
        if (_humansInScene.Contains(character))
        {
            _humansInScene.Remove(character);
        }

        if (_deadBodies.ContainsKey((Character)character))
        {
            _deadBodies.Remove((Character)character);
        }
        _allCharacters.Remove((Character)character);
        if (_fadeTimers.ContainsKey((Character)character))
        {
            _fadeTimers.Remove((Character)character);
        }
        GameObject.Destroy(character.gameObject);
    }
Beispiel #29
0
    public void Initialize()
    {
        SelectedPC = GameObject.Find("HumanCharacter").GetComponent<HumanCharacter>();
        SelectedPC.Initialize();

        _numberOfRocks = 10;

        InputEventHandler.OnCameraSwitchMode += SwitchCameraMode;

        InputEventHandler.OnPlayerMove += this.OnPlayerMove;
        InputEventHandler.OnPlayerStopMove += this.OnPlayerStopMove;
        InputEventHandler.OnWeaponPullTrigger += this.OnWeaponPullTrigger;
        InputEventHandler.OnWeaponReleaseTrigger += this.OnWeaponReleaseTrigger;
        InputEventHandler.OnWeaponAim += this.OnWeaponAim;
        InputEventHandler.OnWeaponStopAim += this.OnWeaponStopAim;
        InputEventHandler.OnKick += this.OnKick;

        InputEventHandler.OnPlayerMoveLeft += this.OnPlayerMoveLeft;
        InputEventHandler.OnPlayerMoveRight += this.OnPlayerMoveRight;
        InputEventHandler.OnPlayerMoveUp += this.OnPlayerMoveUp;
        InputEventHandler.OnPlayerMoveDown += this.OnPlayerMoveDown;
        InputEventHandler.OnPlayerStopMoveLeft += this.OnPlayerStopMoveLeft;
        InputEventHandler.OnPlayerStopMoveRight += this.OnPlayerStopMoveRight;
        InputEventHandler.OnPlayerStopMoveUp += this.OnPlayerStopMoveUp;
        InputEventHandler.OnPlayerStopMoveDown += this.OnPlayerStopMoveDown;

        InputEventHandler.OnPlayerStartSprint += this.OnPlayerStartSprint;
        InputEventHandler.OnPlayerStopSprint += this.OnPlayerStopSprint;

        InputEventHandler.OnPlayerToggleSneak += OnToggleSneaking;
        InputEventHandler.OnPlayerThrow += OnThrow;

        InputEventHandler.OnPlayerSwitchWeapon2 += OnToggleWeapon2;
        InputEventHandler.OnPlayerSwitchWeapon1 += OnToggleWeapon1;

        InputEventHandler.OnPlayerReload += OnWeaponReload;

        _moveDirection = PlayerMoveDirEnum.Stop;
        _moveDirection2 = PlayerMoveDirEnum.Stop;

        SelectedPC.CurrentStance = HumanStances.Run;
    }
Beispiel #30
0
    public override void Show()
    {
        NGUITools.SetActive(this.gameObject, true);
        this.IsActive = true;

        if (_entries == null)
        {
            _entries = new Stack <DialogueEntry>();
        }

        if (_options == null)
        {
            _options = new List <DialogueOptionEntry>();
        }

        if (_topics == null)
        {
            _topics = new List <TopicEntry>();
        }

        InputEventHandler.Instance.State = UserInputState.Dialogue;

        HumanCharacter npc    = (HumanCharacter)GameManager.Inst.PlayerControl.SelectedPC.MyAI.BlackBoard.InteractTarget;
        DialogueHandle handle = GameManager.Inst.DBManager.DBHandlerDialogue.LoadNPCDialogue(npc);

        if (handle == null)
        {
            return;
        }


        ClearDialogue();
        ClearTopics();
        LoadIntro(handle.IntroText);
        _currentNodeID = handle.NextNode;
        _rootNode      = handle.NextNode;

        Time.timeScale = 0;

        RefreshDialogue(_currentNodeID, true);
    }
Beispiel #31
0
    private void SaveInventoryData(HumanCharacter character)
    {
        CharacterInventory inventory = character.Inventory;

        inventory.ArmorSlot   = null;
        inventory.HeadSlot    = null;
        inventory.RifleSlot   = null;
        inventory.SideArmSlot = null;
        inventory.ThrowSlot   = null;
        inventory.ToolSlot    = null;

        if (BodySlots[0].Items.Count > 0)
        {
            inventory.ArmorSlot = BodySlots[0].Items[0].Item;
        }

        if (BodySlots[1].Items.Count > 0)
        {
            inventory.HeadSlot = BodySlots[1].Items[0].Item;
        }

        if (BodySlots[2].Items.Count > 0)
        {
            inventory.RifleSlot = BodySlots[2].Items[0].Item;
        }

        if (BodySlots[3].Items.Count > 0)
        {
            inventory.SideArmSlot = BodySlots[3].Items[0].Item;
        }

        if (BodySlots[4].Items.Count > 0)
        {
            inventory.ThrowSlot = BodySlots[4].Items[0].Item;
        }

        if (BodySlots[5].Items.Count > 0)
        {
            inventory.ToolSlot = BodySlots[5].Items[0].Item;
        }
    }
Beispiel #32
0
    public void SetActiveMember(HumanCharacter character)
    {
        SelectedMember.MyAI.ControlType = AIControlType.PlayerTeam;
        RefreshMarkerForMember(SelectedMember);
        HumanCharacter prev = SelectedMember;

        SelectedMember = character;
        SelectedMember.MyAI.ControlType = AIControlType.Player;
        RefreshMarkerForMember(SelectedMember);
        if (SelectedMember.CurrentStance != HumanStances.Crouch)
        {
            SelectedMember.CurrentStance = HumanStances.Run;
        }

        if (!_playerControl.IsGamePaused)
        {
            GameManager.Inst.CameraController.SetCameraMode(CameraModeEnum.Leader);
            ClearAIForMember(SelectedMember);
        }

        InputEventHandler.Instance.TriggerOnSelectActiveMember(prev);
    }
Beispiel #33
0
	public void Pause()
	{
		GameManager.Inst.CameraController.SetCameraMode(CameraModeEnum.Party);
		_lastAssignedMember = null;
		GameManager.Inst.CursorManager.SetCursorState(CursorState.Default);

		InputEventHandler.OnIssueTaskRMB -= GameManager.Inst.PlayerControl.OnIssueTaskMouseDown;
		InputEventHandler.OnIssueTaskRMB += GameManager.Inst.PlayerControl.OnIssueTaskMouseDown;
		InputEventHandler.OnIssueTaskLMB -= GameManager.Inst.PlayerControl.OnIssueTaskMouseDown;


		SelectedMemberTask = PartyTasks.Default;

		InputEventHandler.Instance.TriggerOnGamePause();
	}
Beispiel #34
0
	private void SaveInventoryData(HumanCharacter character)
	{
		List<GridItemData> datas = character.Inventory.Backpack;
		datas.Clear();

		foreach(GridItem item in BackpackGrid.Items)
		{
			GridItemData data = new GridItemData(item.Item, item.ColumnPos, item.RowPos, item.Orientation, item.GetQuantity());
			datas.Add(data);
		}
	}
Beispiel #35
0
 void Start()
 {
     agent = GetComponent<NavMeshAgent>();
     charMove = GetComponentInChildren<HumanCharacter>();
     anim = GetComponentInChildren<Animator>();
     weaponManager = GetComponent<WeaponManager>();
     Transform[] wayp = waypointHolder.GetComponentsInChildren<Transform>();
     foreach (Transform tr in wayp)
     {
         if (tr != waypointHolder.transform)
             waypoints.Add(tr);
     }
 }
Beispiel #36
0
	public void SetActiveMember(HumanCharacter character)
	{
		SelectedMember.MyAI.ControlType = AIControlType.PlayerTeam;
		RefreshMarkerForMember(SelectedMember);
		HumanCharacter prev = SelectedMember;

		SelectedMember = character;
		SelectedMember.MyAI.ControlType = AIControlType.Player;
		RefreshMarkerForMember(SelectedMember);
		if(SelectedMember.CurrentStance != HumanStances.Crouch)
		{
			SelectedMember.CurrentStance = HumanStances.Run;
		}

		if(!_playerControl.IsGamePaused)
		{
			GameManager.Inst.CameraController.SetCameraMode(CameraModeEnum.Leader);
			ClearAIForMember(SelectedMember);
		}

		InputEventHandler.Instance.TriggerOnSelectActiveMember(prev);
	}
Beispiel #37
0
	public void Initialize()
	{
		SelectedMember = GameObject.Find("HumanCharacter").GetComponent<HumanCharacter>();
		SelectedMember.Initialize();
		RefreshMarkerForMember(SelectedMember);

		/*
		HumanCharacter member2 = GameObject.Find("HumanCharacter3").GetComponent<HumanCharacter>();
		member2.Initialize();
		RefreshMarkerForMember(member2);


		//for testing
		member2.MyAI.BlackBoard.FollowTarget = SelectedMember;
		*/

		Members.Add(SelectedMember);
		//Members.Add(member2);



		MemberGuardGoal = GameManager.Inst.DBManager.DBHandlerAI.GetGoalByID(6);
		MemberGuardGoal.Priority = 0;
		MemberFollowGoal = GameManager.Inst.DBManager.DBHandlerAI.GetGoalByID(8);
		MemberFollowGoal.Priority = 0;

		//initialize inventory and then load weapons to prefab
		GameManager.Inst.ItemManager.LoadPartyInventory();

		RefreshAllMemberArmors();
		RefreshAllMemberWeapons();
	}
    private void Start()
    {
        // get the transform of the main camera
        if (Camera.main != null)
        {
            m_Cam = Camera.main.transform;
        }
        else
        {
            Debug.LogWarning(
                "Warning: no main camera found. Third person character needs a Camera tagged \"MainCamera\", for camera-relative controls.");
            // we use self-relative controls in this case, which probably isn't what the user wants, but hey, we warned them!
        }
        // get the third person character ( this should never be null due to require component )
        m_Character = GetComponent<HumanCharacter>();
        m_CharacterAim = GetComponent<New_Movement>();
        col = GetComponent<CapsuleCollider>();
        startHeight = col.height;
        anim = GetComponent<Animator>();

        weaponManager = GetComponent<WeaponManager>();
        cameraFunctions = Camera.main.transform.root.GetComponent<FreeCameraLook>();
        offsetCross = cameraFunctions.crosshairOffsetWiggle;
    }
Beispiel #39
0
	public void OnSelectActiveMember(HumanCharacter prev)
	{
		SaveInventoryData(prev);
		RebuildInventory();
		DropDiscardedItems();
	}
Beispiel #40
0
	public List<Topic> GetNPCTopics(HumanCharacter npc, HumanCharacter initiator)
	{
		List<Topic> topics = new List<Topic>();

		topics.Add(new Topic("3", "Trade", TopicType.Trade));
		topics.Add(new Topic("5", "Change Subject", TopicType.Return));
		topics.Add(new Topic("4", "Goodbye", TopicType.Exit));

		//topics.Add(new Topic("1", "This place", TopicType.Info));
		//topics.Add(new Topic("2", "Life in the Zone", TopicType.Info));

		XmlNodeList topicList = CurrentDialogXML.GetElementsByTagName("topic");

		int tempIndex = 0;

		if(topicList.Count > 0)
		{
			foreach(XmlNode topic in topicList)
			{
				string id = "";
				string response = "";
				string nextNode = "";
				string title = "";

				XmlNodeList nodeContent = topic.ChildNodes;
				foreach(XmlNode nodeItem in nodeContent)
				{
					if(nodeItem.Name == "id")
					{
						id = nodeItem.InnerText;
					}
						
					if(nodeItem.Name == "response")
					{
						response = nodeItem.InnerText;
					}

					if(nodeItem.Name == "next_node")
					{
						nextNode = nodeItem.InnerText;
					}

					if(nodeItem.Name == "title")
					{
						title = nodeItem.InnerText;
					}
						
				}

				if(id == "")
				{
					id = "temp" + tempIndex;
				}
				if(title == "")
				{
					title = GetTopicTitle(id);
				}

				Topic newTopic = new Topic(id, title, TopicType.Info);

				newTopic.Response = response;
				newTopic.NextNode = nextNode;


				topics.Add(newTopic);


				tempIndex ++;
			}
		}

		return topics;
	}
Beispiel #41
0
	public DialogueHandle LoadNPCDialogue(HumanCharacter npc)
	{
		XmlDocument xmlDoc = new XmlDocument();
		string path = Application.dataPath + "/GameData/Dialogue/";
		string file = File.ReadAllText(path + "BaldMan.xml");
		xmlDoc.LoadXml(file);

		CurrentDialogXML = xmlDoc;

		string introText = "";
		string nextNode = "";

		DialogueHandle handle = new DialogueHandle();

		if(GetDialogueIntro(out introText, out nextNode))
		{
			handle.NextNode = nextNode;
			handle.IntroText = introText;

			return handle;
		}

		return null;
	}
Beispiel #42
0
	public void RefreshMarkerForMember(HumanCharacter member)
	{
		/*
		if(member.Markers.CircleFriendly == null)
		{
			GameObject circle = GameObject.Instantiate(Resources.Load("CharCircleFriendly")) as GameObject;
			member.Markers.CircleFriendly = circle.GetComponent<SpriteRenderer>();
			circle.transform.parent = member.transform;
			circle.transform.localPosition = new Vector3(0, 0.01f, 0);
			circle.transform.localEulerAngles = new Vector3(-90, 0, 0);
			member.Markers.CircleFriendly.enabled = false;
		}

		if(member.Markers.CircleSelected == null)
		{
			GameObject circle = GameObject.Instantiate(Resources.Load("CharCircleSelected")) as GameObject;
			member.Markers.CircleSelected = circle.GetComponent<SpriteRenderer>();
			circle.transform.parent = member.transform;
			circle.transform.localPosition = new Vector3(0, 0.01f, 0);
			circle.transform.localEulerAngles = new Vector3(-90, 0, 0);
			member.Markers.CircleSelected.enabled = false;
		}

		if(member.Markers.TaskMarker == null)
		{
			GameObject marker = GameObject.Instantiate(Resources.Load("GuardTaskMarker")) as GameObject;
			member.Markers.TaskMarker = marker.GetComponent<SpriteRenderer>();
			marker.transform.position = new Vector3(0, 0.01f, 0);
			marker.transform.eulerAngles = new Vector3(-90, 0, 0);
			member.Markers.TaskMarker.enabled = false;
		}

		if(member.Markers.CircleEnemyTarget == null)
		{
			GameObject marker = GameObject.Instantiate(Resources.Load("CharCircleEnemy")) as GameObject;
			member.Markers.CircleEnemyTarget = marker.GetComponent<SpriteRenderer>();
			marker.transform.position = new Vector3(0, 0.01f, 0);
			marker.transform.eulerAngles = new Vector3(-90, 0, 0);
			member.Markers.TaskMarker.enabled = false;
		}

		if(member.Markers.TeamFollowArrow == null)
		{
			GameObject marker = GameObject.Instantiate(Resources.Load("TeamFollowArrow")) as GameObject;
			member.Markers.TeamFollowArrow = marker.GetComponent<SpriteRenderer>();
			marker.transform.position = new Vector3(0, 0.01f, 0);
			marker.transform.eulerAngles = new Vector3(90, 0, 0);
			member.Markers.TeamFollowArrow.enabled = false;
		}

		if(member.MyAI.ControlType == AIControlType.Player)
		{
			member.Markers.CircleFriendly.enabled = false;
			member.Markers.CircleSelected.enabled = true;
			member.Markers.CircleEnemyTarget.enabled = true;

			if(_playerControl.IsGamePaused)
			{
				GoapGoal topGoal = member.MyAI.GetDynamicGoal(0);
				if(topGoal == null)
				{
					member.Markers.TaskMarker.enabled = false;
					member.Markers.TeamFollowArrow.enabled = false;
				}
				else
				{
					if(topGoal.Name == "Defend Position")
					{
						if(member.MyAI.BlackBoard.GuardConfigStage >= 1)
						{
							member.Markers.TaskMarker.enabled = true;
						}
						else
						{
							member.Markers.TaskMarker.enabled = false;
						}
						member.Markers.TeamFollowArrow.enabled = false;
					}
					else if(topGoal.Name == "Follow target")
					{
						member.Markers.TaskMarker.enabled = false;
						member.Markers.TeamFollowArrow.enabled = true;
					}
					else
					{
						member.Markers.TaskMarker.enabled = false;
						member.Markers.TeamFollowArrow.enabled = false;
					}
				}
			}
			else
			{
				member.Markers.TaskMarker.enabled = false;
				member.Markers.TeamFollowArrow.enabled = false;
			}
		}
		else if(member.MyAI.ControlType == AIControlType.PlayerTeam)
		{
			member.Markers.CircleFriendly.enabled = true;
			member.Markers.CircleSelected.enabled = false;
			member.Markers.TaskMarker.enabled = false;
			member.Markers.CircleEnemyTarget.enabled = false;
			member.Markers.TeamFollowArrow.enabled = false;
		}
		*/

	}
    // this constructor will be used by the other one
    public HumanAnimStateGoForward(HumanCharacter parentCharacter)
    {
        this.ParentCharacter = parentCharacter;

        Initialize();
    }
Beispiel #44
0
	public void OnSelectActiveMember(HumanCharacter prev)
	{
		UpdateButtonState();
	}
Beispiel #45
0
	private void SaveInventoryData(HumanCharacter character)
	{
		CharacterInventory inventory = character.Inventory;

		inventory.ArmorSlot = null;
		inventory.HeadSlot = null;
		inventory.RifleSlot = null;
		inventory.SideArmSlot = null;
		inventory.ThrowSlot = null;
		inventory.ToolSlot = null;

		if(BodySlots[0].Items.Count > 0)
		{
			inventory.ArmorSlot = BodySlots[0].Items[0].Item;
		}

		if(BodySlots[1].Items.Count > 0)
		{
			inventory.HeadSlot = BodySlots[1].Items[0].Item;
		}

		if(BodySlots[2].Items.Count > 0)
		{
			inventory.RifleSlot = BodySlots[2].Items[0].Item;
		}

		if(BodySlots[3].Items.Count > 0)
		{
			inventory.SideArmSlot = BodySlots[3].Items[0].Item;
		}

		if(BodySlots[4].Items.Count > 0)
		{
			inventory.ThrowSlot = BodySlots[4].Items[0].Item;
		}

		if(BodySlots[5].Items.Count > 0)
		{
			inventory.ToolSlot = BodySlots[5].Items[0].Item;
		}
	}
Beispiel #46
0
	public void TriggerOnSelectActiveMember(HumanCharacter prev)
	{
		if(OnSelectActiveMember != null)
		{
			OnSelectActiveMember(prev);
		}
	}
Beispiel #47
0
 public void AddHumanCharacter(HumanCharacter character)
 {
     _humansInScene.Add(character);
 }
Beispiel #48
0
	public void SetFollowTaskForSelectedMember(HumanCharacter target)
	{
		SelectedMember.MyAI.BlackBoard.FollowTarget = target;
		SelectedMember.MyAI.SetDynamicyGoal(MemberFollowGoal, 0);
		RefreshMarkerForMember(SelectedMember);
		_lastAssignedMember = SelectedMember;
	}
Beispiel #49
0
	public void SetGuardTaskForSelectedMember(int guardLevel, Vector3 guardDirection, Vector3 guardPos, float range)
	{
		SelectedMember.MyAI.BlackBoard.GuardLevel = guardLevel;
		SelectedMember.MyAI.BlackBoard.GuardDirection = guardDirection;
		SelectedMember.MyAI.BlackBoard.PatrolLoc = guardPos;
		SelectedMember.MyAI.BlackBoard.PatrolRange = new Vector3(range, 5, range);
		SelectedMember.MyAI.BlackBoard.HasPatrolInfo = true;
		SelectedMember.MyAI.SetDynamicyGoal(MemberGuardGoal, 0);
		_lastAssignedMember = SelectedMember;
	}
Beispiel #50
0
	private void ClearAIForMember(HumanCharacter member)
	{
		member.MyAI.ForceStopCurrentAction();
		member.MyAI.ClearDynamicGoal(0);
		member.SendCommand(CharacterCommands.ReleaseTrigger);

		if(member.UpperBodyState == HumanUpperBodyStates.Aim && Input.GetKey(KeyCode.Mouse1) 
			&& member == SelectedMember && member.MyAI.ControlType == AIControlType.Player)
		{
			member.SendCommand(CharacterCommands.Aim);
		}
		else
		{
			member.SendCommand(CharacterCommands.StopAim);
		}
		member.SendCommand(CharacterCommands.Idle);
	}
Beispiel #51
0
	// this constructor will be used by the other one
	public HumanAnimStateIdle(HumanCharacter parentCharacter)
	{
		this.ParentCharacter = parentCharacter;
		
		Initialize();
	}
Beispiel #52
0
	public void SetAttackTaskForSelectedMember(Character target)
	{
		SelectedMember.MyAI.BlackBoard.TargetEnemy = target;
		SelectedMember.MyAI.BlackBoard.IsTargetLocked = true;
		WorkingMemoryFact fact = SelectedMember.MyAI.WorkingMemory.FindExistingFact(FactType.KnownEnemy, target);
		if(fact == null)
		{
			//didn't find it in working memory, create a new fact
			fact = SelectedMember.MyAI.WorkingMemory.AddFact(FactType.KnownEnemy, target, target.transform.position, 0.99f, 0.01f);
			fact.ThreatLevel = 1f;
			fact.ThreatDropRate = 0.03f;
		}
		else
		{
			//found it in working memory, refresh confidence level
			fact.Confidence = 0.99f;
			fact.LastKnownPos = target.transform.position;
		}

		//SelectedMember.MyAI.ClearDynamicGoal(0);
		_lastAssignedMember = SelectedMember;
	}