fix Q25
遊戲3的角度
This commit is contained in:
parent
40ce37edff
commit
7e8fa7732a
@ -43,6 +43,8 @@ public class IncenseController : MonoBehaviour
|
||||
private float fallTimer = 0f;
|
||||
private bool hasLanded = false;
|
||||
private float finalSincerity = 0f;
|
||||
|
||||
public System.Action<int> OnCountdownFinished;
|
||||
|
||||
void Start()
|
||||
{
|
||||
@ -81,6 +83,13 @@ public class IncenseController : MonoBehaviour
|
||||
CalculateStability();
|
||||
UpdateVisuals();
|
||||
UpdateUI();
|
||||
|
||||
// 觸發時間到事件
|
||||
if (hasLanded)
|
||||
{
|
||||
int angle = Mathf.RoundToInt(currentAngle);
|
||||
OnCountdownFinished?.Invoke(angle);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -32,7 +32,7 @@ public class IncenseGameManager : MonoBehaviour
|
||||
public int gameOverCountdownSec = 10; // ✅ 新增:GameOver倒計時秒數
|
||||
|
||||
[Header("Result Settings")]
|
||||
public float receivedAngle = 87.5f; // 假的接收角度,之後會從另一台電腦接收
|
||||
public float receivedAngle = 90f; // 假的接收角度,之後會從另一台電腦接收
|
||||
|
||||
[Header("Incense Settings")]
|
||||
public GameObject incensePrefab;
|
||||
@ -46,6 +46,9 @@ public class IncenseGameManager : MonoBehaviour
|
||||
private int totalIncenseCount = 20;
|
||||
private bool gameActive = true;
|
||||
private int gameOverCountdownVal; // ✅ 新增:當前倒計時數值
|
||||
private bool isReceivedAngle = false;
|
||||
|
||||
public System.Action OnCountdownFinished;
|
||||
|
||||
void OnEnable()
|
||||
{
|
||||
@ -57,6 +60,8 @@ public class IncenseGameManager : MonoBehaviour
|
||||
currentTime = gameTime;
|
||||
currentPowerValue = initialPowerValue;
|
||||
gameActive = true;
|
||||
receivedAngle = 90f;
|
||||
isReceivedAngle = false;
|
||||
|
||||
// 顯示遊戲UI,隱藏結果UI
|
||||
if (gamePlayUI) gamePlayUI.SetActive(true);
|
||||
@ -344,6 +349,9 @@ public class IncenseGameManager : MonoBehaviour
|
||||
// SceneManager.LoadScene("NextScene");
|
||||
// 或者呼叫其他控制器的方法
|
||||
Debug.Log("GameOver倒計時結束!");
|
||||
|
||||
// 觸發時間到事件
|
||||
OnCountdownFinished?.Invoke();
|
||||
}
|
||||
|
||||
void ClearAllIncense()
|
||||
@ -361,6 +369,12 @@ public class IncenseGameManager : MonoBehaviour
|
||||
|
||||
void SetupResultIncense()
|
||||
{
|
||||
if (isReceivedAngle == false)
|
||||
{
|
||||
angleDisplayText.text = "";
|
||||
return;
|
||||
}
|
||||
|
||||
if (resultIncense != null)
|
||||
{
|
||||
// 設置結果香的角度
|
||||
@ -383,6 +397,7 @@ public class IncenseGameManager : MonoBehaviour
|
||||
public void SetReceivedAngle(float angle)
|
||||
{
|
||||
receivedAngle = angle;
|
||||
isReceivedAngle = true;
|
||||
if (!gameActive) // 如果已在結果畫面,立即更新
|
||||
{
|
||||
SetupResultIncense();
|
||||
|
||||
@ -950,6 +950,7 @@ MonoBehaviour:
|
||||
playCountdownText: {fileID: 981401567}
|
||||
incenseTransform: {fileID: 1100068051}
|
||||
incenseHolderTransform: {fileID: 0}
|
||||
incenseController: {fileID: 1726446969}
|
||||
finishGoToNextButton: {fileID: 535960335}
|
||||
finishBackToMenuButton: {fileID: 443005029}
|
||||
--- !u!114 &981401567 stripped
|
||||
@ -1669,6 +1670,17 @@ PrefabInstance:
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: cefaaa3e8d6afa74d9be9cc1341b1a09, type: 3}
|
||||
--- !u!114 &1726446969 stripped
|
||||
MonoBehaviour:
|
||||
m_CorrespondingSourceObject: {fileID: 6134439403010925337, guid: cefaaa3e8d6afa74d9be9cc1341b1a09, type: 3}
|
||||
m_PrefabInstance: {fileID: 1726446968}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 571e1448f855fad41b25c97b16854985, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::IncenseController
|
||||
--- !u!1 &1780727869
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@ -2109,7 +2109,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
m_IsActive: 0
|
||||
--- !u!224 &85247803
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -9307,7 +9307,7 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5304771535841513772, guid: 8c3e8d5430f6ce145b97407a9411b8a2, type: 3}
|
||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size
|
||||
value: 1
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5304771535841513772, guid: 8c3e8d5430f6ce145b97407a9411b8a2, type: 3}
|
||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode
|
||||
@ -9323,7 +9323,7 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5304771535841513772, guid: 8c3e8d5430f6ce145b97407a9411b8a2, type: 3}
|
||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
|
||||
value: GoToGameWaitingPanel
|
||||
value:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5304771535841513772, guid: 8c3e8d5430f6ce145b97407a9411b8a2, type: 3}
|
||||
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName
|
||||
|
||||
@ -17,6 +17,7 @@ public class ClientGameSticksSceneController : MonoBehaviour
|
||||
public TMP_Text playCountdownText;
|
||||
public Transform incenseTransform;
|
||||
public Transform incenseHolderTransform;
|
||||
public IncenseController incenseController;
|
||||
|
||||
private Image sincerityMeterFill;
|
||||
|
||||
@ -106,7 +107,7 @@ public class ClientGameSticksSceneController : MonoBehaviour
|
||||
{
|
||||
ClientMessageHandler.Instance.SendMessageToServer("gameSticksFinish", "");
|
||||
}
|
||||
StartCoroutine(NextStep(4, 3));
|
||||
StartCoroutine(NextStep(4, 6));
|
||||
}
|
||||
}
|
||||
if (finishPanel)
|
||||
@ -129,7 +130,22 @@ public class ClientGameSticksSceneController : MonoBehaviour
|
||||
}
|
||||
init();
|
||||
|
||||
incenseController.OnCountdownFinished = OnCountdownFinished;
|
||||
}
|
||||
|
||||
private void OnCountdownFinished(int angle)
|
||||
{
|
||||
if (ClientMessageHandler.Instance)
|
||||
{
|
||||
GameSticksResult msgObj = new GameSticksResult {
|
||||
angle = angle,
|
||||
};
|
||||
|
||||
string payload = JsonUtility.ToJson(msgObj);
|
||||
ClientMessageHandler.Instance.SendMessageToServer("gameSticksFinish", payload);
|
||||
}
|
||||
}
|
||||
|
||||
private void finishGoToNextButton_onClicked()
|
||||
{
|
||||
|
||||
|
||||
@ -37,3 +37,7 @@ public class GameMessageSurvey
|
||||
public string text1;
|
||||
}
|
||||
|
||||
public class GameSticksResult
|
||||
{
|
||||
public int angle;
|
||||
}
|
||||
@ -230,7 +230,15 @@ public class NetworkMessageHandler : MonoBehaviour
|
||||
break;
|
||||
case "gameSticksFinish":
|
||||
{
|
||||
// 保持不變
|
||||
GameSticksResult msgObj = JsonUtility.FromJson<GameSticksResult>(msg.payload);
|
||||
|
||||
if (msgObj != null)
|
||||
{
|
||||
if (ServerGameSticksPanel.Instance)
|
||||
{
|
||||
ServerGameSticksPanel.Instance.OnReceivedResult(msgObj.angle);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@ -8,20 +8,32 @@ public class ServerGameSticksPanel : MonoBehaviour
|
||||
{
|
||||
public static ServerGameSticksPanel Instance;
|
||||
|
||||
private IncenseGameManager gameManager;
|
||||
private CustomerReportSystem customReportScript;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
Instance = this;
|
||||
gameManager = gameObject.GetComponentInChildren<IncenseGameManager>(includeInactive: true);
|
||||
customReportScript = gameObject.GetComponentInChildren<CustomerReportSystem>(includeInactive: true);
|
||||
}
|
||||
|
||||
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
||||
void Start()
|
||||
{
|
||||
gameManager.OnCountdownFinished = OnCountdownFinished;
|
||||
customReportScript.OnCustomerReportConfirmed = OnCustomerReportConfirmed;
|
||||
}
|
||||
|
||||
|
||||
private void OnCountdownFinished()
|
||||
{
|
||||
//倒數時間到,直接跳轉頁面
|
||||
if (ServerWorkSceneController.Instance)
|
||||
{
|
||||
ServerWorkSceneController.Instance.processStep(17);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnCustomerReportConfirmed(int[] values)
|
||||
{
|
||||
if (values.Length < 3) { return; }
|
||||
@ -31,6 +43,18 @@ public class ServerGameSticksPanel : MonoBehaviour
|
||||
GlobalData.KARMA_SCORE = values[1];
|
||||
GlobalData.SINCERITY_SCORE = values[2];
|
||||
ServerWorkTopRightScore.Instance.UpdateScoreVals();
|
||||
|
||||
//跳轉頁面
|
||||
if (ServerWorkSceneController.Instance)
|
||||
{
|
||||
ServerWorkSceneController.Instance.processStep(17);
|
||||
}
|
||||
}
|
||||
|
||||
public void OnReceivedResult(int angle)
|
||||
{
|
||||
//更新角度
|
||||
gameManager.SetReceivedAngle(angle);
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
|
||||
Loading…
Reference in New Issue
Block a user