상속: MonoBehaviour
예제 #1
0
        public string WeatherDataListing()
        {
            //Forms the weather data into a string separated by line feeds
            string wsList = "";

            if (weaList.Count > 0)
            {
                {
                    wsList += "WriteDate:\t" + ReportDate.ToString("hh:mm:ss");
                    wsList += "\r\n" + "TempScale:\t" + TempScale.ToString();
                    wsList += "\r\n" + "WindScale:\t" + WindScale.ToString();
                    wsList += "\r\n" + "SkyTemp:\t" + SkyTemp.ToString();
                    wsList += "\r\n" + "AmbTemp:\t" + AmbTemp.ToString();
                    wsList += "\r\n" + "SenTemp:\t" + SenTemp.ToString();
                    wsList += "\r\n" + "WindSpeed:\t" + WindSpeed.ToString();
                    wsList += "\r\n" + "Humidity:\t\t" + Humidity.ToString();
                    wsList += "\r\n" + "DewPoint:\t" + DewPoint.ToString();
                    wsList += "\r\n" + "DewHeat:\t" + DewHeat.ToString();
                    wsList += "\r\n" + "RainFlag:\t\t" + RainFlag.ToString();
                    wsList += "\r\n" + "WetFlag:\t\t" + WetFlag.ToString();
                    wsList += "\r\n" + "ElapsedTime:\t" + ElapsedSeconds.ToString();
                    wsList += "\r\n" + "LastDataWrite:\t" + LastDataWrite.ToString("hh:mm:ss");
                    wsList += "\r\n" + "Cloudiness:\t" + Cloudiness.ToString();
                    wsList += "\r\n" + "Windiness:\t" + Windiness.ToString();
                    wsList += "\r\n" + "Raininess:\t" + Raininess.ToString();
                    wsList += "\r\n" + "Darkness:\t" + Darkness.ToString();
                    wsList += "\r\n" + "RoofCloseFlag:\t" + RoofCloseFlag.ToString();
                    wsList += "\r\n" + "AlertFlag:\t\t" + AlertFlag.ToString();
                }
            }
            return(wsList);
        }
예제 #2
0
        protected override void Awake()
        {
            base.Awake();

            Astral.onClick.AddListener(OnAstralClick);
            Darkness.onClick.AddListener(OnDarknessClick);
            Ice.onClick.AddListener(OnIceClick);
            Iron.onClick.AddListener(OnIronClick);
            Storm.onClick.AddListener(OnStormClick);
            Nature.onClick.AddListener(OnNatureClick);
            Fire.onClick.AddListener(OnFireClick);

            astralLevel   = Astral.GetComponentInChildren <TextMeshProUGUI>();
            darknessLevel = Darkness.GetComponentInChildren <TextMeshProUGUI>();
            iceLevel      = Ice.GetComponentInChildren <TextMeshProUGUI>();
            ironLevel     = Iron.GetComponentInChildren <TextMeshProUGUI>();
            stormLevel    = Storm.GetComponentInChildren <TextMeshProUGUI>();
            natureLevel   = Nature.GetComponentInChildren <TextMeshProUGUI>();
            fireLevel     = Fire.GetComponentInChildren <TextMeshProUGUI>();

            void OnAstralClick() => Owner.ElementSystem.LearnElement((int)ElementType.Astral);
            void OnDarknessClick() => Owner.ElementSystem.LearnElement((int)ElementType.Darkness);
            void OnIceClick() => Owner.ElementSystem.LearnElement((int)ElementType.Ice);
            void OnIronClick() => Owner.ElementSystem.LearnElement((int)ElementType.Iron);
            void OnStormClick() => Owner.ElementSystem.LearnElement((int)ElementType.Storm);
            void OnNatureClick() => Owner.ElementSystem.LearnElement((int)ElementType.Nature);
            void OnFireClick() => Owner.ElementSystem.LearnElement((int)ElementType.Fire);

            Buttons = new Button[] { Astral, Darkness, Ice, Iron, Storm, Nature, Fire };
        }
