2023-10-22 16:54:30 +00:00
|
|
|
using System;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using UnityEngine;
|
|
|
|
|
2023-11-03 03:56:44 +00:00
|
|
|
public class CommonParameterContainer : Singleton<CommonParameterContainer>
|
2023-10-22 16:54:30 +00:00
|
|
|
{
|
|
|
|
[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;
|
2023-10-23 18:34:15 +00:00
|
|
|
public string group1Tag = "Player";
|
|
|
|
public string group2Tag = "Enemy";
|
2023-10-22 16:54:30 +00:00
|
|
|
|
|
|
|
[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<float> attackLevelProbs = new List<float>();
|
|
|
|
[NonSerialized] public float gotoProb = 0f;
|
|
|
|
[NonSerialized] public List<float> gotoLevelProbs = new List<float>();
|
|
|
|
[NonSerialized] public float defenceProb = 0f;
|
|
|
|
[NonSerialized] public List<float> defenceLevelProbs = new List<float>();
|
|
|
|
|
|
|
|
private void Start()
|
|
|
|
{
|
2023-11-03 03:56:44 +00:00
|
|
|
Instance.persistThroughScene = false;
|
2023-10-22 16:54:30 +00:00
|
|
|
messageCon = hudObj.GetComponent<MessageBoxController>();
|
|
|
|
try
|
|
|
|
{
|
|
|
|
// try get start scene data
|
|
|
|
startSceneData = GameObject.Find("StartSceneDataTransfer").GetComponent<StartSeneData>();
|
|
|
|
messageCon.PushMessage(
|
|
|
|
new List<string> { "ParameterContainer:", "StartSceneDataTransfer found!" },
|
|
|
|
new List<string> { "green", "white" });
|
|
|
|
}
|
|
|
|
catch
|
|
|
|
{
|
|
|
|
// if not found, find dummy StartSeneData
|
|
|
|
startSceneData = GameObject.Find("StartSceneDataTransferDummy").GetComponent<StartSeneData>();
|
|
|
|
messageCon.PushMessage(
|
|
|
|
new List<string> { "ParameterContainer:", "StartSceneDataTransfer not found!Use Dummy." },
|
|
|
|
new List<string> { "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;
|
|
|
|
}
|
|
|
|
}
|