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);
        }
    }
Example #4
0
    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);
    }
Example #7
0
    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;
    }
Example #8
0
    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);
 }
Example #13
0
    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);
    }
Example #14
0
 public void DestroyPlacedObject(IPlacedObject cloneObject)
 {
     if (cloneObject != null)
     {
         Destroy(((PlacedObject)cloneObject).gameObject);
         cloneObject = null;
     }
 }
Example #15
0
    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);
    }
Example #17
0
    public void RemoveWallFromTileMap(IPlacedObject placedObject)
    {
        Wall wall = placedObject.Prefab.GetComponent <Wall>();

        if (wall != null)
        {
            placedObject.Prefab.transform.position = ((PlacedObject)placedObject).transform.position;
            wall.RemoveFromTilemap();
        }
    }
Example #18
0
    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);
    }
Example #21
0
    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();
    }
Example #22
0
 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);
    }
Example #26
0
        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;
                }
            }
        }
Example #27
0
    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";
         }
     }
 }
Example #29
0
 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);
    }