예제 #3
0
 private void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
 }
예제 #4
0
    public void BeginPathfind(Vector3 point)
    {
        navAgent.SetDestination(point);
        if (Vector3.Distance(transform.position, point) < 3)
        {
            Debug.Log("last click :" + Vector3.Distance(lastClick, point));
            Darkness.expand();
        }

        else
        {
            Debug.Log("moving");
            Darkness.contract();
        }

        lastClick = point;
    }
예제 #5
0
        public static void Unload()
        {
            Subtitle.Dispose();
            Title.Dispose();
            Splash.Dispose();
            MapSheet.Dispose();
            MiniHP.Dispose();
            HPMenu.Dispose();
            Buttons.Dispose();
            Shadows.Dispose();
            Darkness.Dispose();
            BattleFactors.Dispose();
            Strip.Dispose();
            Cursor.Dispose();
            Arrows.Dispose();
            PicBorder.Dispose();
            MenuBorder.Dispose();
            MenuBG.Dispose();

            tileCache.Clear();
            objectCache.Clear();
            bgCache.Clear();
            itemCache.Clear();
            iconCache.Clear();
            vfxCache.Clear();
            portraitCache.Clear();
            spriteCache.Clear();

            DivTex.Dispose();

            EXPFont.Dispose();
            HealFont.Dispose();
            DamageFont.Dispose();
            DungeonFont.Dispose();
            TextFont.Dispose();

            SysFont.Dispose();

            Pixel.Dispose();
            defaultTex.Dispose();

            Loaded = false;
            //Notify script engine
            LuaEngine.Instance.OnGraphicsUnload();
        }
예제 #6
0
    void FixedUpdate()
    {
        currentPosition = transform.position;

        if (currentPosition == oldPosition)
        {
            Darkness.expand();
        }

        switch (currentState)
        {
        case State.INCREASE:
            //vector3(x,y,z)
            if (transform.localScale.x < MAX.x)
            {
                transform.localScale += v;
            }
            break;

        case State.DECREASE:
            if (transform.localScale.x > MIN.x)
            {
                transform.localScale -= v;
            }
            break;

        case State.STABLE:
            break;
        }

        if (transform.localScale.x <= MIN.x)
        {
            ;
        }
        darkConsume = true;

        oldPosition = transform.position;
        scale       = transform.localScale;
    }
