Closes #82 Building List Up

This commit is contained in:
IDMhan 2023-12-26 14:18:14 +09:00
parent 962ccfbfe7
commit fc2f9bc913
8 changed files with 999 additions and 318 deletions

File diff suppressed because it is too large Load Diff

View File

@ -138,65 +138,65 @@ namespace BlueWaterProject
public void StartInteraction(Transform target)
{
ProximitySelector.enabled = false;
interactionTarget = target;
interactionTarget.GetComponent<InShipNpc>()?.ChangeStateToInteraction();
var targetPosition = interactionTarget.position;
var playerPosition = transform.position;
var directionToTarget = (targetPosition - playerPosition).normalized;
// 캐릭터가 NPC의 왼쪽 또는 오른쪽에 있는지 확인
var crossProduct = Vector3.Cross(directionToTarget, transform.forward).y;
Vector3 desiredPosition;
float desiredScaleX; // 캐릭터의 방
if (crossProduct > 0) // 캐릭터가 NPC의 왼쪽에 있는 경우
{
desiredPosition = targetPosition + interactionTarget.right * 2f;
desiredScaleX = 1f; // 오른쪽을 바라봄
}
else // 캐릭터가 NPC의 오른쪽에 있는 경우
{
desiredPosition = targetPosition + interactionTarget.right * -2f;
desiredScaleX = -1f; // 왼쪽을 바라봄
}
// 장애물 감지
if (Physics.Raycast(playerPosition, (desiredPosition - playerPosition).normalized, Vector3.Distance(playerPosition, desiredPosition), LayerMask.GetMask("Obstacle")))
{
// 장애물이 감지되면, 반대쪽으로 이동
desiredPosition = crossProduct > 0 ? targetPosition + interactionTarget.right * -2f : targetPosition + interactionTarget.right * 2f;
desiredScaleX = -desiredScaleX; // 방향을 반전
}
// 캐릭터를 원하는 위치와 방향으로 부드럽게 이동 및 회전
StartCoroutine(MoveCharacterToPosition(desiredPosition, desiredScaleX));
UiManager.Inst.InShipInteraction.gameObject.SetActive(true);
// ProximitySelector.enabled = false;
// interactionTarget = target;
// interactionTarget.GetComponent<InShipNpc>()?.ChangeStateToInteraction();
//
// var targetPosition = interactionTarget.position;
// var playerPosition = transform.position;
//
// var directionToTarget = (targetPosition - playerPosition).normalized;
//
// // 캐릭터가 NPC의 왼쪽 또는 오른쪽에 있는지 확인
// var crossProduct = Vector3.Cross(directionToTarget, transform.forward).y;
//
// Vector3 desiredPosition;
// float desiredScaleX; // 캐릭터의 방
//
// if (crossProduct > 0) // 캐릭터가 NPC의 왼쪽에 있는 경우
// {
// desiredPosition = targetPosition + interactionTarget.right * 2f;
// desiredScaleX = 1f; // 오른쪽을 바라봄
// }
// else // 캐릭터가 NPC의 오른쪽에 있는 경우
// {
// desiredPosition = targetPosition + interactionTarget.right * -2f;
// desiredScaleX = -1f; // 왼쪽을 바라봄
// }
//
// // 장애물 감지
// if (Physics.Raycast(playerPosition, (desiredPosition - playerPosition).normalized, Vector3.Distance(playerPosition, desiredPosition), LayerMask.GetMask("Obstacle")))
// {
// // 장애물이 감지되면, 반대쪽으로 이동
// desiredPosition = crossProduct > 0 ? targetPosition + interactionTarget.right * -2f : targetPosition + interactionTarget.right * 2f;
// desiredScaleX = -desiredScaleX; // 방향을 반전
// }
//
// // 캐릭터를 원하는 위치와 방향으로 부드럽게 이동 및 회전
// StartCoroutine(MoveCharacterToPosition(desiredPosition, desiredScaleX));
// UiManager.Inst.InShipInteraction.gameObject.SetActive(true);
}
public void StartConversation()
{
if (interactionTarget != null)
{
interactionTarget.GetComponent<DialogueSystemTrigger>().OnConversationStart(interactionTarget);
UiManager.Inst.InShipInteraction.gameObject.SetActive(false);
}
// if (interactionTarget != null)
// {
// interactionTarget.GetComponent<DialogueSystemTrigger>().OnConversationStart(interactionTarget);
// UiManager.Inst.InShipInteraction.gameObject.SetActive(false);
// }
}
public void EndInteraction()
{
ProximitySelector.enabled = true;
interactionTarget.GetComponent<InShipNpc>()?.RestoreState();
// ProximitySelector.enabled = true;
//
//
// interactionTarget.GetComponent<InShipNpc>()?.RestoreState();
}
public void EndConversation()
{
UiManager.Inst.InShipInteraction.gameObject.SetActive(true);
// UiManager.Inst.InShipInteraction.gameObject.SetActive(true);
}
}

View File

@ -24,6 +24,9 @@ namespace BlueWaterProject
[field: Title("Player")]
[field: SerializeField] public ShipPlayer ShipPlayer { get; private set; }
[field: SerializeField] public InShipPlayer InShipPlayer { get; private set; }
[Title("Tycoon")]
public bool IsBuildMode { get; set; }
// Game Data
[Title("Game Data")]

View File

