예제 #1
0
        public void StoreTileEvent(int x, int y, EventType eventType, ActorInstantiationFlags eventFlags = ActorInstantiationFlags.None, ushort[] tileParams = null)
        {
            if (eventType == EventType.Empty && (x < 0 || y < 0 || y >= layoutHeight || x >= layoutWidth))
            {
                return;
            }

            EventTile tile = new EventTile {
                EventType     = eventType,
                EventFlags    = eventFlags,
                EventParams   = new ushort[8],
                IsEventActive = false
            };

            // Store event parameters
            int i = 0;

            if (tileParams != null)
            {
                int n = MathF.Min(tileParams.Length, 8);
                for (; i < n; ++i)
                {
                    tile.EventParams[i] = tileParams[i];
                }
            }

            eventLayout[x + y * layoutWidth] = tile;
        }
예제 #2
0
    // Use this for initialization
    void Start()
    {
        ResourceInfo.setFoodStock(100);
        ResourceInfo.setWaterStock(100);
        ResourceInfo.setWoodStock(100);
        campEvents = new List <CampEvent>(EventSystem.GetCampEvents(0, 20, 10));
        eventTiles = new List <GameObject>(EventSystem.GetEventTiles(0, 20, 10));
        Weather weather = EventSystem.GetWeather(0);

        foreach (CampEvent ce in campEvents)
        {
            Debug.Log("Camp Event Message: \"" + ce.message
                      + "\"\nFood Effect: " + ce.food
                      + "\nWater Effect: " + ce.water
                      + "\nWood Effect: " + ce.wood);
        }
        foreach (GameObject go in eventTiles)
        {
            EventTile et = go.GetComponent <EventTile>();
            EncounterCharacterEvent ece = (EncounterCharacterEvent)et.tileEvent;
            Debug.Log("Event Name: \""
                      + ece.name + "\"\nDescription: "
                      + ece.description + "\nDialog: "
                      + ece.encounterDialog + "\nCharacter Name: "
                      + ece.character.name + "\nHostile?: "
                      + ece.character.isHostile + "\nmaxHealth: "
                      + ece.character.getMaxHealth() + "\nmaxStamina: "
                      + ece.character.getMaxStamina() + "\nmaxStrength: "
                      + ece.character.getMaxStrength());
        }
        Debug.Log(weather.ToString());
    }
예제 #3
0
 // Spawn an event tile if it isn't already spawned.
 public void SpawnEventTile(EventTileDataInstance eventTileData, bool staySpawned)
 {
     if (!IsEventTileSpawned(eventTileData))
     {
         EventTile tile = EventTile.CreateEvent(eventTileData);
         AddEventTile(tile);
     }
     if (staySpawned)
     {
         eventTileData.Properties.Set("enabled", true);
     }
 }
예제 #4
0
    // Use this for initialization
    void Start()
    {
        //after i push this, max carry wont work.... bc of naming of eventtiles
        eventTile                 = GameObject.Find("Test1");
        eventTileScript           = eventTile.GetComponent <EventTile>();
        eventTileScript.tileEvent = EncounterCharacterEvent.GenerateRandom();

        /*
         * eventTile2 = GameObject.Find("Test2");
         * eventTileScript2 = eventTile2.GetComponent<EventTile>();
         * eventTileScript2.tileEvent = EncounterCharacterEvent.GenerateRandom();
         */

        fuq = eventTileScript.tileEvent.character;
        if (fuq == null)
        {
            Debug.Log("whattehfuckishap");
        }

        Debug.Log(eventTileScript.tileEvent.character.name);
        Debug.Log("Hostile = " + eventTileScript.tileEvent.character.isHostile);
        Debug.Log(eventTileScript.tileEvent.description);
        //Debug.Log(eventTileScript2.tileEvent.description);
    }