예제 #7
0
        public void Save(int rdungeonNum, int floorNum)
        {
            if (!Directory.Exists(Paths.DataPath + "RDungeon\\" + rdungeonNum))
            {
                Directory.CreateDirectory(Paths.DataPath + "RDungeon\\" + rdungeonNum);
            }
            using (XmlWriter writer = XmlWriter.Create(Paths.DataPath + "RDungeon\\" + rdungeonNum + "\\" + floorNum + ".xml", Logger.XmlWriterSettings)) {
                writer.WriteStartDocument();
                writer.WriteStartElement("FloorEntry");
                #region Basic data
                writer.WriteStartElement("General");
                writer.WriteElementString("Algorithm", Algorithm.ToString());
                writer.WriteElementString("Darkness", Darkness.ToString());
                writer.WriteElementString("Music", Music);
                writer.WriteElementString("NpcSpawnTime", NpcSpawnTime.ToString());
                writer.WriteElementString("NpcMin", NpcMin.ToString());
                writer.WriteElementString("NpcMax", NpcMax.ToString());
                writer.WriteEndElement();
                #endregion
                #region FloorSettings
                writer.WriteStartElement("FloorSettings");
                for (int i = 0; i < FloorSettings.Count; i++)
                {
                    string key = FloorSettings.Keys.ElementAt(i);
                    writer.WriteElementString(key, FloorSettings[key].ToString());
                }
                writer.WriteEndElement();
                #endregion
                #region TileLayers
                writer.WriteStartElement("TileLayers");
                for (int i = 0; i < TileLayers.Count; i++)
                {
                    string key = TileLayers.Keys.ElementAt(i);
                    List <Maps.TileAnim> layers = TileLayers[key];
                    writer.WriteStartElement(key);
                    for (int j = 0; j < layers.Count; j++)
                    {
                        writer.WriteStartElement("Element");
                        writer.WriteElementString("TextureX", layers[j].Frames[0].Texture.X.ToString());
                        writer.WriteElementString("TextureY", layers[j].Frames[0].Texture.Y.ToString());
                        writer.WriteElementString("Sheet", layers[j].Frames[0].Sheet.ToString());
                        writer.WriteEndElement();
                    }
                    writer.WriteEndElement();
                }
                writer.WriteEndElement();
                #endregion
                #region TileData
                writer.WriteStartElement("TileData");
                for (int i = 0; i < TileData.Count; i++)
                {
                    string key = TileData.Keys.ElementAt(i);
                    List <Maps.TileData> data = TileData[key];
                    writer.WriteStartElement(key);
                    for (int j = 0; j < data.Count; j++)
                    {
                        writer.WriteStartElement("Element");
                        writer.WriteElementString("Type", data[j].Type.ToString());
                        writer.WriteElementString("Data1", data[j].Data1.ToString());
                        writer.WriteElementString("Data2", data[j].Data2.ToString());
                        writer.WriteElementString("Data3", data[j].Data3.ToString());
                        writer.WriteElementString("String", data[j].String1);
                        writer.WriteEndElement();
                    }
                    writer.WriteEndElement();
                }
                writer.WriteEndElement();
                #endregion
                #region Weather
                writer.WriteStartElement("FloorWeather");
                for (int i = 0; i < FloorWeather.Count; i++)
                {
                    writer.WriteStartElement("Weather");
                    Enums.Weather key = FloorWeather.Keys.ElementAt(i);
                    writer.WriteElementString(key.ToString(), FloorWeather[key].ToString());
                    writer.WriteEndElement();
                }
                writer.WriteEndElement();
                #endregion
                #region Items
                writer.WriteStartElement("Items");
                for (int i = 0; i < Items.Count; i++)
                {
                    string key = Items.Keys.ElementAt(i);
                    List <Tuple <ItemPreset, int> > data = Items[key];
                    writer.WriteStartElement(key);
                    for (int j = 0; j < data.Count; j++)
                    {
                        writer.WriteStartElement("Element");
                        writer.WriteElementString("ItemNum", data[j].Item1.ItemNum.ToString());
                        writer.WriteElementString("MinAmount", data[j].Item1.MinAmount.ToString());
                        writer.WriteElementString("MaxAmount", data[j].Item1.MaxAmount.ToString());
                        writer.WriteElementString("AppearanceRate", data[j].Item2.ToString());
                        writer.WriteElementString("StickyRate", data[j].Item1.StickyRate.ToString());
                        writer.WriteElementString("Tag", data[j].Item1.Tag);
                        writer.WriteElementString("Hidden", data[j].Item1.Hidden.ToString());
                        writer.WriteElementString("Ground", data[j].Item1.OnGround.ToString());
                        writer.WriteElementString("Water", data[j].Item1.OnWater.ToString());
                        writer.WriteElementString("Wall", data[j].Item1.OnWall.ToString());
                        writer.WriteEndElement();
                    }
                    writer.WriteEndElement();
                }
                writer.WriteEndElement();
                #endregion
                #region Npcs
                writer.WriteStartElement("Npcs");
                for (int i = 0; i < Npcs.Count; i++)
                {
                    string key = Npcs.Keys.ElementAt(i);
                    List <Tuple <NpcPreset, int> > data = Npcs[key];
                    writer.WriteStartElement(key);
                    for (int j = 0; j < data.Count; j++)
                    {
                        writer.WriteStartElement("Element");
                        writer.WriteElementString("NpcNum", data[j].Item1.NpcNum.ToString());
                        writer.WriteElementString("SpawnX", data[j].Item1.SpawnX.ToString());
                        writer.WriteElementString("SpawnY", data[j].Item1.SpawnY.ToString());
                        writer.WriteElementString("MinLevel", data[j].Item1.MinLevel.ToString());
                        writer.WriteElementString("MaxLevel", data[j].Item1.MaxLevel.ToString());
                        writer.WriteElementString("AppearanceRate", data[j].Item2.ToString());
                        writer.WriteEndElement();
                    }
                    writer.WriteEndElement();
                }
                writer.WriteEndElement();
                #endregion
                #region Rooms
                writer.WriteStartElement("Rooms");
                for (int i = 0; i < Rooms.Count; i++)
                {
                    string key = Rooms.Keys.ElementAt(i);
                    List <Tuple <int, int> > data = Rooms[key];
                    writer.WriteStartElement(key);
                    for (int j = 0; j < data.Count; j++)
                    {
                        writer.WriteStartElement("Element");
                        writer.WriteElementString("RoomNum", data[j].Item1.ToString());
                        writer.WriteElementString("AppearanceRate", data[j].Item2.ToString());
                        writer.WriteEndElement();
                    }
                    writer.WriteEndElement();
                }
                writer.WriteEndElement();
                #endregion

                writer.WriteEndElement();
                writer.WriteEndDocument();
            }
        }
        public void Enforce()
        {
            if (this.SeedType == SeedType.Random)
            {
                this.Seed = "";
                var r = new Random();
                for (int i = 0; i < 6; i++)
                {
                    var val = r.Next(36);
                    if (val < 10)
                    {
                        this.Seed += ((char)('0' + val)).ToString();
                    }
                    else
                    {
                        this.Seed += ((char)('a' + val - 10)).ToString();
                    }
                }
            }
            switch (this.Rules)
            {
            case Ruleset.A:
                this.SetNormalMaps();
                this.RepeatRooms  = false;
                this.EnterUnknown = false;
                this.Algorithm    = LogicType.Pathway;
                this.Length       = MapLength.Short;
                this.Dashes       = NumDashes.One;
                this.Difficulty   = Difficulty.Normal;
                this.Lights       = ShineLights.Hubs;
                this.Darkness     = Darkness.Never;
                break;

            case Ruleset.B:
                this.SetNormalMaps();
                this.RepeatRooms  = false;
                this.EnterUnknown = false;
                this.Algorithm    = LogicType.Pathway;
                this.Length       = MapLength.Medium;
                this.Dashes       = NumDashes.Two;
                this.Difficulty   = Difficulty.Normal;
                this.Lights       = ShineLights.Hubs;
                this.Darkness     = Darkness.Never;
                break;

            case Ruleset.C:
                this.SetNormalMaps();
                this.RepeatRooms  = false;
                this.EnterUnknown = false;
                this.Algorithm    = LogicType.Pathway;
                this.Length       = MapLength.Medium;
                this.Dashes       = NumDashes.One;
                this.Difficulty   = Difficulty.Expert;
                this.Lights       = ShineLights.Hubs;
                this.Darkness     = Darkness.Vanilla;
                break;

            case Ruleset.D:
                this.SetNormalMaps();
                this.RepeatRooms  = false;
                this.EnterUnknown = false;
                this.Algorithm    = LogicType.Pathway;
                this.Length       = MapLength.Long;
                this.Dashes       = NumDashes.Two;
                this.Difficulty   = Difficulty.Expert;
                this.Lights       = ShineLights.Hubs;
                this.Darkness     = Darkness.Vanilla;
                break;
            }
        }
