void OnCollisionEnter(Collision col)
 {
     if (networkObject != null)
     {
         // Collisions are ignored between player and their own base already
         if (networkObject.IsOwner && col.gameObject.tag == "Barrier")
         {
             BarrierBlock block = col.gameObject.GetComponent <BarrierBlock>();
             if (!block.networkObject.IsOwner)
             {
                 block.networkObject.health -= damage;
                 block.networkObject.SendRpc(BarrierBlockBehavior.RPC_CHANGE_COLOR, Receivers.AllBuffered, -damage);
                 networkObject.Destroy();
             }
         }
     }
 }
Beispiel #2
0
        public static void LoadLevels()
        {
            Levels  = new List <Level>();
            Bullets = new List <Bullet>();

            DirectoryInfo info = new DirectoryInfo("./Assets/Alex/SpiderFighter/Levels/");

            foreach (FileInfo item in info.GetFiles())
            {
                string        currentstring = "";
                List <string> lines         = new List <string>();
                Level         level         = new Level();

                StreamReader stream   = item.OpenText();
                string       fullText = stream.ReadToEnd();

                for (int i = 0; i < fullText.Length; i++)
                {
                    if (fullText[i] != '>')
                    {
                        currentstring = currentstring + fullText[i];
                    }
                    else
                    {
                        currentstring.Replace('>', '\0');
                        currentstring = currentstring.Replace("\r\n", "");
                        lines.Add(currentstring);
                        currentstring = "";
                    }
                }

                foreach (string line in lines)
                {
                    string currentdata = "";

                    List <string> data = new List <string>();
                    for (int i = 0; i < line.Length; i++)
                    {
                        if (line[i] != ';')
                        {
                            currentdata = currentdata + line[i];
                        }
                        else
                        {
                            currentdata.Replace(';', '\0');
                            data.Add(currentdata);
                            currentdata = "";
                        }
                    }
                    Textures.ItemBitmaps.TryGetValue("IronDoorClose", out Bitmap bitmap1);
                    switch (data[0])
                    {
                    case "Block":
                        if (data[6] == "True")
                        {
                            Textures.ItemBitmaps.TryGetValue(data[5], out Bitmap bitmap);
                            var barrier = new BarrierBlock(new RectangleF((float)Convert.ToDouble(data[1]), (float)Convert.ToDouble(data[2]), (float)Convert.ToDouble(data[3]), (float)Convert.ToDouble(data[4])), bitmap);
                            level.Items.Add(barrier);
                        }
                        else if (data[6] == "False")
                        {
                            Textures.ItemBitmaps.TryGetValue(data[5], out Bitmap bitmap);
                            var decoblock = new DecoBlock(new RectangleF((float)Convert.ToDouble(data[1]), (float)Convert.ToDouble(data[2]), (float)Convert.ToDouble(data[3]), (float)Convert.ToDouble(data[4])), bitmap);
                            level.Items.Add(decoblock);
                        }
                        break;

                    case "Door":
                        var door = new Door(
                            new RectangleF((float)Convert.ToDouble(data[1]), (float)Convert.ToDouble(data[2]),
                                           (float)Convert.ToDouble(data[3]), (float)Convert.ToDouble(data[4])), bitmap1);

                        level.Items.Add(door);
                        break;

                    default:
                        break;
                    }
                }
                Levels.Add(level);
            }
        }