예제 #5
0
        public void BeginRoom(Room room)
        {
            this.room            = room;
            this.roomLocation    = room.Location;
            this.dungeon         = room.Dungeon;
            this.isSideScrolling = room.Zone.IsSideScrolling;

            // Discover the room.
            room.IsDiscovered       = true;
            room.Level.IsDiscovered = true;

            // Clear event tiles.
            eventTiles.Clear();

            // Clear all entities from the old room (except for the player).
            entities.Clear();
            if (Player != null)
            {
                Player.Initialize(this);
                Player.EntityIndex = 0;
                entities.Add(Player);
            }

            // Create the tile grid.
            tileManager.Initialize(room);
            for (int x = 0; x < room.Width; x++)
            {
                for (int y = 0; y < room.Height; y++)
                {
                    for (int i = 0; i < room.LayerCount; i++)
                    {
                        TileDataInstance data = room.TileData[x, y, i];

                        if (data != null && data.IsAtLocation(x, y) &&
                            data.ModifiedProperties.GetBoolean("enabled", true))
                        {
                            // Place the tile.
                            Tile tile = Tile.CreateTile(data);
                            PlaceTile(tile, x, y, i, false);
                        }
                    }
                }
            }

            // Create the event tiles.
            eventTiles.Capacity = room.EventData.Count;
            for (int i = 0; i < room.EventData.Count; i++)
            {
                EventTileDataInstance data = room.EventData[i];
                if (data.Properties.GetBoolean("enabled", true))
                {
                    EventTile eventTile = EventTile.CreateEvent(data);
                    eventTiles.Add(eventTile);
                }
            }

            // Initialize the tiles.
            tileManager.InitializeTiles();

            // Initialize the event tiles.
            for (int i = 0; i < eventTiles.Count; i++)
            {
                eventTiles[i].Initialize(this);
            }

            tileManager.PostInitializeTiles();

            entityCount = entities.Count;

            viewControl.Bounds   = RoomBounds;
            viewControl.ViewSize = GameSettings.VIEW_SIZE;

            // Fire the RoomStart event.
            GameControl.FireEvent(room, "event_room_start");

            allMonstersDead = false;
        }
예제 #6
0
 // Put an event tile into the room.
 public void AddEventTile(EventTile eventTile)
 {
     eventTile.Initialize(this);
     eventTiles.Add(eventTile);
 }
예제 #7
0
 public InteractAction(EventTile tile, ICombatant combatant, IMap map)
 {
     Tile       = tile;
     _combatant = combatant;
     _map       = map;
 }