예제 #9
0
    // Start is called before the first frame update
    void Start()
    {
        controls = GameObject.Find("Controls");

        spriteRenderer = this.gameObject.GetComponent <SpriteRenderer>();

        currentRoom = GameObject.Find("StartRoom");
        currentRoom.GetComponent <RoomScript>().SetHomeStatus(true);
        djs  = GameObject.Find("PlayerStatsObject").GetComponent <DungeonJuiceScript>();
        rb   = GetComponent <Rigidbody2D>();
        home = GameObject.Find("StartRoom");

        djs = GameObject.Find("PlayerStatsObject").GetComponent <DungeonJuiceScript>();
        if (djs == null)
        {
            Debug.Log("Error: PlayerStatus could not find object \"DungeonJuiceScript\".");
        }

        pentagram = GameObject.Find("Pentagram");
        if (pentagram == null)
        {
            Debug.Log("Error: PlayerStatus could not find object \"Pentagram\".");
        }


        ds = GameObject.Find("Darkness").GetComponent <Darkness>();
        if (ds == null)
        {
            Debug.Log("Error: Darkness (script) could not find object \"Darkness\".");
        }

        lightLevels = new GameObject[5];

        lightLevels[0] = GameObject.Find("circle1");
        if (lightLevels[0] == null)
        {
            Debug.Log("Error: PlayerStatus could not find object \"circle1\".");
        }
        lightLevels[1] = GameObject.Find("circle2");
        if (lightLevels[1] == null)
        {
            Debug.Log("Error: PlayerStatus could not find object \"circle2\".");
        }
        lightLevels[2] = GameObject.Find("circle3");
        if (lightLevels[2] == null)
        {
            Debug.Log("Error: PlayerStatus could not find object \"circle3\".");
        }
        lightLevels[3] = GameObject.Find("circle4");
        if (lightLevels[3] == null)
        {
            Debug.Log("Error: PlayerStatus could not find object \"circle4\".");
        }
        lightLevels[4] = GameObject.Find("circle5");
        if (lightLevels[4] == null)
        {
            Debug.Log("Error: PlayerStatus could not find object \"circle5\".");
        }

        lightLevels[0].SetActive(false);
        lightLevels[1].SetActive(false);
        lightLevels[2].SetActive(false);
        lightLevels[3].SetActive(false);
        lightLevels[4].SetActive(false);
    }
