示例#1
0
	public void DecreaseHealth(int amount)
	{
        curHealth -= amount;
        if (curHealth <= 0)
        {
            transform.parent.GetComponent<BuildAreaScript>().RebuildableArea();
            fireState = Fires.NONE;
        }
	}
        public void FromMapData(MapData mapData)
        {
            Turn    = mapData.Turn;
            Walls   = mapData.Walls.Select(item => new Position(item[0], item[1])).ToList();
            Blocks  = mapData.Blocks.Select(item => new Position(item[0], item[1])).ToList();
            Players = mapData.Players;
            Me      = mapData.Players.Find(p => p.Name == Consts.MyName);
            Bombs   = mapData.Bombs;
            Items   = mapData.Items;
            Fires   = mapData.Fires.Select(item => new Position(item[0], item[1])).ToList();

            MinX = Walls.Select(item => item.x).Min();
            int MaxX = Walls.Select(item => item.x).Max();

            SizeX = MaxX - MinX + 1;

            MinY = Walls.Select(item => item.y).Min();
            int MaxY = Walls.Select(item => item.y).Max();

            SizeY = MaxY - MinY + 1;

            logger.Debug($"MinX: {MinX}, SizeX: {SizeX}, MinY {MinY}, SizeY {SizeY}");


            var ary2 = Enumerable.Range(MinY, SizeY).Select(y =>
            {
                return(Enumerable.Range(MinX, SizeX).Select(x =>
                {
                    var cell = new Cell()
                    {
                        X = x,
                        Y = y,
                        Wall = Walls.Any(w => w.x == x && w.y == y),
                        Block = Blocks.Any(b => b.x == x && b.y == y),
                        AnyPlayer = Players.Any(p => p.pos.x == x && p.pos.y == y && p.Name != Consts.MyName),
                        MyPosition = Players.Any(p => p.pos.x == x && p.pos.y == y && p.Name == Consts.MyName),
                        Bomb = Bombs.Find(b => b.pos.x == x && b.pos.y == y),
                        Item = Items.Any(i => i.pos.x == x && i.pos.y == y),
                        Fire = Fires.Any(f => f.x == x && f.y == y)
                    };
                    var pos = new Position(x, y);
                    return new KeyValuePair <Position, Cell>(pos, cell);
                }));
            }).SelectMany(e => e);

            CellDict = new CellDict(ary2, MinX, SizeX, MinY, SizeY);

            SetAboutToFire();

            SetFallingWall();

            CellDict.SetDistance(Me.pos);

            CellDict.Log();
        }
 public static void Postfix(SubFire __instance, SubFire.RoomFire startInRoom, bool __state)
 {
     // Spent way too much time trying to get around a bug in dnspy that doesn't allow me to propery edit this method, so I'm going with the hacky solution.
     // Every time a Fire is created, the whole list of SubFire.availableNodes is cleared, then populated with any transforms that have 0 childCount.
     // Next, it chooses a random index, then spawns a fire in that node.
     // We can easily find where it is because it'll be the only Transform in SubFire.availableNodes with a childCount > 0
     if (__state)
     {
         Fires fires = NitroxServiceLocator.LocateService <Fires>();
         foreach (Transform transform in __instance.availableNodes)
         {
             if (transform.childCount > 0)
             {
                 int  nodeIndex = Array.IndexOf(__instance.roomFires[startInRoom.roomLinks.room].spawnNodes, transform);
                 Fire fire      = transform.GetComponentInChildren <Fire>();
                 fires.OnCreate(fire, startInRoom, nodeIndex);
                 return;
             }
         }
     }
 }
 public CyclopsFireCreatedProcessor(IPacketSender packetSender, Fires fires)
 {
     this.packetSender = packetSender;
     this.fires        = fires;
 }
 public CyclopsDamageProcessor(IPacketSender packetSender, Fires fires)
 {
     this.packetSender = packetSender;
     this.fires        = fires;
 }
示例#6
0
	void OnMouseDown() {
        FirePerception scrpt;
        bool btcof;
        switch(fireState)
        {
            case  Fires.NONE:
                Destroy(fireEffect);
                fireEffect = (GameObject)Instantiate(prefabSimple, new Vector3(transform.position.x, transform.position.y + 9.0f, transform.position.z), transform.rotation);
                fireEffect.transform.parent = transform;
                fireEffect.transform.Translate(3.75f * Vector3.forward);
                fireState = Fires.SIMPLE;
                break;
            case Fires.SIMPLE:
                scrpt = fireEffect.GetComponent<FirePerception>();
                if (!scrpt.beingTakenCareOf)
                {
                    btcof = scrpt.beingTakenCareOf;
                    Destroy(fireEffect);
                    fireEffect = (GameObject)Instantiate(prefabImproved, new Vector3(transform.position.x, transform.position.y + 9.0f, transform.position.z), transform.rotation);
                    fireEffect.transform.parent = transform;
                    fireEffect.transform.Translate(3.75f * Vector3.forward);
                    scrpt = fireEffect.GetComponent<FirePerception>();
                    scrpt.beingTakenCareOf = btcof;
                    fireState = Fires.IMPROVED;
                }
                break;
            case Fires.IMPROVED:
                scrpt = fireEffect.GetComponent<FirePerception>();
                if (!scrpt.beingTakenCareOf)
                {
                    btcof = scrpt.beingTakenCareOf;
                    Destroy(fireEffect);
                    fireEffect = (GameObject)Instantiate(prefabGreater, new Vector3(transform.position.x, transform.position.y + 9.0f, transform.position.z), transform.rotation);
                    fireEffect.transform.parent = transform;
                    fireEffect.transform.Translate(3.75f * Vector3.forward);
                    scrpt = fireEffect.GetComponent<FirePerception>();
                    scrpt.beingTakenCareOf = btcof;
                }
                break;
            case Fires.GREATER:
                break;
            default:
                break;
        }
    }
示例#7
0
 public void setFireState(Fires state)
 {
     fireState = state;
 }