This commit is contained in:
Janis
2022-06-05 15:19:27 +02:00
parent 831f1423b5
commit 21e915bef3
7 changed files with 392 additions and 28 deletions

View File

@@ -0,0 +1,13 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//! DEBUG TEXT
public class StackSizeText : MonoBehaviour
{
public ItemObject itemObject;
void Update()
{
gameObject.GetComponent<TMPro.TextMeshPro>().text = itemObject.stackSize.ToString();
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 113a94b344e135249a6f9928d9617df2
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,5 +1,200 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &7598110288018339969
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7235504030812167489}
- component: {fileID: 8792484635333935822}
- component: {fileID: 776590918211704844}
- component: {fileID: 2839967651599440056}
- component: {fileID: 7272902474709330505}
m_Layer: 0
m_Name: stackSizeText
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7235504030812167489
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7598110288018339969}
m_LocalRotation: {x: 0.000017120734, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 1}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 8936059402275091559}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0.002, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0.51, y: 1.26}
m_SizeDelta: {x: 0.8314, y: 0.8685}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &8792484635333935822
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7598110288018339969}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 113a94b344e135249a6f9928d9617df2, type: 3}
m_Name:
m_EditorClassIdentifier:
itemObject: {fileID: 8936059402275091553}
--- !u!222 &776590918211704844
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7598110288018339969}
m_CullTransparentMesh: 1
--- !u!23 &2839967651599440056
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7598110288018339969}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 4294967295
m_RendererPriority: 0
m_Materials:
- {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &7272902474709330505
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7598110288018339969}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: 1
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 5.1
m_fontSizeBase: 5.1
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 1
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 0
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
_SortingLayer: 0
_SortingLayerID: 0
_SortingOrder: 0
m_hasFontAssetChanged: 0
m_renderer: {fileID: 2839967651599440056}
m_maskType: 0
--- !u!1 &8936059402275091554
GameObject:
m_ObjectHideFlags: 0
@@ -31,7 +226,8 @@ Transform:
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Children:
- {fileID: 7235504030812167489}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -75,7 +271,7 @@ SpriteRenderer:
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_SortingOrder: 1
m_Sprite: {fileID: 21300000, guid: f703c137a9648eb4bbffb1f6b1aed05e, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
@@ -103,7 +299,9 @@ MonoBehaviour:
stackSize: 1
itemSO: {fileID: 0}
timeAlive: 0
maxTimeAlive: 60
maxTimeAlive: 600
maxTimeWithoutConveyor: 10
timeWithoutConveyor: 0
--- !u!61 &3180622400512972912
BoxCollider2D:
m_ObjectHideFlags: 0

View File

@@ -100,7 +100,7 @@ MonoBehaviour:
placedObjectTypeSO: {fileID: 11400000, guid: fbec66c9ae95b954d994cc26105f0302, type: 2}
origin: {x: 0, y: 0}
isBlueprint: 1
speed: 0.3
speed: 1
previousConveyor: {fileID: 0}
nextConveyor: {fileID: 0}
sprites:

View File

@@ -3,7 +3,7 @@ using UnityEngine;
public class ConveyorPO : PlacedObject
{
public float speed = 0.3f;
[SerializeField] private float speed = 0.3f;
public ConveyorPO previousConveyor;
public ConveyorPO nextConveyor;
@@ -11,6 +11,17 @@ public class ConveyorPO : PlacedObject
public List<Sprite> sprites = new List<Sprite>(); // 0 = Up, 1 = Right, 2 = Down, 3 = Left
public float GetSpeed()
{
if (nextConveyor != null)
{
return speed;
}
else
{
return 0;
}
}
private List<ConveyorPO> GetConveyorsAround()
{
@@ -36,35 +47,70 @@ public class ConveyorPO : PlacedObject
private void SetConveyorChain()
{
ConveyorPO lastChoiceConveyor = null;
// TODO Last conveyor does not connect to first conveyor (circle)
List<ConveyorPO> possibleNextConveyors = GetConveyorsAround();
List<ConveyorPO> possiblePreviousConveyors = GetConveyorsAround();
if (previousConveyor != null && nextConveyor != null)
{
return;
}
foreach (ConveyorPO c in GetConveyorsAround())
{
if (c == nextConveyor || c == previousConveyor || c == this || c.previousConveyor == this || c.nextConveyor == this)
{
continue;
}
if (c.nextConveyor == null)
else
{
if (c.nextConveyor == null)
{
if (nextConveyor != c)
{
possiblePreviousConveyors.Add(c);
}
}
if (c.previousConveyor == null)
{
lastChoiceConveyor = c;
}
else
{
c.nextConveyor = this;
c.UpdateChain();
previousConveyor = c;
return;
if (previousConveyor != c)
{
possibleNextConveyors.Add(c);
}
}
}
}
if (lastChoiceConveyor != null)
if (possiblePreviousConveyors.Count > 0 && previousConveyor == null)
{
lastChoiceConveyor.nextConveyor = this;
lastChoiceConveyor.UpdateChain();
previousConveyor = lastChoiceConveyor;
Debug.Log("PREV " + possiblePreviousConveyors.Count);
foreach (ConveyorPO c in possiblePreviousConveyors)
{
if (c.previousConveyor != this && c.nextConveyor == null)
{
previousConveyor = c; // Maybe prioritize Conveyor which is already in a chain?
previousConveyor.nextConveyor = this;
previousConveyor.UpdateChain();
break;
}
}
}
if (possibleNextConveyors.Count > 0 && nextConveyor == null)
{
Debug.Log("Next " + possibleNextConveyors.Count);
foreach (ConveyorPO c in possibleNextConveyors)
{
if (c.nextConveyor != this && c.previousConveyor == null)
{
nextConveyor = c; // Maybe prioritize Conveyor which is already in a chain?
nextConveyor.previousConveyor = this;
nextConveyor.UpdateChain();
break;
}
}
}
}

View File

@@ -38,12 +38,12 @@ public class Grid<TGridObject>
{
for (int y = 0; y < gridArray.GetLength(1); y++)
{
Debug.DrawLine(GetWorldPosition(x, y), GetWorldPosition(x, y + 1), Color.white, 100f);
Debug.DrawLine(GetWorldPosition(x, y), GetWorldPosition(x + 1, y), Color.white, 100f);
Debug.DrawLine(GetWorldPosition(x, y), GetWorldPosition(x, y + 1), Color.white, 1000f);
Debug.DrawLine(GetWorldPosition(x, y), GetWorldPosition(x + 1, y), Color.white, 1000f);
}
}
Debug.DrawLine(GetWorldPosition(0, height), GetWorldPosition(width, height), Color.white, 100f);
Debug.DrawLine(GetWorldPosition(width, 0), GetWorldPosition(width, height), Color.white, 100f);
Debug.DrawLine(GetWorldPosition(0, height), GetWorldPosition(width, height), Color.white, 1000f);
Debug.DrawLine(GetWorldPosition(width, 0), GetWorldPosition(width, height), Color.white, 1000f);
}
}

View File

@@ -6,9 +6,18 @@ public abstract class ItemObject : MonoBehaviour
public int stackSize = 1;
public ItemSO itemSO;
public float timeAlive = 0.0f;
public float maxTimeAlive = 60.0f;
public float maxTimeAlive = 600.0f;
public float maxTimeWithoutConveyor = 10.0f;
public float timeWithoutConveyor = 0.0f;
private ConveyorPO lastTouchedConveyor; // current conveyor but not set to null
private float conveyorSpeed = 0.0f;
private Vector2 conveyorDirection = Vector2.zero;
public abstract void OnSpawn();
private ConveyorPO currentConveyor;
private Rigidbody2D rb;
void Awake()
@@ -51,13 +60,100 @@ public abstract class ItemObject : MonoBehaviour
{
Despawn();
}
// Problem: Pivot point of an item is bottom-left, so its not proberly aligned with the conveyor
GridBuildingSystem gridBuildingSystem = GridBuildingSystem.instance;
//* Position has to change depending on which direction the item is heading, in order to stay on the conveyor
Vector3 tempPivotPosition = transform.position;
if (currentConveyor != null)
{
// TODO Freeze rigibody rotations based on direction
//* KEEP IN MIND -> PIVOT POINT IS BOTTOM-LEFT
// If direction changes
if (conveyorDirection != currentConveyor.GetDirection())
{
// Realign
gridBuildingSystem.buildingGrid.GetXY(lastTouchedConveyor.gameObject.transform.position, out int x, out int y);
transform.position = gridBuildingSystem.buildingGrid.GetWorldPosition(x, y);
conveyorDirection = currentConveyor.GetDirection();
}
if (conveyorDirection.y > 0) // Top
{
Debug.Log("Heading top");
tempPivotPosition = transform.position + new Vector3(transform.localScale.x / 2, 0, 0);
}
if (conveyorDirection.x > 0) // Right
{
Debug.Log("Heading right");
tempPivotPosition = transform.position + new Vector3(0, transform.localScale.y / 2, 0);
}
if (conveyorDirection.y < 0) // Bottom
{
Debug.Log("Heading bottom");
tempPivotPosition = transform.position + new Vector3(transform.localScale.x / 2, transform.localScale.y, 0);
}
if (conveyorDirection.x < 0) // Left
{
Debug.Log("Heading left");
tempPivotPosition = transform.position + new Vector3(transform.localScale.x, transform.localScale.y / 2, 0);
}
Debug.DrawLine(tempPivotPosition, Vector3.zero, Color.red);
}
gridBuildingSystem.buildingGrid.GetXY(tempPivotPosition, out int tempPivotX, out int tempPivotY);
GridBuildingSystem.GridObject gridObject = gridBuildingSystem.buildingGrid.GetGridObject(tempPivotX, tempPivotY);
if (gridObject.GetPlacedObject() != null)
{
if (gridObject.GetPlacedObject().gameObject.GetComponent<ConveyorPO>())
{
timeWithoutConveyor = 0.0f;
currentConveyor = gridObject.GetPlacedObject().gameObject.GetComponent<ConveyorPO>();
lastTouchedConveyor = currentConveyor;
conveyorSpeed = currentConveyor.GetSpeed();
}
else
{
UpdateWithoutConveyor();
}
}
else
{
UpdateWithoutConveyor();
}
}
private void UpdateWithoutConveyor()
{
currentConveyor = null;
timeWithoutConveyor += Time.deltaTime;
if (timeWithoutConveyor > maxTimeWithoutConveyor)
{
Debug.Log("Not on conveyor -> DESPAWN");
Despawn();
}
}
void FixedUpdate()
{
float speed = 0.3f; // TODO Get speed from ConveyorBelt
Vector2 direction = new Vector2(1f, 0f); // TODO Get direction from ConveyorBelt
if (currentConveyor != null)
{
rb.MovePosition(rb.position + (conveyorDirection * conveyorSpeed) * Time.fixedDeltaTime);
}
else
{
// TODO Interrupt all movement
}
rb.MovePosition(rb.position + (direction * speed) * Time.fixedDeltaTime);
}
}