예제 #10
0
    public void NewMap(Vector2 mapWorldOrigin, int level, int darknessLevel = 0, int mapWidth = 9, int mapHeight = 9)
    {
        cameraShaker       = CameraShaker.instance;
        this.darknessLevel = darknessLevel;
        this.mapWidth      = mapWidth;
        this.mapHeight     = mapHeight;
        pool = ObjectPool.instance;
        if (tileHolder == null)
        {
            tileHolder      = new GameObject();
            tileHolder.name = "_TILES_";
        }
        tileHolder.transform.position = mapWorldOrigin;

        // Generate the map
        if (Map != null)
        {
            Map.ResetMap();
        }
        else
        {
            Map = new GameMap(mapWidth, mapHeight, mapWorldOrigin, OnTileChange);
        }


        // Make darness map
        darknessMap = new Darkness[mapWidth * mapHeight];
        // Spawn GObjs
        TileGOs = new TileGOData[Map.Tiles.Length];

        Vector2Int exitTilePos     = Vector2Int.zero;
        Vector2Int entranceTilePos = Vector2Int.zero;

        for (int i = 0; i < Map.Tiles.Length; i++)
        {
            if (Map.Tiles[i].tileType == TileType.Empty)
            {
                continue;
            }

            // Spawn tile GO
            GameObject tileGO = pool.GetObjectForType("Tile", true, Map.Tiles[i].WorldPosition);
            if (tileGO == null)
            {
                // Make a new one?
                return;
            }
            tileGO.transform.SetParent(tileHolder.transform);
            TileGOData tileGOData = new TileGOData();
            tileGOData.mainGO   = tileGO;
            tileGOData.renderer = tileGO.GetComponentInChildren <SpriteRenderer>();

            // Set Sprite
            RenderSystem.instance.Render(Map.Tiles[i].tileType.ToString(), tileGOData.renderer);

            darknessMap[i] = new Darkness(Map.Tiles[i].GridPosition.x, Map.Tiles[i].GridPosition.y, 0);


            // Set exit
            if (exitTilePos == Vector2Int.zero)
            {
                if (UnityEngine.Random.Range(1, 50) == 1)
                {
                    exitTilePos = Map.Tiles[i].GridPosition;
                }
                // Set entrance for levels after level 0
                else if (level > 0 && entranceTilePos == Vector2Int.zero)
                {
                    if (UnityEngine.Random.Range(1, 12) == 1)
                    {
                        entranceTilePos = Map.Tiles[i].GridPosition;
                    }
                }
            }

            TileGOs[i] = tileGOData;
        }
        // Clean up array
        TileGOs = TileGOs.Where(go => go.mainGO != null).ToArray();

        // if we still have no exit tile, place it in the center of the room
        if (exitTilePos == Vector2Int.zero)
        {
            exitTilePos = new Vector2Int(mapWidth / 2, mapHeight / 2);
        }
        Map.SetTileType(exitTilePos.x, exitTilePos.y, TileType.Exit);
        if (level > 0)
        {
            Map.SetTileType(entranceTilePos.x, entranceTilePos.y, TileType.Entrance);
        }

        // chance to start with darnkess
        if (darknessLevel > 0)
        {
            SetDarkness();
        }


        Global.OnMapCreated onMapCreated = new OnMapCreated();
        onMapCreated.entranceWorldPosition = entranceTilePos;
        onMapCreated.exitWorldPosition     = exitTilePos;
        onMapCreated.FireEvent();
    }
