Esempio n. 1
0
    // Update is called once per frame
    void Update()
    {
        if (mode == GuardMode.Patrol)
        {
            agent.speed = patrolSpeed;
        }
        else if (mode == GuardMode.Search || mode == GuardMode.Attack)
        {
            agent.speed = searchSpeed;
        }

        if (agent.velocity.magnitude > 0f && !animating)
        {
            var playableClip = AnimationClipPlayable.Create(guardWalk);
            playableClip.speed = agent.speed;
            animator.Play(playableClip);
            animating = true;
        }

        if (agent.velocity.x <= 0.0f)
        {
            this.transform.rotation = Quaternion.Euler(new Vector3(0f, 180f, 0f));
        }
        else if (agent.velocity.x > 0.0f)
        {
            this.transform.rotation = Quaternion.Euler(new Vector3(0f, 0f, 0f));
        }

        if (agent.remainingDistance < 0.5f && (mode == GuardMode.Patrol || mode == GuardMode.Search))
        {
            GoToNextPoint();
        }

        if (fov.visibleTargets.Count > 0)
        {
            agent.destination = fov.visibleTargets [0].transform.position;
            mode = GuardMode.Attack;
        }

        if (agent.isOnOffMeshLink && agent.currentOffMeshLinkData.linkType != OffMeshLinkType.LinkTypeManual)
        {
            agent.CompleteOffMeshLink();
        }
        else if (agent.isOnOffMeshLink)
        {
            var obj = agent.currentOffMeshLinkData.offMeshLink;

            if (obj.GetComponent <Door> () != null)
            {
                bool open = obj.GetComponent <Door> ().open;

                if (!open)
                {
                    obj.GetComponent <Door> ().OpenDoor();
                }
                else
                {
                    agent.ResetPath();
                }
            }
        }
    }
Esempio n. 2
0
        // Load config
        public static void LoadConfig()
        {
            JSONNode configJson;

            if (!JSON.Deserialize(ConfigFilePath, out configJson, false))
            {
                Log.Write($"{CONFIG_FILE} not found, using default values");
                return;
            }

            Log.Write($"Loading config from {CONFIG_FILE}");
            try {
                JSONNode weaponJson;
                if (configJson.TryGetAs("bow", out weaponJson))
                {
                    Bow.Damage = weaponJson.GetAs <int>("damage");
                    Bow.Reload = weaponJson.GetAs <int>("reload");
                    Bow.Range  = weaponJson.GetAs <int>("range");
                }
                if (configJson.TryGetAs("crossbow", out weaponJson))
                {
                    Crossbow.Damage = weaponJson.GetAs <int>("damage");
                    Crossbow.Reload = weaponJson.GetAs <int>("reload");
                    Crossbow.Range  = weaponJson.GetAs <int>("range");
                }
                if (configJson.TryGetAs("matchlockgun", out weaponJson))
                {
                    MatchlockGun.Damage = weaponJson.GetAs <int>("damage");
                    MatchlockGun.Reload = weaponJson.GetAs <int>("reload");
                    MatchlockGun.Range  = weaponJson.GetAs <int>("range");
                }
                string setting;
                if (configJson.TryGetAs("guardmode", out setting))
                {
                    if (setting.Equals("active") || setting.Equals("Active"))
                    {
                        ModeSetting = GuardMode.Active;
                    }
                    else if (setting.Equals("passive") || setting.Equals("Passive"))
                    {
                        ModeSetting = GuardMode.Passive;
                    }
                    else
                    {
                        Log.Write($"ERROR: invalid guardmode setting '{setting}'. Using defaults");
                    }
                }

                int rangeSetting;
                if (configJson.TryGetAs("passiveProtectionRange", out rangeSetting))
                {
                    PassiveProtectionRange = rangeSetting;
                }

                bool shootSetting;
                if (configJson.TryGetAs("shootMountedPlayers", out shootSetting))
                {
                    ShootMountedPlayers = shootSetting;
                }
            } catch (Exception e) {
                Log.Write($"Could not parse {CONFIG_FILE}: {e.Message}");
            }

            return;
        }