private NeedFulfiller GetNearestNeed(NeedDefinition need) { NeedFulfiller nearestNeed = null; NeedFulfiller[] workerButtons = FindObjectsOfType <NeedFulfiller>(); float nearest = 20; foreach (var desk in workerButtons) { float dist = Vector2.Distance(transform.position, desk.transform.position); if (dist < nearest && desk.Fulfills == need) { nearestNeed = desk; nearest = dist; } } return(nearestNeed); }
public static GameObject GetObject(SaveManager.SavableObject.WorldObject data) { GameObject obj = new GameObject(data.name); GameObject parent = GameObject.Find("Building"); if (parent == null) { parent = new GameObject("Building"); } SpriteRenderer spr = obj.AddComponent <SpriteRenderer>(); spr.sprite = Modding.ModLoader.GetSprite(data.spriteName); spr.sortingOrder = data.spriteSortingLayer; spr.material = GameHandler.instance.gameObjectMaterial; obj.AddComponent <BoxCollider2D>(); obj.transform.SetParent(parent.transform); Color savedColor = data.color; spr.color = savedColor; obj.transform.position = data.position; obj.transform.rotation = data.rotation; PlacedObject objectData = obj.AddComponent <PlacedObject>(); objectData.objectData = data; objectData.objectData.name = data.name + obj.transform.position; switch (data.objectType) { case PlacedObjectType.Desk: var button = obj.AddComponent <WorkerButton>(); button.moneyToAdd = data.wVal; Transform child = new GameObject("Chair").transform; child.SetParent(obj.transform); child.localPosition = (data.childPos != Vector2.zero) ? child.position = data.childPos : obj.transform.position; child.rotation = obj.transform.rotation; button.chair = child; break; case PlacedObjectType.Need: NeedFulfiller need = obj.AddComponent <NeedFulfiller>(); need.Fulfills = data.fulFills; break; default: break; } return(obj); }