예제 #11
0
        // Create a list of every Area object
        public void InitializeAreas()
        {
            //Overworld Areas
            Area dismalSwamp = new DismalSwamp(this);

            areaList.Add(dismalSwamp);
            Area edgeOfBigHole = new EdgeOfBigHole(this);

            areaList.Add(edgeOfBigHole);
            Area forest = new Forest(this);

            areaList.Add(forest);
            Area hiddenGrove = new HiddenGrove(this);

            areaList.Add(hiddenGrove);
            Area lakeShore = new LakeShore(this);

            areaList.Add(lakeShore);
            Area ledge = new Ledge(this);

            areaList.Add(ledge);
            Area quicksand = new Quicksand(this);

            areaList.Add(quicksand);
            Area stump = new Stump(this);

            areaList.Add(stump);
            Area sunnyMeadow = new SunnyMeadow(this);

            areaList.Add(sunnyMeadow);
            Area topOfCypress = new TopOfCypress(this);

            areaList.Add(topOfCypress);
            Area topOfOak = new TopOfOak(this);

            areaList.Add(topOfOak);
            //Underworld Areas
            Area bottomOfChasm = new BottomOfChasm(this);

            areaList.Add(bottomOfChasm);
            Area largeCavern = new LargeCavern(this);

            areaList.Add(largeCavern);
            Area largeEightSidedRoom = new LargeEightSidedRoom(this);

            areaList.Add(largeEightSidedRoom);
            Area darkness = new Darkness(this);

            areaList.Add(darkness);
            Area longDownslopingHallway = new LongDownslopingHallway(this);

            areaList.Add(longDownslopingHallway);
            Area longTunnel = new LongTunnel(this);

            areaList.Add(longTunnel);
            Area memoryChip = new MemoryChip(this);

            areaList.Add(memoryChip);
            Area narrowLedgeByChasm = new NarrowLedgeByChasm(this);

            areaList.Add(narrowLedgeByChasm);
            Area narrowLedgeByThroneRoom = new NarrowLedgeByThroneRoom(this);

            areaList.Add(narrowLedgeByThroneRoom);
            Area rootChamber = new RootChamber(this);

            areaList.Add(rootChamber);
            Area royalAnteroom = new RoyalAnteroom(this);

            areaList.Add(royalAnteroom);
            Area royalChamber = new RoyalChamber(this);

            areaList.Add(royalChamber);
            Area semiDarkHole = new SemiDarkHole(this);

            areaList.Add(semiDarkHole);
            Area throneRoom = new ThroneRoom(this);

            areaList.Add(throneRoom);
            //Purgatory areas
            Area endlessCorridor = new EndlessCorridor(this);

            areaList.Add(endlessCorridor);
            Area hell = new Hell(this);

            areaList.Add(hell);
            Area largeMistyRoom = new LargeMistyRoom(this);

            areaList.Add(largeMistyRoom);
            //Maze areas
            Area eastOne = new EastOne(this);

            areaList.Add(eastOne);
            Area eastTwo = new EastTwo(this);

            areaList.Add(eastTwo);
            Area entrance = new Entrance(this);

            areaList.Add(entrance);
            Area northEastOne = new NorthEastOne(this);

            areaList.Add(northEastOne);
            Area northEastTwo = new NorthEastTwo(this);

            areaList.Add(northEastTwo);
            Area northOne = new NorthOne(this);

            areaList.Add(northOne);
            Area northTwo = new NorthTwo(this);

            areaList.Add(northTwo);
            Area northWestOne = new NorthWestOne(this);

            areaList.Add(northWestOne);
            Area northWestTwo = new NorthWestTwo(this);

            areaList.Add(northWestTwo);
            Area southEastOne = new SouthEastOne(this);

            areaList.Add(southEastOne);
            Area southEastTwo = new SouthEastTwo(this);

            areaList.Add(southEastTwo);
            Area southOne = new SouthOne(this);

            areaList.Add(southOne);
            Area southTwo = new SouthTwo(this);

            areaList.Add(southTwo);
            Area southWestOne = new SouthWestOne(this);

            areaList.Add(southWestOne);
            Area southWestTwo = new SouthWestTwo(this);

            areaList.Add(southWestTwo);
            Area westOne = new WestOne(this);

            areaList.Add(westOne);
            Area westTwo = new WestTwo(this);

            areaList.Add(westTwo);
        }
