private void loadSettings() { MyLog.Default.WriteLine("loading settings"); var text = readStorage((IMyTerminalBlock)block, SETTINGSGUID); if (text.Length <= 1) { return; } var res = MyAPIGateway.Utilities.SerializeFromBinary <settingsData>(Convert.FromBase64String(text)); selectedMode = res.selectedMode; if (res.patrolPoints != null) { patrolPoints = res.patrolPoints; } standPoint = res.standPoint; attackPoint = res.attackPoint; targetCount = res.targetCount; foreach (var data in res.data) { offsets[data.id] = data.offset; patrolProgress[data.id] = data.progress; } foreach (var point in res.spawnLocations) { createNPCatPos(point, npc_subtype); } block.GameLogic.GetAs <NPCControlBlock>()?.settingsChanged(); }
void Update() { if (mCurrentMode != mNPCMode) { mCurrentMode = mNPCMode; ChangeMode(); } switch (mCurrentMode) { case NPCMode.PathFollowNavMesh: { NavMeshPatherUpdate(); break; } case NPCMode.PathFollowObstacleAvoid: { PathFollowAvoiderUpdate(); break; } case NPCMode.WanderObstacleAvoid: { WandererUpdate(); break; } } }
public settingsData(NPCMode selectedMode, Dictionary <int, Vector3> offsets, Dictionary <int, int> patrolProgress, List <Vector3> patrolPoints, Vector3 standPoint, Vector3 attackPoint, List <Vector3> spawnLocations, int targetCount) { this.selectedMode = selectedMode; this.patrolPoints = patrolPoints; this.standPoint = standPoint; this.attackPoint = attackPoint; this.spawnLocations = spawnLocations; this.targetCount = targetCount; var datas = new List <serializableNPCData>(); foreach (var elem in offsets) { int progress; patrolProgress.TryGetValue(elem.Key, out progress); var item = new serializableNPCData() { id = elem.Key, offset = elem.Value, progress = progress }; datas.Add(item); } data = datas; }
void OnTriggerEnter2D(Collider2D col) { if (col.gameObject.tag == "Player" && npcMode == NPCMode.notTalking) { npcMode = NPCMode.readyToTalk; sign.SetActive(true); //Debug.Log(gameObject.name + " ready to talk!"); } }
void OnTriggerExit2D(Collider2D col) { if (col.gameObject.tag == "Player" && npcMode == NPCMode.readyToTalk) { //Debug.Log(gameObject.name + " player too far to talk"); npcMode = NPCMode.notTalking; sign.SetActive(false); } }
public void SetMode(NPCMode setMode) { mode = setMode; if (setMode == NPCMode.ALLY) { ConvertToAlly(); StartCoroutine(AddPointDelay(0.4f)); } else if (setMode == NPCMode.NONCON) { sprAnim.Play("npc/noncon_walk", 0); } }
void ConvertToAlly() { mode = NPCMode.ALLY; tag = "Ally"; GameObject particleObject = Instantiate(ConvertParticle, transform); particleObject.transform.parent = transform.root; particleObject.transform.GetChild(0).GetComponent <ParticleSystem>().Emit(1); master.spawnEnemies.Spawn(); motor.On(); Debug.Log("change! " + gameObject.name); sprAnim.Play("npc/ally_walk", 0); }
// Update is called once per frame void Update() { switch (npcMode) { case NPCMode.wander: DoWander(); if (CanSeeCritter()) { npcMode = NPCMode.attack; } else if (CanSeePickUp()) { npcMode = NPCMode.collect; } break; case NPCMode.collect: DoCollect(); if (CanSeeCritter()) { npcMode = NPCMode.attack; } else if (!pickUpTarget.activeSelf) { npcMode = NPCMode.wander; } break; case NPCMode.attack: MoveToCritter(); if (CanSeePickUp()) { npcMode = NPCMode.collect; } else if (!critterTarget.activeSelf) { npcMode = NPCMode.wander; } break; default: break; } }
private void updateMode(IMyCubeBlock block) { try { var selected = getSelected(block as IMyTerminalBlock); var newMode = (NPCMode)(int.Parse(selected)); if (newMode != selectedMode) { //mode change stopRecordingPoints(); resetData(); deleteOldWaypoints(newMode == NPCMode.follow); } selectedMode = newMode; } catch (Exception ex) { // ignored } }
void Start() { mAgent = GetComponent <SteeringAgent>(); mCurrentMode = mNPCMode; ChangeMode(); }
// Methods public SetNPCMode(byte[] data) : base(data) { this.uid = BitConverter.ToUInt32(data, 1); this.mode = (NPCMode) data[5]; this.x = BitConverter.ToUInt16(data, 6); this.y = BitConverter.ToUInt16(data, 8); this.life = data[10]; this.unknown11 = data[11]; }