@ -64,20 +64,31 @@ namespace BlueWaterProject
private void OnInteraction(InputValue value)
{
if (GameManager.Inst.IsBuildMode)
{
var buildListPopup = UiManager.Inst.TycoonUi.BuildListPopup;
//TODO 선택했는지 판단해야함
//Assets/EasyGridBuilder Pro/Misc Assets/Prefabs/UI Prefabs/PlaceHolderBuildable.prefab
buildListPopup.Hide();
}
}
private void OnBuildMode(InputValue value)
{
var buildListPopup = UiManager.Inst.TycoonUi.BuildListPopup;
if (buildListPopup.gameObject.activeSelf)
if (buildListPopup.isVisible || GameManager.Inst.IsBuildMode)
{
buildListPopup.Hide();
EasyGridBuilderPro.Instance.SetGridModeBuilding();
GameManager.Inst.IsBuildMode = false;
}
else
{
buildListPopup.Show();
EasyGridBuilderPro.Instance.SetGridModeBuilding();
GameManager.Inst.IsBuildMode = true;
}
}

View File

@ -7,12 +7,12 @@ using UnityEngine;
public class TycoonUi : MonoBehaviour
{
public UIPopup BuildListPopup { get; set; }
public UIView BuildListPopup { get; set; }
private void Init()
{
UiManager.Inst.TycoonUi = this;
BuildListPopup = transform.Find("BuildListPopup").GetComponent<UIPopup>();
BuildListPopup = transform.Find("BuildListView").GetComponent<UIView>();
}
private void Awake()

View File

@ -31,7 +31,6 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 7301794625148554701}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@ -111,7 +110,6 @@ RectTransform:
m_Children:
- {fileID: 7301794624532857029}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
@ -177,7 +175,7 @@ MonoBehaviour:
m_CallState: 2
--- !u!95 &7301794625148554699
Animator:
serializedVersion: 4
serializedVersion: 7
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
@ -191,10 +189,12 @@ Animator:
m_ApplyRootMotion: 0
m_LinearVelocityBlending: 0
m_StabilizeFeet: 0
m_AnimatePhysics: 0
m_WarningMessage:
m_HasTransformHierarchy: 1
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorControllerStateOnDisable: 0
m_KeepAnimatorStateOnDisable: 0
m_WriteDefaultValuesOnDisable: 0
--- !u!114 &7301794625148554698
MonoBehaviour:
m_ObjectHideFlags: 0

View File

@ -19,15 +19,7 @@ MonoBehaviour:
m_Id: 1ffcd137-ef1f-4ebd-b2eb-45d7974bacab
m_Processors:
m_Interactions:
m_SingletonActionBindings:
- m_Name:
m_Id: a70ee01a-c940-4f92-ae7a-5e6928f96980
m_Path: <Mouse>/rightButton
m_Interactions:
m_Processors:
m_Groups:
m_Action: Grid Mode Reset Key
m_Flags: 0
m_SingletonActionBindings: []
m_Flags: 0
gridHeightChangeKey:
m_Name: Grid Height Change Key
@ -54,15 +46,7 @@ MonoBehaviour:
m_Id: 29f9c6e2-ab3f-483c-976a-5692a7022c3c
m_Processors:
m_Interactions:
m_SingletonActionBindings:
- m_Name:
m_Id: 114b32b9-5c98-4850-8d1c-f714200756e8
m_Path: <Keyboard>/r
m_Interactions:
m_Processors:
m_Groups:
m_Action: Build Mode Activation Key
m_Flags: 0
m_SingletonActionBindings: []
m_Flags: 0
buildablePlacementKey:
m_Name: Buildable Placement Key
@ -202,41 +186,6 @@ MonoBehaviour:
m_Action: Buildable Selection Key
m_Flags: 0
m_Flags: 0
useMoveModeActivationKey: 1
moveModeActivationKey:
m_Name: Move Mode Activation Key
m_Type: 0
m_ExpectedControlType:
m_Id: b572a271-87fb-429c-b8f7-98a1dbe55229
m_Processors:
m_Interactions:
m_SingletonActionBindings:
- m_Name:
m_Id: b38cc68f-0c89-487c-be7b-aeea44d53e09
m_Path: <Keyboard>/u
m_Interactions:
m_Processors:
m_Groups:
m_Action: Move Mode Activation Key
m_Flags: 0
m_Flags: 0
buildableMoveKey:
m_Name: Buildable Move Key
m_Type: 0
m_ExpectedControlType:
m_Id: c7949b7a-f44f-4b53-9f2d-82deae062c13
m_Processors:
m_Interactions:
m_SingletonActionBindings:
- m_Name:
m_Id: a4c62cd0-ef5c-425f-80fb-487b146d0967
m_Path: <Mouse>/leftButton
m_Interactions:
m_Processors:
m_Groups:
m_Action: Buildable Move Key
m_Flags: 0
m_Flags: 0
gridSaveKey:
m_Name: Grid Save Key
m_Type: 0

View File

@ -1174,8 +1174,8 @@ namespace SoulGames.EasyGridBuilderPro
public void SetGridModeBuilding()
{
if (useBuildModeActivationKey)
{
//if (useBuildModeActivationKey)
//{
if (GetGridMode() != GridMode.Build)
{
isBuildableBuildActive = true;
@ -1186,7 +1186,7 @@ namespace SoulGames.EasyGridBuilderPro
isBuildableBuildActive = false;
SetGridMode(GridMode.None);
}
}
//}
}
public void TriggerBuildablePlacement() //This function handles 'buildableGridObjectTypeSO' object placement