예제 #12
0
 private void Awake()
 {
     instance = this;
 }
예제 #13
0
        //Draws timer
        protected override void OnPaint(PaintEventArgs p)
        {
            base.OnPaint(p);
            Graphics g = p.Graphics;

            if (minutes < 10)
            {
                if (seconds < 10)
                {
                    g.DrawString("0" + minutes + ":" + "0" + seconds, new Font(FontFamily.GenericMonospace, 14F), new SolidBrush(Color.White), clockation);
                }
                else
                {
                    g.DrawString("0" + minutes + ":" + seconds, new Font(FontFamily.GenericMonospace, 14F), new SolidBrush(Color.White), clockation);
                }
            }
            else
            {
                if (seconds < 10)
                {
                    g.DrawString(minutes + ":" + "0" + seconds, new Font(FontFamily.GenericMonospace, 14F), new SolidBrush(Color.White), clockation);
                }
                else
                {
                    g.DrawString(minutes + ":" + seconds, new Font(FontFamily.GenericMonospace, 14F), new SolidBrush(Color.White), clockation);
                }
            }
            foreach (Draw d in drawables)
            {
                if (Darkness.CalculateSize(player, d))
                {
                    if (!(d.source == null))
                    {
                        if (d is Wall wall)
                        {
                            wall.checkErrors(drawables);
                        }
                        else if (d is Door door)
                        {
                            door.checkErrors(drawables);
                        }

                        ColorMatrix colorizer = new ColorMatrix();
                        colorizer.Matrix33 = Darkness.DarkLevel(player, d);

                        ImageAttributes attr = new ImageAttributes();
                        attr.SetColorMatrix(colorizer, ColorMatrixFlag.Default);

                        Rectangle rect = new Rectangle((int)d.location.x * tileSize, (int)d.location.y * tileSize, (int)d.width * tileSize, (int)d.height * tileSize);
                        g.DrawImage(d.source, rect, 0, 0, tileSize, tileSize, GraphicsUnit.Pixel, attr);
                    }
                    else
                    {
                        //Troubleshooting
                        g.FillRectangle(d.brush, d.location.x * tileSize, d.location.y * tileSize, d.width * tileSize, d.height * tileSize);
                    }
                }
            }
            //Player
            Rectangle player_sprite = new Rectangle((int)player.location.x * tileSize, (int)player.location.y * tileSize, (int)player.width * tileSize, (int)player.height * tileSize);

            g.DrawImage(player.source, player_sprite);

            int times = 0;

            if (refreshBar)
            {
                times++;
                Debug.WriteLine("Bar refreshed: " + times + "times");
                Graphics g2 = panel1.CreateGraphics();
                g2.DrawImage(Properties.Resources.inventory, new PointF(494, 0));
                int n = 1;

                foreach (Draw d in player.inventory.inventory_items)
                {
                    Image  texture = d.source;
                    PointF point   = new PointF(0, 0);
                    switch (n)
                    {
                    case 1:
                        point = Inventory.inventory_slot1;
                        n    += 1;
                        break;

                    case 2:
                        point = Inventory.inventory_slot2;
                        n    += 1;
                        break;

                    case 3:
                        point = Inventory.inventory_slot3;
                        n    += 1;
                        break;

                    case 4:
                        point = Inventory.inventory_slot4;
                        n    += 1;
                        break;

                    case 5:
                        point = Inventory.inventory_slot5;
                        break;
                    }
                    Rectangle rect_location = new Rectangle((int)point.X + 7, (int)point.Y + 7, 32, 32);
                    Debug.WriteLine("Location: " + rect_location);
                    g2.DrawImage(texture, rect_location);

                    if (d is Key key)
                    {
                        g2.DrawString(key.door.door_name, new Font(FontFamily.GenericMonospace, 7.0F), new SolidBrush(Color.White), new PointF(point.X + 2, 32));
                    }
                }

                //Empty hearts under full heart
                for (int lives = player.max_hitpoints; lives > 0; lives--)
                {
                    Rectangle hp_position = new Rectangle(15 + lives * 35 - 35, 5, 32, 32);
                    g2.DrawImage(Properties.Resources.hpEmpty, hp_position);
                }

                //Full hearts on top
                for (int lives = 0; lives < player.hitpoints; lives++)
                {
                    Rectangle hp_position = new Rectangle(15 + lives * 35, 5, 32, 32);
                    g2.DrawImage(Properties.Resources.hpFull, hp_position);
                }
                refreshBar = false;
            }
            UI.DisplayMessage(g);
        }