예제 #8
0
        public static void ParseRoomCSVFile()
        {
            string cwdPath = Directory.GetCurrentDirectory();

            string roomPath = "";

            if (roomNumber < storage.singleDigitRoomCap)
            {
                roomPath = @"0" + (roomNumber.ToString()) + ".csv";
            }
            else
            {
                roomPath = @"" + (roomNumber.ToString()) + ".csv";
            }

            cwdPath = cwdPath.Replace(@"\bin\Debug\netcoreapp3.1", @"\Classes\Level\RoomCSV");
            cwdPath = Path.Combine(cwdPath, roomPath);
            string[] lines = System.IO.File.ReadAllLines(cwdPath);

            foreach (string line in lines)
            {
                string[] segments = line.Split(new string[] { "," },
                                               StringSplitOptions.None);
                Vector2 position = new Vector2(0, 0);
                switch (segments[0])
                {
                case "Block":
                    position = utility.GetBlockSecondaryItemPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    BlockTile block;
                    tiles.Add(block    = new BlockTile(game, new TileSpriteFactory(game), position));
                    block.drawLocation = position;
                    break;

                case "Event":
                    position = utility.GetBlockSecondaryItemPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    EventTile eventTile;
                    tiles.Add(eventTile    = new EventTile(game, new TileSpriteFactory(game), position));
                    eventTile.drawLocation = position;
                    break;

                case "Pushable":
                    position = utility.GetPushablePosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    PushableTile pushable;
                    tiles.Add(pushable    = new PushableTile(game, new TileSpriteFactory(game), position));
                    pushable.drawLocation = position;
                    break;

                case "Stair":
                    position = utility.GetBlockSecondaryItemPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    TPTile stair;
                    tiles.Add(stair    = new TPTile(game, new TileSpriteFactory(game), position));
                    stair.drawLocation = position;
                    break;

                case "Compass":
                    position = utility.GetBlockSecondaryItemPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    Compass compass;
                    items.Add(compass    = new Compass(game, new ItemSpriteFactory(game), position));
                    compass.drawLocation = position;
                    break;

                case "Heart":
                    position = utility.GetHeartPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    Heart heart;
                    items.Add(heart = new Heart(game, new ItemSpriteFactory(game), position));
                    heart.position  = position;
                    break;

                case "Key":
                    position = utility.GetCommonItemPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    Key key;
                    items.Add(key = new Key(game, new ItemSpriteFactory(game), position));
                    key.position  = position;
                    break;

                case "BlueRupee":
                    position = utility.GetCommonItemPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    BlueRupee blueRupee;
                    items.Add(blueRupee = new BlueRupee(game, new ItemSpriteFactory(game), position));
                    blueRupee.position  = position;
                    break;

                case "Bomb":
                    position = utility.GetBombPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    Bomb bomb;
                    items.Add(bomb = new Bomb(game, new ItemSpriteFactory(game), position));
                    bomb.position  = position;
                    break;

                case "Boomerang":
                    position = utility.GetCommonItemPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    Boomerang boomerang;
                    items.Add(boomerang = new Boomerang(game, new ItemSpriteFactory(game), position));
                    boomerang.position  = position;
                    break;

                case "Bow":
                    position = utility.GetCommonItemPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    Bow bow;
                    items.Add(bow = new Bow(game, new ItemSpriteFactory(game), position));
                    bow.position  = position;
                    break;

                case "HeartContainer":
                    position = utility.GetHeartContainerPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    HeartContainer heartContainer;
                    items.Add(heartContainer = new HeartContainer(game, new ItemSpriteFactory(game), position));
                    heartContainer.position  = position;
                    break;

                case "Map":
                    position = utility.GetCommonItemPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    Map map;
                    items.Add(map = new Map(game, new ItemSpriteFactory(game), position));
                    map.position  = position;
                    break;

                case "Fairy":
                    position = utility.GetCommonItemPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    Fairy fairy;
                    items.Add(fairy = new Fairy(game, new ItemSpriteFactory(game), position));
                    fairy.position  = position;
                    break;

                case "Triforce":
                    position = utility.GetTriforceOldPosition(windowWidth, windowHeightFloor);
                    Triforce triforce;
                    items.Add(triforce = new Triforce(game, new ItemSpriteFactory(game), position));
                    triforce.position  = position;
                    break;

                case "YellowRupee":
                    position = utility.GetCommonItemPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    YellowRupee yellowRupee;
                    items.Add(yellowRupee = new YellowRupee(game, new ItemSpriteFactory(game), position));
                    yellowRupee.position  = position;
                    break;

                case "Goriya":
                    position = utility.GetEnemyPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    enemies.Add(new EnemyGoriya(game, position));
                    break;

                case "Aquamentus":
                    position = utility.GetEnemyPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    enemies.Add(new EnemyAquamentus(game, position));
                    break;

                case "Roshi":
                    position = utility.GetEnemyPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    enemies.Add(new EnemyRoshi(game, position));
                    break;

                case "BladeTrap":
                    position = utility.GetEnemyPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    enemies.Add(new EnemyBladeTrap(game, position, new Vector2(storage.bladeTrapX, storage.bladeTrapY), game.link));
                    break;

                case "Gel":
                    position = utility.GetEnemyPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    enemies.Add(new EnemySlime(game, position));
                    break;

                case "Keese":
                    position = utility.GetEnemyPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    enemies.Add(new EnemyKeese(game, position));
                    break;

                case "Stalfos":
                    position = utility.GetEnemyPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    enemies.Add(new EnemyStalfos(game, position));
                    break;

                case "Wallmaster":
                    position = utility.GetEnemyPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    enemies.Add(new EnemyWallmaster(game, position));
                    break;

                case "Redead":
                    position = utility.GetEnemyPosition(windowWidthFloor, windowHeightFloor, float.Parse(segments[2]), float.Parse(segments[1]));
                    enemies.Add(new EnemyRedead(game, position));
                    break;

                case "FogOfWar":
                    enemies.Add(new FogOfWar(game));
                    break;

                default:
                    break;
                }
            }
        }
예제 #9
0
파일: Map.cs 프로젝트: w1r2p1/unitrpg
 public void AddEventTile(EventTile eventTile)
 {
     GetTileByPosition(eventTile.Location).Event = eventTile;
 }
예제 #10
0
파일: Battle.cs 프로젝트: w1r2p1/unitrpg
 private void _relayEvent(EventTile eventTile)
 {
     EventTileWalkedSignal.Dispatch(eventTile.EventName);
 }
예제 #11
0
파일: Battle.cs 프로젝트: w1r2p1/unitrpg
 public void AddEventTile(EventTile eventTile)
 {
     Map.AddEventTile(eventTile);
 }