public bool CheckIfWeaponCanBeGivenToPerson(IPlacedObject selectedObject, IPlacedObject hoveredObject) { if (selectedObject == null) { return(false); } Weapon weapon = selectedObject.Prefab.GetComponent <Weapon>(); if (weapon == null) { return(false); } if (hoveredObject == null) { return(false); } Person person = hoveredObject.Prefab.GetComponent <Person>(); if (person == null) { return(false); } return(true); }
public void OnMouseButton(Vector3 mousePosition, StateInformation stateInformation) { IPlacedObject selectedObject = stateInformation.selectedObject; MouseButtonState leftMouseButtonState = leftMouseButton.GetState(); // moving the Object if (leftMouseButtonState == MouseButtonState.DOWN) { selectedObject.SetAllCollidersStatus(false); } else if (leftMouseButtonState == MouseButtonState.PRESSED) { selectedObject.RemoveWeaponFromPerson(); //selectedObject.SetAllCollidersStatus(false); objectEditingModule.MoveObject(selectedObject, mousePosition); } else if (leftMouseButtonState == MouseButtonState.UP) { selectedObject.SetAllCollidersStatus(true); } // Giving an Enemy a Weapon if (leftMouseButtonState == MouseButtonState.UP && lastLeftMouseButtonState == MouseButtonState.PRESSED) { IPlacedObject hoveredObject = stateInformation.hoveredObject; bool objectCanBeGiven = objectInformationModule.CheckIfWeaponCanBeGivenToPerson(selectedObject, hoveredObject); if (objectCanBeGiven) { // give selectedObject to hoveredObject objectEditingModule.GiveWeaponToPerson(selectedObject, hoveredObject); } } lastLeftMouseButtonState = leftMouseButtonState; }
public void PlaceObject(IPlacedObject objectToPlace, Vector3 mousePosition, bool checksEnabled = true, ILevelElement levelElement = null, bool cloneObject = true) { if (objectToPlace == null) { return; } if (checksEnabled) { bool containsLevelElement = objectInformationModule.CheckIfLevelTilesContainsLevelElements(objectToPlace, mousePosition); if (containsLevelElement) { return; } if (objectToPlace.Type == PrefabType.PLAYER) { bool playerExists = objectInformationModule.CheckIfPlayerExists(); if (playerExists) { return; } } } if (objectToPlace.Type == PrefabType.LEVELELEMENT) { PlaceLevelElement(mousePosition, objectToPlace, levelElement, cloneObject); } else { PlaceNonLevelElement(mousePosition, objectToPlace, cloneObject); } }
public void RemoveWeaponFromPerson() { if (personWhichBelongsTo == null) { return; } Weapon weapon = this.prefab.GetComponent <Weapon>(); if (weapon == null) { return; } Person person = personWhichBelongsTo.Prefab.GetComponent <Person>(); if (person == null) { return; } transform.SetParent(LevelCreator.GetInstance().transform); weapon.SetSortingLayerOfTextureOfWeapon(SortingLayerConstants.ITEM_LAYER_NAME); weapon.SetAnimatorOnFloorFlag(true); personWhichBelongsTo.SetAllCollidersStatus(true); this.personWhichBelongsTo = null; person.Weapon = null; }
private ILevelElement CreateLevelElement(IPlacedObject actualObjectPlaced) { LevelElementData data = ObjectToDataConverter.ObjectToLevelElement((PlacedObject)actualObjectPlaced); ILevelElement levelElement = LevelElementFactory.InstantiateLevelElement(data, ((PlacedObject)actualObjectPlaced).transform); return(levelElement); }
public static LevelElementData ObjectToLevelElement(IPlacedObject placedObject) { if (placedObject.Type != PrefabType.LEVELELEMENT) { return(null); } Door door = placedObject.Prefab.GetComponent <Door>(); if (door != null) { return(GetDoorData(door, ((PlacedObject)placedObject).transform.position)); } Wall wall = placedObject.Prefab.GetComponent <Wall>(); if (wall != null) { return(GetWallData(wall, ((PlacedObject)placedObject).transform.position)); } EndZone endZone = placedObject.Prefab.GetComponent <EndZone>(); if (endZone != null) { return(GetEndZoneData(endZone, ((PlacedObject)placedObject).transform.position)); } return(null); }
private void SetWeaponToPerson(PlacedObject personObject) { // Remove weapons of person IList <Weapon> prevWeapons = personObject.GetComponentsInChildren <Weapon>(); foreach (Weapon prevWeapon in prevWeapons) { if (prevWeapon is Fist) { continue; } PlacedObject weaponObject = prevWeapon.gameObject.transform.parent.GetComponent <PlacedObject>(); if (weaponObject != null) { weaponObject.RemoveWeaponFromPerson(); } } IWeapon weapon = (IWeapon)this.prefab.GetComponent <Weapon>(); Person person = personObject.prefab.GetComponent <Person>(); transform.SetParent(personObject.transform); transform.position = person.GetWeaponAnchorPos(); transform.rotation = person.transform.rotation; weapon.SetSortingLayerOfTextureOfWeapon(SortingLayerConstants.WEAPON_LAYER_NAME); person.Weapon = (Weapon)weapon; weapon.SetAnimatorOnFloorFlag(false); this.personWhichBelongsTo = personObject; }
public void SetupPanel(IPlacedObject placedObject) { DisablePanelElements(); SetObjectEditorVariablesToFalse(); SetObjectTypeText(placedObject); //DisableObjectEditorPanelElements(); switch (placedObject.Type) { case PrefabType.LEVELELEMENT: break; case PrefabType.WEAPON: if (placedObject.PrefabId != "batPrefab") { showAmmunitionPanel = true; } break; case PrefabType.PLAYER: break; case PrefabType.ENEMY: showPatrolPointEditorPanel = true; break; default: break; } SetupObjectEditorPanelElements(placedObject); }
private void CreateOuterBoundWalls(IPlacedObject wallPrefabObject) { Vector2Int levelSize = level.GetLevelSize(); Vector3 position; // Lower wall for (int x = 0; x < levelSize.x; ++x) { position = new Vector3(x, 0); objectPlacementModule.PlaceObject(wallPrefabObject, position); } // Left wall for (int y = 1; y < levelSize.y; ++y) { position = new Vector3(0, y); objectPlacementModule.PlaceObject(wallPrefabObject, position); } // Upper wall for (int x = 1; x < levelSize.x; ++x) { position = new Vector3(x, levelSize.y - 1); objectPlacementModule.PlaceObject(wallPrefabObject, position); } // right wall for (int y = 1; y < levelSize.y - 1; ++y) { position = new Vector3(levelSize.x - 1, y); objectPlacementModule.PlaceObject(wallPrefabObject, position); } }
public static EnemyData GetEnemyDataForEnemy(IPlacedObject enemyObject) { Enemy enemy = enemyObject.Prefab.GetComponent <Enemy>(); // TODO NOTE: The enemyType is not set, so it is always BASIC... // If it set correctly then enable this line and remove the code to determine the type //EnemyType enemyType = enemy.Type; EnemyType enemyType = DetermineEnemyType(enemyObject); Vector3 position = ((PlacedObject)enemyObject).transform.position; Weapon weapon = enemy.Weapon; WeaponType weaponType; int ammo; if (weapon != null) { ammo = weapon.GetAmmo(); weaponType = DetermineWeaponType(weapon); } else { weaponType = WeaponType.INVALID; ammo = 0; } if (enemy.PatrolPoints == null) { enemy.PatrolPoints = new List <Vector2>(); enemy.PatrolPoints.Add(position); } EnemyData data = new EnemyData(enemyType, enemy.PatrolPoints, weaponType, ammo, position); return(data); }
private ILevelElement GetLevelElement(IPlacedObject placedObject) { if (placedObject.Type != PrefabType.LEVELELEMENT) { return(null); } Door door = placedObject.Prefab.GetComponent <Door>(); if (door != null) { return((ILevelElement)door); } Wall wall = placedObject.Prefab.GetComponent <Wall>(); if (wall != null) { return((ILevelElement)wall); } EndZone endZone = placedObject.Prefab.GetComponent <EndZone>(); if (endZone != null) { return((ILevelElement)endZone); } return(null); }
public void SetupLevel(IPlacedObject wallPrefabObject) { TilemapController.instance.ClearTilemaps(); FillTilesWithFloor(); CreateMouseCollision(); CreateOuterBoundWalls(wallPrefabObject); }
private void AddWeaponData(IPlacedObject plObject) { Weapon weapon = plObject.Prefab.GetComponent <Weapon>(); WeaponData weaponData = ObjectToDataConverter.GetWeaponDataForWeapon(plObject); levelData.levelItemsData.Add((ItemData)weaponData); levelData.levelItems.Add((Item)weapon); }
public void DestroyPlacedObject(IPlacedObject cloneObject) { if (cloneObject != null) { Destroy(((PlacedObject)cloneObject).gameObject); cloneObject = null; } }
private void AddEnemyData(IPlacedObject plObject) { Enemy enemy = plObject.Prefab.GetComponent <Enemy>(); EnemyData enemyData = ObjectToDataConverter.GetEnemyDataForEnemy(plObject); enemy.Type = enemyData.type; levelData.enemyData.Add(enemyData); levelData.enemies.Add(enemy); }
public IPlacedObject GetInstantiatedPrefab(string prefabId, Transform parent) { IPlacedObject placedObject = (IPlacedObject)Instantiate((PlacedObject)prefabTable[prefabId], new Vector2(-10, -10), ((PlacedObject)prefabTable[prefabId]).gameObject.transform.rotation, parent); placedObject.Prefab = Instantiate(prefabTable[prefabId].Prefab, new Vector2(-10, -10), placedObject.Prefab.transform.rotation, ((PlacedObject)placedObject).transform); placedObject.SetupObjectToPlace(); placedObject.IsProtectedObject = false; return(placedObject); }
public void RemoveWallFromTileMap(IPlacedObject placedObject) { Wall wall = placedObject.Prefab.GetComponent <Wall>(); if (wall != null) { placedObject.Prefab.transform.position = ((PlacedObject)placedObject).transform.position; wall.RemoveFromTilemap(); } }
private void SetObjectTypeText(IPlacedObject placedObject) { if (placedObject == null) { return; } TextMeshProUGUI textMeshPro = objectTypeTextPanel.gameObject.GetComponent <TextMeshProUGUI>(); textMeshPro.text = placedObject.Text; }
public bool CheckIfObjectCanBeMoved(IPlacedObject selectedObject, Vector2 position) { ILevelTile levelTile = GetLevelTile(position); if (levelTile.IsTraversable()) { return(true); } return(false); }
private void AddPrefab(GameObject prefab, string prefabId, string name, PrefabType type) { GameObject gObject = new GameObject(); gObject.name = name; gObject.transform.SetParent(this.transform); IPlacedObject placedObject = (IPlacedObject)gObject.AddComponent <PlacedObject>(); placedObject.SetupPrefab(prefab, prefabId, name, type, true); prefabTable.Add(prefabId, placedObject); }
public void DeleteInScenePlacedObjects() { //Destroy each gameObject but don't modify the dictionary foreach (KeyValuePair <int, IPlacedObject> kvp in inScenePlacedObjects) { IPlacedObject plObject = kvp.Value; DeleteObject(plObject, false, false); } inScenePlacedObjects.Clear(); }
private void RemoveLevelElementFromLevelTile(IPlacedObject placedObject) { if (placedObject.Type == PrefabType.LEVELELEMENT) { ILevelElement levelElement = placedObject.Prefab.GetComponent <ILevelElement>(); ISet <ILevelTile> levelTiles = levelElement.GetTiles(); foreach (ILevelTile levelTile in levelTiles) { levelTile.RemoveLevelElement(levelElement); } } }
private void MoveObjectIntern(IPlacedObject selectedObject, Vector2 position) { ((PlacedObject)selectedObject).gameObject.transform.position = position; IList <PlacedObject> movedObjects = ((PlacedObject)selectedObject).gameObject.GetComponentsInChildren <PlacedObject>(); foreach (PlacedObject movedObject in movedObjects) { IPlacedObject iMovedObject = (IPlacedObject)movedObject; UpdateLevelTiles(iMovedObject); } }
public void ResetPatrolPoints(IPlacedObject placedObject) { Enemy enemy = placedObject.Prefab.GetComponent <Enemy>(); if (enemy == null) { return; } enemy.PatrolPoints = new List <Vector2>(); //enemy.PatrolPoints.Add(((PlacedObject)placedObject).transform.position); }
public static WeaponData GetWeaponDataForWeapon(IPlacedObject weaponObject) { Weapon weapon = weaponObject.Prefab.GetComponent <Weapon>(); WeaponType type = DetermineWeaponType(weapon); int ammo = weapon.GetAmmo(); Vector3 position = ((PlacedObject)weaponObject).transform.position; float rotation = weapon.transform.rotation.eulerAngles.z; WeaponData data = new WeaponData(position, rotation, type, ammo); return(data); }
public static void RunPatch(IPatcherState <ISkyrimMod, ISkyrimModGetter> state) { // Part 1 - Patch every placed light in worldspaces/cells foreach (var placedObjectGetter in state.LoadOrder.PriorityOrder.PlacedObject().WinningContextOverrides(state.LinkCache)) { if (placedObjectGetter.ModKey == enbLightPluginNameWithExtension) { continue; } var placedObject = placedObjectGetter.Record; if (placedObject.LightData == null) { continue; } placedObject.Base.TryResolve <ILightGetter>(state.LinkCache, out var placedObjectBase); if (placedObjectBase == null || placedObjectBase.EditorID == null) { continue; } if (lightNamesToAdjust.Any(placedObjectBase.EditorID.ContainsInsensitive)) { if (placedObject != null && placedObject.LightData != null && placedObject.LightData.FadeOffset > 0) { IPlacedObject modifiedObject = placedObjectGetter.GetOrAddAsOverride(state.PatchMod); modifiedObject.LightData !.FadeOffset *= fadeMultiplier; } } else { continue; } } // Part 2 - Patch every LIGH record foreach (var lightGetter in state.LoadOrder.PriorityOrder.Light().WinningContextOverrides()) { if (lightGetter.ModKey == enbLightPluginNameWithExtension) { continue; } var light = lightGetter.Record; if (light.EditorID == null) { continue; } if (lightNamesToAdjust.Any(light.EditorID.ContainsInsensitive)) { Light modifiedLight = state.PatchMod.Lights.GetOrAddAsOverride(light); modifiedLight.FadeValue *= fadeMultiplier; } } }
private void SetupAmmunitionPanelElement(IPlacedObject placedObject) { Weapon weapon = placedObject.Prefab.GetComponent <Weapon>(); ammunitionPanel.gameObject.SetActive(true); Transform inputFieldTansform = ammunitionPanel.Find("InputField"); TMP_InputField textMeshPro = inputFieldTansform.gameObject.GetComponent <TMP_InputField>(); string ammunitionText = weapon.GetAmmo().ToString(); textMeshPro.text = ammunitionText; }
public void SetWallSprite(IPlacedObject placedObject) { if (placedObject.Type == PrefabType.LEVELELEMENT) { Wall wall = placedObject.Prefab.GetComponent <Wall>(); if (wall != null) { SpriteRenderer renderer = placedObject.Prefab.gameObject.AddComponent <SpriteRenderer>(); renderer.sprite = wallSprite; renderer.sortingOrder = 1; renderer.sortingLayerName = "Wall"; } } }
public void DeepCopyIn( IPlacedObject item, IPlacedObjectGetter rhs, ErrorMaskBuilder?errorMask, TranslationCrystal?copyMask, bool deepCopy) { base.DeepCopyIn( (IFallout4MajorRecord)item, (IFallout4MajorRecordGetter)rhs, errorMask, copyMask, deepCopy: deepCopy); }
public bool CheckIfLevelTilesContainsLevelElements(IPlacedObject placedObject, Vector2 worldPosition) { ISet <ILevelTile> levelTiles = GetLevelTilesOfLevelElement(placedObject, worldPosition); IList <IPlacedObject> inScenePlacedObjects = GetInScenePlacedObjectsForLevelTiles(levelTiles); foreach (IPlacedObject inScenePlacedObject in inScenePlacedObjects) { if (inScenePlacedObject.Type == PrefabType.LEVELELEMENT) { return(true); } } return(false); }