예제 #14
0
    // Update is called once per frame

    void FixedUpdate()
    {
        myState = Darkness.currentState;
        GetComponent <Light>().range = Darkness.getScale().x;

        if (timeSinceLastBeat >= currentRateDelay && myState == State.INCREASE)
        {
            //	Debug.Log ("THA-THUMP!!!!");
            Pulse(true);
            timeSinceLastBeat = 0.0f;
        }
        else
        {
            Pulse(false);
            timeSinceLastBeat += 0.1f;
        }

        if (timeSinceLastBeat >= currentRateDelay && myState == State.DECREASE)
        {
            //	Debug.Log ("THA-THUMP!!!!");
            Pulse(true);
            timeSinceLastBeat = 0.0f;
        }
        else
        {
            Pulse(false);
            timeSinceLastBeat += 0.1f;
        }



        switch (myState)
        {
        case State.INCREASE:
            currentRateDelay -= 0.1f;
            //	Debug.Log("In Increase: " + currentRateDelay);
            break;

        // if player is moving slower
        case State.DECREASE:
            //	Debug.Log("In Decrease: " + currentRateDelay);
            currentRateDelay += 0.1f;
            break;

        // if player is moving at a constant speed
        case State.STABLE:
            break;
        }
        if (currentRateDelay > SLOWEST_RATE_DELAY)
        {
            currentRateDelay = SLOWEST_RATE_DELAY;
        }
        if (currentRateDelay < FASTEST_RATE_DELAY)
        {
            currentRateDelay = FASTEST_RATE_DELAY;
        }


/*		if ( blah == 0 ) {
 *                      Pulse(true);
 *                      blah = 30;
 *              }
 *              else {
 *                      blah--;
 *                      Pulse (false);
 *              }*/
    }