using System; using System.Collections.Generic; using UnityEngine; public class CommonParameterContainer : MonoBehaviour { [SerializeField] private GameObject hudObj; private StartSeneData startSceneData; private MessageBoxController messageCon; [Header("Env")] public bool lockMouse = false; public float damage = 50; // damage to enemy public float fireRate = 0.5f; public int timeLimit = 30; public bool lockCameraX = false; public bool lockCameraY = true; public bool spawnAgentInAllMap = true; public int spinRecordMax = 40; public float spinPenaltyThreshold = 10; public float facingInviewEnemyDisCOEF = 0.5f; [Header("Dynamic Defaut Rewards")] //[Tooltip("Hit Enemy reward")] //public float hitRewardDefault = 60.0f; [Tooltip("Free mode Hit Enemy reward")] public float hitTargetRewardDefault = 25f; //[Tooltip("Enemy down reward")] //public float killRewardDefault = 60.0f; [Tooltip("Enemy down in area Reward")] public float killTargetEnemyRewardDefault = 25f; [Tooltip("stay in firebasesArea reward")] public float inAreaRewardDefault = 12f; [Tooltip("free left time bonus reward. ALLR + leftTime * r")] public float freeTimeBonusPerSec = 1.0f; [Tooltip("target left time bonus reward. ALLR + leftTime * r")] public float targetTimeBonusPerSec = 0.5f; [Tooltip("in area left time bonus reward. ALLR + leftTime * r")] public float areaTimeBonusPerSec = 0.2f; [Tooltip("distance reward reward = r*(1-(nowDis/startDis))")] public float distanceReward = 50.0f; [Tooltip("facing to Target distance reward reward = r*(1-(nowDis/startDis))")] public float facingTargetReward = 10.0f; [Space(10)] [Tooltip("Goto Win reward")] public float goWinRewardDefault = 999f; [Tooltip("Attack Win reward")] public float attackWinRewardDefault = 999f; [Tooltip("Defence Win reward")] public float defenceWinRewardDefault = 999f; [Tooltip("free Win reward")] public float freeWinRewardDefault = 999f; [Header("Static Rewards")] [Tooltip("Nothing happened reward")] public float nonReward = -1f; [Tooltip("Episode Lose reward")] public float loseReward = -999f; [Tooltip("Agent Do shoot action reward")] public float shootReward = -0.5f; [Tooltip("Hit Not target Enemy reward")] public float hitNonTargetReward = -5f; [Tooltip("Not Target Enemy down reward")] public float killNonTargetReward = -5f; [Tooltip("Agent Do shoot action but gun is not read")] public float shootWithoutReadyReward = -1.15f; [Tooltip("Kill bonus reward stack to nothing happend reward")] public float killBonusReward = 0.0f; [Tooltip("Facing to enemy's reward")] public float facingReward = 5f; [Tooltip("Shoot at target area but didn't hit enemy")] public float shootTargetAreaReward = 10f; [Header("Penalty Rewards")] [Tooltip("move Penalty Reward")] public float movePenalty = 0.1f; [Tooltip("spiiiiiiin Panalty Reward")] public float spinPenalty = 0.08f; [Tooltip("while move mouse a little bit's penalty")] public float mousePenalty = 0.06f; [NonSerialized] public SceneBlocksSet scenePrefabSet; [NonSerialized] public int gameMode; // 0 = trainning mode, 1 = play mode [NonSerialized] public float attackProb = 0f; [NonSerialized] public List attackLevelProbs = new List(); [NonSerialized] public float gotoProb = 0f; [NonSerialized] public List gotoLevelProbs = new List(); [NonSerialized] public float defenceProb = 0f; [NonSerialized] public List defenceLevelProbs = new List(); private void Start() { messageCon = hudObj.GetComponent(); try { // try get start scene data startSceneData = GameObject.Find("StartSceneDataTransfer").GetComponent(); messageCon.PushMessage( new List { "ParameterContainer:", "StartSceneDataTransfer found!" }, new List { "green", "white" }); } catch { // if not found, find dummy StartSeneData startSceneData = GameObject.Find("StartSceneDataTransferDummy").GetComponent(); messageCon.PushMessage( new List { "ParameterContainer:", "StartSceneDataTransfer not found!Use Dummy." }, new List { "orange" }); } gameMode = startSceneData.gameMode; attackProb = startSceneData.attackProb; attackLevelProbs = startSceneData.attackLevelProbs; gotoProb = startSceneData.gotoProb; gotoLevelProbs = startSceneData.gotoLevelProbs; defenceProb = startSceneData.defenceProb; defenceLevelProbs = startSceneData.defenceLevelProbs; scenePrefabSet = startSceneData.scenePrefabSet; } }