Beispiel #1
0
        public int AddUnit(int type, string initPosX, string initPosY, string initPosZ, int team)
        {
            int ptr = -1;

            for (int i = 0; i < unitAvability.Count; i++)
            {
                if (!unitAvability[i])
                {
                    ptr = i;

                    break;
                }
            }
            Console.WriteLine($"Add unit at {initPosX} {initPosY} {initPosZ}");
            if (ptr == -1)
            {
                ptr = units.Count;
                UnitProfile tup = SpawnUnit(ptr, type, team);
                tup.AddTarget(initPosX, initPosY, initPosZ, 0);
                units.Add(tup);
                unitAvability.Add(true);
            }
            else
            {
                UnitProfile tup = SpawnUnit(ptr, type, team);
                tup.AddTarget(initPosX, initPosY, initPosZ, 0);
                units[ptr]         = tup;
                unitAvability[ptr] = true;
            }


            return(ptr);
        }
Beispiel #2
0
 public UnitManager(MainWindow mw)
 {
     selUnit          = null;
     mWindow          = mw;
     mCamMan          = new CamManager(mw);
     units            = new List <UnitProfile>();
     unitAvability    = new List <bool>();
     unitsDisplayList = new ObservableCollection <UnitData>();
 }
Beispiel #3
0
        private UnitProfile SpawnUnit(int ID, int type, int team)
        {
            UnitProfile tup = null;

            if (type == 0 || type == 2 || type == 3 || type == 4)
            {
                tup = new UnitProfile(ID, type, team, mWindow);
            }
            else if (type == 1)
            {
                tup = new CameraProfile(ID, type, team, mWindow);
            }
            return(tup);
        }
Beispiel #4
0
        public void ParseMsg(List <string> msg)
        {
            if (msg != null)
            {
                switch (msg[0])
                {
                case "Spawn":
                    switch (msg[1])
                    {
                    case "DD":
                        Console.WriteLine("PArsing");
                        int uid = AddUnit(0, msg[3], msg[4], msg[5], int.Parse(msg[6]));
                        UpdateDisplayList();
                        UpdateCamList();
                        break;

                    case "Camera":
                        Console.WriteLine("PArsing Cam");
                        uid = AddUnit(1, msg[3], msg[4], msg[5], int.Parse(msg[6]));
                        UpdateDisplayList();
                        UpdateCamList();
                        break;

                    case "BB":
                        Console.WriteLine("PArsing");
                        uid = AddUnit(2, msg[3], msg[4], msg[5], int.Parse(msg[6]));
                        UpdateDisplayList();
                        UpdateCamList();
                        break;

                    case "CV":
                        Console.WriteLine("PArsing");
                        uid = AddUnit(3, msg[3], msg[4], msg[5], int.Parse(msg[6]));
                        UpdateDisplayList();
                        UpdateCamList();
                        break;

                    case "Shell":
                        Console.WriteLine("PArsing");
                        uid = AddUnit(4, msg[3], msg[4], msg[5], int.Parse(msg[6]));
                        UpdateDisplayList();
                        UpdateCamList();
                        break;

                    case "Torpedo":
                        Console.WriteLine("PArsing");
                        uid = AddUnit(5, msg[3], msg[4], msg[5], int.Parse(msg[6]));
                        UpdateDisplayList();
                        UpdateCamList();
                        break;

                    default:
                        break;
                    }
                    break;

                case "Fire":
                    int      parentid = int.Parse(msg[2]);
                    Position p        = GetUnit(parentid).Move((int)mWindow.mClock.CurrentTime);
                    int      nuid     = AddUnit(int.Parse(msg[1]), p.X, p.Y, p.Z, GetUnit(parentid).mTeam);
                    mWindow.WpfServer.SendMessage($"Spawn Shell {GetUnit(parentid).mTeam} {p.X} {p.Y} {p.Z} {p.T}");
                    int endtime = (int)(mWindow.mClock.CurrentTime +
                                        (float)Math.Sqrt((float.Parse(msg[3]) - float.Parse(p.X)) * (float.Parse(msg[3]) - float.Parse(p.X)) +
                                                         (float.Parse(msg[4]) - float.Parse(p.Y)) * (float.Parse(msg[4]) - float.Parse(p.Y)) +
                                                         (float.Parse(msg[5]) - float.Parse(p.Z)) * (float.Parse(msg[5]) - float.Parse(p.Z))) / GetUnit(parentid).mSpeed);
                    GetUnit(nuid).AddTarget(msg[3], msg[4], msg[5], endtime);
                    mWindow.WpfServer.SendMessage($"Add {nuid} {p.X} {p.Y} {p.Z} {endtime} {(int)GetUnit(nuid).mType} {GetUnit(nuid).mName}");
                    UpdateDisplayList();
                    UpdateCamList();


                    break;

                case "Select":

                    selUnit = GetUnit(int.Parse(msg[1]));
                    UpdateKeyframeList();
                    UpdateParamList();
                    mWindow.LeftTabCtrl.SelectedIndex = 2;
                    break;

                case "Modify":

                    UnitProfile tselUnit = GetUnit(int.Parse(msg[1]));

                    Position tp = new Position();

                    tp.X = msg[2];
                    tp.Y = msg[3];
                    tp.Z = msg[4];
                    tp.T = int.Parse(msg[5]);
                    if (tselUnit.canRotate)
                    {
                        tp.RotX = msg[8];
                        tp.RotY = msg[9];
                        tp.RotZ = msg[10];
                    }
                    tselUnit.ModifyTarget(tp);
                    UpdateKeyframeList();
                    UpdateParamList();
                    break;

                case "Add":

                    tselUnit = GetUnit(int.Parse(msg[1]));
                    Position tp2 = new Position();
                    tp2.X = msg[2];
                    tp2.Y = msg[3];
                    tp2.Z = msg[4];
                    tp2.T = int.Parse(msg[5]);
                    if (tselUnit.canRotate)
                    {
                        tp2.RotX = msg[8];
                        tp2.RotY = msg[9];
                        tp2.RotZ = msg[10];
                        tselUnit.AddTarget(tp2.X, tp2.Y, tp2.Z, tp2.T, tp2.RotX, tp2.RotY, tp2.RotZ);
                    }
                    else
                    {
                        tselUnit.AddTarget(tp2.X, tp2.Y, tp2.Z, tp2.T);
                    }

                    UpdateKeyframeList();
                    UpdateParamList();
                    break;

                case "Disselect":

                    mWindow.ParamsDataGrid.DataContext = null;
                    mWindow.KeyDataGrid.DataContext    = null;
                    break;

                case "SyncTime":
                    mWindow.Timeshift((int)float.Parse(msg[1]));
                    break;
                }
            }
        }