// 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(); } } } }
// 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; }