private void AddOutgoingPath(ManScript manScript) { foreach (Vector3 WayPoint in Constants.NewManOutgoingPath) { manScript.Add_RunAction_ToList(WayPoint); } }
public void MakeManLeave(Guid manId) { ManScript ManScript = _ManList[manId].ManScript; // Disable the raycast option ManScript.SetGhostState(); // Give path to entrance (if assigned to any room. Otherwise, it is the one waiting at the entrance) if (ManScript.IsAssignedToAnyRoom()) { RoomScript RoomScript = RoomManager.Ref.GetRoomData(ManScript.ManData.AssignedRoom).RoomScript; GridIndex[] Pathindizes = GridManager.Ref.GetIndexPath(RoomScript.RoomData.CoveredIndizes[ManScript.ManData.AssignedRoomSlot], Constants.EntranceRoomIndex); if (Pathindizes.Length > 1) { AddIndexPathToManScript(Pathindizes, ManScript); } } else { StateManager.Ref.SetWaitingMan(Guid.Empty); } // Give path to outside AddOutgoingPath(ManScript); // Submit self-destruction of object ManScript.Add_SelfDestruction_ToList(); }
public void AddIndexPathToManScript(GridIndex[] pathIndizes, ManScript manScript) { if (pathIndizes == null) { return; } if (manScript == null) { return; } Vector3 WorldPos; for (int i = 0; i < (pathIndizes.Length - 1); i++) { WorldPos = GridManager.Ref.GetWorldPositionFromGridIndexZOffset(pathIndizes[i], Constants.GridPositionWalkZOffset); manScript.Add_RunAction_ToList(WorldPos); if (pathIndizes[i].Z != pathIndizes[i + 1].Z) // Going to pass elevator door { Guid RoomID = GridManager.Ref.GetGridTileRoomGuid(pathIndizes[i]); manScript.Add_DoorOpenAction_ToList(RoomID); WorldPos = GridManager.Ref.GetWorldPositionFromGridIndexZOffset(pathIndizes[i + 1], Constants.GridPositionWalkZOffset); manScript.Add_RunAction_ToList(WorldPos); manScript.Add_DoorCloseAction_ToList(RoomID); i++; } } WorldPos = GridManager.Ref.GetWorldPositionFromGridIndexZOffset(pathIndizes[pathIndizes.Length - 1], Constants.GridPositionWalkZOffset); manScript.Add_RunAction_ToList(WorldPos); }
private void AddIncomingPath(ManScript manScript) { foreach (Vector3 WayPoint in Constants.NewManIncomingPath) { manScript.Add_RunAction_ToList(WayPoint); } manScript.Add_FacePlayerAction_ToList(); manScript.Add_IdleAction_ToList(); }
private void SetManPathFromEntrance(Guid manId, Guid newRoomGuid, int newSlotIndex) { ManScript ManScript = _ManList[manId].ManScript; Vector3 PathPosition = GridManager.Ref.GetWorldPositionFromGridIndexZOffset(Constants.EntranceRoomIndex, Constants.GridPositionWalkZOffset); ManScript.Add_RunAction_ToList(PathPosition); Guid OldRoomGuid = GridManager.Ref.GetGridTileRoomGuid(Constants.EntranceRoomIndex); SetManPath(manId, OldRoomGuid, 0, newRoomGuid, newSlotIndex); }
public void RemoveManFromRoom(Guid manId) { ManScript ManScript = _ManList[manId].ManScript; if (RoomManager.Ref.IsRoomExisting(ManScript.ManData.AssignedRoom) == false) { return; } RoomScript RoomScript = RoomManager.Ref.GetRoomData(ManScript.ManData.AssignedRoom).RoomScript; RoomScript.RemoveManFromRoomSlot(manId); ManScript.AssignToRoom(Guid.Empty, 0); }
public void CreateMan(ManInstanceData manData) { if (manData == null) { return; } GameObject ManObject = ManFactory.Ref.CreateMan(manData.ManType); ManScript ManScript = ManObject.GetComponent <ManScript>(); ManScript.ManData = manData; _ManList[manData.ManId] = new ManRef(ManObject, ManScript); ManObject.transform.position = Constants.NewManIncomingPath[0]; AddIncomingPath(ManScript); GuiManager.Ref.UpdateManCount(_ManList.Count); }
private void SetManPath(Guid manId, Guid oldRoomGuid, int oldSlotIndex, Guid newRoomGuid, int newSlotIndex) { ManScript ManScript = _ManList[manId].ManScript; RoomScript OldRoomScript = RoomManager.Ref.GetRoomData(oldRoomGuid).RoomScript; RoomScript NewRoomScript = RoomManager.Ref.GetRoomData(newRoomGuid).RoomScript; GridIndex[] Pathindizes = GridManager.Ref.GetIndexPath(OldRoomScript.RoomData.CoveredIndizes[oldSlotIndex], NewRoomScript.RoomData.CoveredIndizes[newSlotIndex]); if (Pathindizes.Length > 1) { AddIndexPathToManScript(Pathindizes, ManScript); } ManScript.Add_RunAction_ToList(NewRoomScript.RoomData.ManSlotsPositions[newSlotIndex]); ManScript.Add_RotateAction_ToList(NewRoomScript.RoomData.ManSlotsRotations[newSlotIndex]); ManScript.Add_WorkingAction_ToList(NewRoomScript.RoomData.ManWorkingStates[newSlotIndex]); }
public ManRef(GameObject manObject, ManScript manScript) { ManObject = manObject; ManScript = manScript; }
public void MoveManToNewRoom(Guid manId, Guid newRoomId) { if (RoomManager.Ref.IsRoomExisting(newRoomId) == false) { return; } if (IsManExisting(manId) == false) { return; } ManScript ManScript = _ManList[manId].ManScript; RoomScript NewRoomScript = RoomManager.Ref.GetRoomData(newRoomId).RoomScript; //NPC is Overworld only trying to travel to Underworld if (ManScript.ManData.ManType > 0 && NewRoomScript.RoomData.RoomOverUnder < 0) { GuiManager.Ref.Initiate_UserInfoSmall("Sorry, can't assign to this room!"); return; } //NPC is Underworld only trying to travel to Overworld if (ManScript.ManData.ManType < 0 && NewRoomScript.RoomData.RoomOverUnder > 0) { GuiManager.Ref.Initiate_UserInfoSmall("Sorry, can't assign to this room!"); return; } if (NewRoomScript.RoomContainsMan(manId)) { GuiManager.Ref.Initiate_UserInfoSmall("Already assigned to this room!"); return; } if ((ManScript.IsAssignedToAnyRoom() == false) && (NewRoomScript.RoomHasFreeManSlots() == false)) { GuiManager.Ref.Initiate_UserInfoSmall("Sorry, can't assign to this room!"); return; } if ((ManScript.IsAssignedToAnyRoom() == false) && (NewRoomScript.RoomHasFreeManSlots() == true)) { int ManSlotIndex = NewRoomScript.GetFreeManSlotIndex(); ManScript.AssignToRoom(newRoomId, ManSlotIndex); NewRoomScript.AssignManToRoomSlot(manId, ManSlotIndex); SetManPathFromEntrance(manId, newRoomId, ManSlotIndex); StateManager.Ref.SetWaitingMan(Guid.Empty); return; } Guid OldRoomGuid = ManScript.ManData.AssignedRoom; RoomScript OldRoomScript = RoomManager.Ref.GetRoomData(OldRoomGuid).RoomScript; if (NewRoomScript.RoomHasFreeManSlots() == true) { int NewManSlotIndex = NewRoomScript.GetFreeManSlotIndex(); int OldManSlotIndex = ManScript.ManData.AssignedRoomSlot; ManScript.AssignToRoom(newRoomId, NewManSlotIndex); OldRoomScript.RemoveManFromRoomSlot(manId); NewRoomScript.AssignManToRoomSlot(manId, NewManSlotIndex); SetManPath(manId, OldRoomGuid, OldManSlotIndex, newRoomId, NewManSlotIndex); } else { Guid OtherManGuid = NewRoomScript.RoomData.ManSlotsAssignments[0]; ManScript OtherManScript = _ManList[OtherManGuid].ManScript; OldRoomScript.RemoveManFromRoomSlot(manId); NewRoomScript.RemoveManFromRoomSlot(OtherManGuid); int NewManSlotIndex1 = NewRoomScript.GetFreeManSlotIndex(); int OldManSlotIndex1 = ManScript.ManData.AssignedRoomSlot; ManScript.AssignToRoom(newRoomId, NewManSlotIndex1); NewRoomScript.AssignManToRoomSlot(manId, NewManSlotIndex1); SetManPath(manId, OldRoomGuid, OldManSlotIndex1, newRoomId, NewManSlotIndex1); int NewManSlotIndex2 = OldRoomScript.GetFreeManSlotIndex(); int OldManSlotIndex2 = OtherManScript.ManData.AssignedRoomSlot; OtherManScript.AssignToRoom(OldRoomGuid, NewManSlotIndex2); OldRoomScript.AssignManToRoomSlot(OtherManGuid, NewManSlotIndex2); SetManPath(OtherManGuid, newRoomId, OldManSlotIndex2, OldRoomGuid, NewManSlotIndex2); } }