//recreate simple objects state private void Recreate(List <string> list, RecreateType recreateType) { foreach (var item in list) { RecreateObjectState(item, 0, recreateType); } }
public void SaveState <T>(string name, T value, RecreateType recreateType, string sceneName = "") { var state = GetState(sceneName); switch (recreateType) { case RecreateType.Object: if (!state.IsExistInBool(name)) { state.ObjectsState.Add(name); } break; case RecreateType.Dialogue: state.DialogueIsComplete.Add(name); break; case RecreateType.Task: state.Tasks.Add(name); break; case RecreateType.ChestItem: state.ChestItems.Add((string)(object)value, name); break; case RecreateType.Position: name = ClearName(name); if (!state.IsExistInPosition(name)) { state.ObjectsPosition.Add(name, (ObjectPosition)(object)value); } else { state.ObjectsPosition[name] = (ObjectPosition)(object)value; } break; case RecreateType.Camera: state.Camera.Add(name); break; } }
//recreate complex objects state private void Recreate <T>(Dictionary <string, T> list, RecreateType recreateType) { if (recreateType == RecreateType.Position) { foreach (var item in list) { RecreateObjectState(item.Key, item.Value, recreateType); } } else if (recreateType == RecreateType.ChestItem) { foreach (var item in list) { RecreateObjectState((string)(object)item.Value, item.Key, recreateType); } } }
//general recriation private void RecreateObjectState <T>(string objectToFind, T value, RecreateType recreateType) { var searchGameObjectResult = GameObject.Find(objectToFind); if (searchGameObjectResult != null) { switch (recreateType) { case RecreateType.Object: Destroy(searchGameObjectResult); break; case RecreateType.Dialogue: searchGameObjectResult.GetComponent <DialogueTrigger>().dialogue.IsDialogueFinished = true; break; case RecreateType.Task: if (searchGameObjectResult.GetComponent <TaskManager>() != null) { searchGameObjectResult.GetComponent <TaskManager>().DestroyObject(); } break; case RecreateType.Position: var position = (ObjectPosition)(object)value; searchGameObjectResult.transform.position = new Vector2(position.x, position.y); break; case RecreateType.ChestItem: searchGameObjectResult.GetComponent <Chest>().RemoveFromChest((string)(object)value); break; case RecreateType.Camera: searchGameObjectResult.GetComponent <DoorButton>().SetCameraState(false); break; } } }