public static void CheckComplitionWork(ModelNPC.PersonData dataNPC, GameActionPersonController controller) { if (controller != null) { controller.PlayAnimationWork(); } float timeWait = (dataNPC as ModelNPC.GameDataAlien).TimeEndCurrentAction; if (Time.time > timeWait) //time end animation and completed work { GetAlienData(dataNPC).TimeEndCurrentAction = -1; if (dataNPC.Job != null) { //dataNPC.Job.IsJobRun = false; //dataNPC.Job.IsJobCompleted = true; //dataNPC.CurrentAction = NameActionsPerson.CompletedLoot.ToString(); //if (p_dataNPC.CurrentAction == GameActionPersonController.NameActionsPerson.CompletedLoot.ToString()) ExecuteActionNPC(dataNPC, NameActionsPerson.CompletedLoot, controller); } else { RequestActionNPC(dataNPC, NameActionsPerson.Completed, controller); } } }
//************************** CHECK ************************************* public static void CheckComplitionIdle(ModelNPC.PersonData dataNPC, GameActionPersonController controller) { if (dataNPC == null) { string strErr = "########## CheckComplitionIdle dataNPC == null "; if (controller != null) { strErr += controller.gameObject.name; } Debug.Log(strErr); return; } float timeWait = (dataNPC as ModelNPC.GameDataAlien).TimeEndCurrentAction; if (Time.time > timeWait) { GetAlienData(dataNPC).TimeEndCurrentAction = -1; RequestActionNPC(dataNPC, NameActionsPerson.Completed, controller); //IdleLock } //FIXANIM if (controller != null) { controller.PlayAnimationIdle(); } }
public static void CheckComplitionIdleLock(ModelNPC.PersonData dataNPC, GameActionPersonController controller) { if (controller == null) { //TEST RequestActionNPC(dataNPC, NameActionsPerson.Completed, controller); return; } float timeWait = (dataNPC as ModelNPC.GameDataAlien).TimeEndCurrentAction; //if (Time.time > controller.TimeIdleLock && p_nameAction == NameActionsPerson.Idle) if (Time.time > timeWait) { GetAlienData(dataNPC).TimeEndCurrentAction = -1; RequestActionNPC(dataNPC, NameActionsPerson.Completed, controller); //IdleLock } //FIXANIM if (controller != null) { controller.PlayAnimationIdle(); } }
public static void ActionTargetLocal(ModelNPC.PersonData dataNPC, GameActionPersonController controller) { string tempID = dataNPC.TargetID; GetAlienData(dataNPC).OnTargetCompleted(); string id = GetAlienData(dataNPC).BaseLockedTargetID; bool isNotBaseLocked = string.IsNullOrEmpty(id); //if (controller != null && string.IsNullOrEmpty(controller.TempLockedTargetID)) if (controller != null && isNotBaseLocked) { //Save ID //controller.TempLockedTargetID = tempID; // dataNPC.TargetID; GetAlienData(dataNPC).BaseLockedTargetID = tempID; } dataNPC.SetTargetPosition(); ExecuteActionNPC(dataNPC, NameActionsPerson.Move, controller); if (controller != null) { controller.DrawRayTarget(); //TEST } }
public static void CheckComplitionLoot(ModelNPC.GameDataAlien dataNPC, GameActionPersonController controller) { //if (AlienJobsManager.CheckJobAlien(dataNPC) == false) if (AlienJobsManager.CheckJobAlien(dataNPC, isCheckDistance: false) == false) { RequestActionNPC(dataNPC, NameActionsPerson.Target, controller); } }
public static void EndAction(ModelNPC.PersonData dataNPC, GameActionPersonController controller) { if (controller != null) { controller.ActionPerson = NameActionsPerson.Completed; } dataNPC.CurrentAction = NameActionsPerson.Completed.ToString(); }
public static bool ActionWork(ModelNPC.PersonData dataNPC, GameActionPersonController controller) { float tilme = GetAlienData(dataNPC).TimeEndCurrentAction; if (tilme == -1) { GetAlienData(dataNPC).TimeEndCurrentAction = Time.time + TimeWork; } return(false); }
public static void ActionTargetBackToBase(ModelNPC.PersonData dataNPC, GameActionPersonController controller) { GetAlienData(dataNPC).OnTargetCompleted(); if (controller != null) { //dataNPC.TargetID = controller.TempLockedTargetID; GetAlienData(dataNPC).ReturnBaseTarget(); //GetAlienData(dataNPC).BaseLockedTargetID GetAlienData(dataNPC).BaseLockedTargetID = string.Empty; } RequestActionNPC(dataNPC, NameActionsPerson.Move, controller); if (controller != null) { controller.DrawRayTarget(); //TEST } }
public static bool CheckJobAlien(ModelNPC.GameDataAlien p_dataNPC, GameActionPersonController controller = null, bool isCheckDistance = true) { AlienJob job = p_dataNPC.Job; if (job == null) { return(false); } ReaderScene.DataObjectInfoID targetInfo = ReaderScene.GetInfoID(p_dataNPC.TargetID); if (targetInfo == null) { return(false); } if (!targetInfo.TestIsValud()) { p_dataNPC.TargetID = null; return(false); } if (isCheckDistance) { if (!Helper.DistanceIsFinish(targetInfo.Data.Position, p_dataNPC.Position)) { return(true); } } string fieldTarget = string.Empty; string fieldAlien = string.Empty; bool isExitTargetResource = false; Helper.GetNameFieldByPosit(ref fieldTarget, targetInfo.Data.Position); ModelNPC.PortalData portal = targetInfo.Data as ModelNPC.PortalData; SaveLoadData.TypePrefabs jobResourceTarget = job.TargetResource; Helper.GetNameFieldByPosit(ref fieldAlien, p_dataNPC.Position); if (p_dataNPC.Inventory == null) { p_dataNPC.Inventory = DataObjectInventory.EmptyInventory(); //Debug.Log(Storage.EventsUI.ListLogAdd = "## JOB: dataNPC.Inventory is null"); } else { isExitTargetResource = job.TargetResource.ToString() == p_dataNPC.Inventory.TypeInventoryObject.ToString(); } // --- TO PORTAL if (portal != null) { if (isExitTargetResource) { //***** Back to HOME **** (trget is Portal) //p_dataNPC.InventoryObject is ModelNPC; Storage.PortalsManager.AddResourceFromAlien(portal, p_dataNPC); } // --- TAKE RESOURCE bool checkStorageResource = Storage.PortalsManager.CheckStorageResourceForAlien(portal, p_dataNPC); if (!checkStorageResource && isExitTargetResource) { //End job p_dataNPC.Job = null; p_dataNPC.TargetID = string.Empty; p_dataNPC.TargetPosition = Vector3.zero; } //Continue job if (p_dataNPC.Job != null && p_dataNPC.Job.Job != TypesJobs.Bathering) { return(true); } } // --- TO LOOT && BUILD else { //Test job on target //@JOB@ if (targetInfo.Data.TypePrefab != jobResourceTarget) { return(false); } if (p_dataNPC.CurrentAction != GameActionPersonController.NameActionsPerson.CompletedLoot.ToString() && p_dataNPC.CurrentAction != GameActionPersonController.NameActionsPerson.Work.ToString()) { GameActionPersonController.ExecuteActionNPC(p_dataNPC, GameActionPersonController.NameActionsPerson.Work, controller, true); } if (p_dataNPC.CurrentAction == GameActionPersonController.NameActionsPerson.CompletedLoot.ToString()) { if (job.Job == TypesJobs.Build) { if (p_dataNPC.Inventory == null || p_dataNPC.Inventory.IsEmpty || p_dataNPC.Inventory.TypeInventoryObject.ToString() != job.ResourceResult.ToString()) { Debug.Log(Storage.EventsUI.ListLogAdd = "### JOB BUILD: Inventory is Empty >> " + job.Job.ToString() + " " + job.TargetResource + " R:" + job.ResourceResult); //p_dataNPC.Inventory = DataObjectInventory.EmptyInventory(); return(false); } } GameActionPersonController.ExecuteActionNPC(p_dataNPC, GameActionPersonController.NameActionsPerson.Move, controller, true); // **** FIND RESOURCE **** //---Replace object //1. Remove resource //Vector3 posTarget = targetInfo.Data.Position; bool isTargetTypeTrue = false; PoolGameObjects.TypePoolPrefabs typePoolResource = CheckFieldJobValid(ref isTargetTypeTrue, job, targetInfo.Data); if (job.Job == TypesJobs.Build) { if (typePoolResource == PoolGameObjects.TypePoolPrefabs.PoolFloor) { GenericWorldManager.ClearLayerObject(targetInfo.Data); } //---- TEST //else // Debug.Log(Storage.EventsUI.ListLogAdd = "TypesJobs.Build .. Not Remove resource: " + job.ResourceResult.ToString() + " >> " + targetInfo.Data.NameObject); } else { GenericWorldManager.ClearLayerObject(targetInfo.Data); } //2. Create new resource if (job.ResourceResult != SaveLoadData.TypePrefabs.PrefabField) { CreateNewResource(typePoolResource, job, targetInfo, p_dataNPC); } bool isZonaReal = Helper.IsValidPiontInZona(targetInfo.Data.Position.x, targetInfo.Data.Position.y); if (isZonaReal) { Storage.GenGrid.LoadObjectToReal(targetInfo.Field); } //3. Add resource in Inventory (where not Ground) p_dataNPC.Inventory = targetInfo.Data.LootObjectToInventory(p_dataNPC); //4. Set target to target location //if (job.JobTo == TypesJobTo.ToPortal) //{ //GameActionPersonController.RequestActionNPC(p_dataNPC, GameActionPersonController.NameActionsPerson.Idle, null); //GameActionPersonController.RequestActionNPC(p_dataNPC, GameActionPersonController.NameActionsPerson.Target, null); //} } //continue work... return(true); } return(false); }
public static void ActionTarget(ModelNPC.PersonData dataNPC, GameActionPersonController controller) { if (ActionTargetIsLock) { Debug.Log(Storage.EventsUI.ListLogAdd = ".....ActionTarget is LOCK"); return; } ActionTargetIsLock = true; //Storage.EventsUI.ListLogAdd = "ActionTarget .... ReaderSceneIsValid=" + Storage.Instance.ReaderSceneIsValid; temp_job = null; if (!Storage.Instance.ReaderSceneIsValid)// && TimeEndCurrentAction < Time.time) { ActionTargetLocal(dataNPC, controller); ActionTargetIsLock = false; return; } Storage.EventsUI.ListLogAdd = "ActionTarget ....!!!"; //string tempID = dataNPC.TargetID; string indErr = "0"; try { indErr = "1"; GetAlienData(dataNPC).OnTargetCompleted(); indErr = "2"; //m_TargetObject = Storage.Person.GetAlienNextTargetObject(GetAlienData(dataNPC)); m_TargetObject = null; //@JOB@ temp_job = dataNPC.Job; //Storage.Person.GetAlienNextTargetObject(ref m_TargetObject, ref temp_job, GetAlienData(dataNPC)); AlienJobsManager.GetAlienNextTargetObject(ref m_TargetObject, ref temp_job, GetAlienData(dataNPC)); } catch (Exception ex) { Storage.EventsUI.ListLogAdd = "##### ActionTarget " + ex.Message; ActionTargetIsLock = false; return; } //test if (m_TargetObject == null) { Storage.EventsUI.ListLogAdd = "*** " + dataNPC.NameObject + " ==> empty"; } else { Storage.EventsUI.ListLogAdd = "*** " + dataNPC.NameObject + " ==> " + m_TargetObject.NameObject; } if (m_TargetObject == null) { GetAlienData(dataNPC).SetTargetPosition(); } else { var targetPosition = m_TargetObject.Position; dataNPC.TargetID = m_TargetObject.Id; //FIX base>>ToPortal (dataNPC as ModelNPC.GameDataAlien).BaseLockedTargetID = dataNPC.TargetID; dataNPC.SetTargetPosition(targetPosition); dataNPC.Job = temp_job;//@JOB@ } ExecuteActionNPC(dataNPC, NameActionsPerson.Move, controller); if (controller != null) { controller.DrawRayTarget(); //TEST } ActionTargetIsLock = false; }
public static void ExecuteActionNPC(ModelNPC.PersonData dataNPC, NameActionsPerson p_nameAction, GameActionPersonController controller, bool isForce = false) { if (isForce && controller != null) { controller.ResetAction(); } if (controller != null) { controller.ActionPerson = p_nameAction; } dataNPC.CurrentAction = p_nameAction.ToString(); }
public static void RequestActionNPC(ModelNPC.PersonData dataNPC, NameActionsPerson p_nameAction, GameActionPersonController controller, bool isForce = false) { if (isForce) { controller.ResetAction(); } if (p_nameAction != NameActionsPerson.Completed) { AddActionNPC(dataNPC, p_nameAction); } if (controller != null) { controller.ActionPerson = NameActionsPerson.Completed; } dataNPC.CurrentAction = NameActionsPerson.Completed.ToString(); }
public static void StartActionNPC(ModelNPC.PersonData dataNPC, NameActionsPerson p_nameAction, GameActionPersonController controller) { if (p_nameAction != NameActionsPerson.None) { if (controller != null) { controller.SetAction(p_nameAction); } } if (controller != null) { dataNPC.CurrentAction = controller.ActionPerson.ToString(); } else { dataNPC.CurrentAction = p_nameAction.ToString(); } switch (p_nameAction) { case NameActionsPerson.Idle: ActionIdle(dataNPC, controller); break; case NameActionsPerson.IdleLock: ActionIdleLock(dataNPC, controller); break; case NameActionsPerson.Move: if (controller == null) { ActionMove(dataNPC); } break; case NameActionsPerson.Completed: ActionTarget(dataNPC, controller); break; case NameActionsPerson.Dead: break; case NameActionsPerson.Attack: break; case NameActionsPerson.Work: ActionWork(dataNPC, controller); break; case NameActionsPerson.Target: ActionTarget(dataNPC, controller); break; case NameActionsPerson.TargetLocal: ActionTargetLocal(dataNPC, controller); break; case NameActionsPerson.TargetBackToBase: ActionTargetBackToBase(dataNPC, controller); break; } //Debug if (controller == null || Storage.SceneDebug.SettingsScene.RealDebugOn || Storage.SceneDebug.VipID == dataNPC.Id) { Storage.SceneDebug.ViewPerson(dataNPC, p_nameAction); } }
public static void CheckCompletionActions(ModelNPC.GameDataAlien dataNPC, NameActionsPerson actionPerson, GameActionPersonController controller) { //dleLock, Move, Target, TargetLocal, TargetBackToBase switch (actionPerson) { case NameActionsPerson.Idle: CheckComplitionIdle(dataNPC, controller); break; case NameActionsPerson.IdleLock: CheckComplitionIdleLock(dataNPC, controller); break; case NameActionsPerson.Move: if (controller != null) { controller.CheckComplitionMove(); } else { CheckComplitionMoveInDream(dataNPC); } break; case NameActionsPerson.None: if (controller != null) { controller.ActionPerson = NameActionsPerson.Idle; } dataNPC.CurrentAction = NameActionsPerson.Idle.ToString(); break; case NameActionsPerson.CompletedLoot: CheckComplitionLoot(dataNPC, controller); break; case NameActionsPerson.Work: CheckComplitionWork(dataNPC, controller); break; case NameActionsPerson.Target: case NameActionsPerson.TargetLocal: case NameActionsPerson.TargetBackToBase: break; case NameActionsPerson.Attack: case NameActionsPerson.Dead: case NameActionsPerson.Completed: break; } }
public static void CheckNextAction(ModelNPC.GameDataAlien dataNPC, NameActionsPerson p_actionPerson, GameActionPersonController controller) { CheckCompletionActions(dataNPC, p_actionPerson, controller); var listPersonActions = GetActions(dataNPC); //fix WORK CheckCurrentAction(dataNPC, ref p_actionPerson); //p_actionPerson = GetCurrentAction(dataNPC); if (dataNPC.CurrentAction == NameActionsPerson.Completed.ToString()) { if (listPersonActions.Count == 0) { AddActionNPC(dataNPC, NameActionsPerson.Completed); } listPersonActions = GetActions(dataNPC); if (listPersonActions.Count > 0) { NameActionsPerson actionPerson = listPersonActions[0]; listPersonActions.RemoveAt(0); dataNPC.PersonActions = listPersonActions.Select(p => p.ToString()).ToArray();// (p=>p.).ToArray(); StartActionNPC(dataNPC, actionPerson, controller); } } else { StartActionNPC(dataNPC, p_actionPerson, controller); } }
private void PersonWork(ReaderScene.DataObjectInfoID infoNPC, int count) { var persData = infoNPC.Data as ModelNPC.GameDataAlien; if (persData == null || persData.IsReality) { return; } //List<GameActionPersonController.NameActionsPerson> actonsNPC = GameActionPersonController.GetActions(persData); //GameActionPersonController.NameActionsPerson actionCurrent = GameActionPersonController.GetCurrentAction(persData); //actionCurrent = GameActionPersonController.GetCurrentAction(persData); //GameActionPersonController.CheckNextAction(persData, actionCurrent, null); //temp_actonsNPC = GameActionPersonController.GetActions(persData); GameActionPersonController.GetCurrentAction_Cache(ref temp_actionCurrent, persData); GameActionPersonController.CheckNextAction(persData, temp_actionCurrent, null); //TEST ----------------------------- if (Storage.SceneDebug.SettingsScene.IsLog) { Storage.EventsUI.ListLogAdd = "WORK: " + persData.NameObject + " >> " + temp_actionCurrent.ToString(); } bool isZonaReal = Helper.IsValidPiontInZona(persData.Position.x, persData.Position.y); if (!persData.IsReality && isZonaReal) { //TEST ------------------------ Storage.EventsUI.ListLogAdd = "GOTO IN REAL WORLD: " + persData.NameObject; string fieldInfo = infoNPC.Field; string fieldPos = Helper.GetNameFieldPosit(persData.Position.x, persData.Position.y); string fieldName = Helper.GetNameFieldByName(persData.NameObject); if (fieldInfo != fieldPos || fieldInfo != fieldName || fieldPos != fieldName) { string strErr = "??? PersonWork name Field I: " + fieldInfo + " P:" + fieldPos + " DN:" + fieldName; Debug.Log(strErr); Storage.EventsUI.ListLogAdd = strErr; } //----------------------------- Storage.GenGrid.LoadObjectToReal(fieldName); //--- Debag //Storage.Instance.SelectGameObjectID = Helper.GetID(persData.NameObject); //Storage.EventsUI.ClearListExpandPersons(); //GameObject gobject = Storage.Instance.GamesObjectsReal[fieldPos].Find(p => p.name == persData.NameObject); //if (gobject != null) //{ // Storage.EventsUI.AddMenuPerson(persData, gobject); // Storage.GamePause = true; //} //else //{ // string strErr = "####### Not n REAL : " + persData.NameObject; // Debug.Log(strErr); // Storage.EventsUI.ListLogAdd = strErr; //} //----------------- } else { } }