示例#1
0
        private void DoReadShipCreate()
        {
            int     tmpUID     = FReader.ReadInt32();
            Landing tmpLanding = LandingByUID(tmpUID);

            /* пересмотреть логику */
            if (tmpLanding.Ship != null)
            {
                return;
            }
            Player   LOwner    = SSHShared.FindPlayer(FReader.ReadInt32());
            ShipType LShipType = (ShipType)FReader.ReadInt32();
            Ship     LShip     = new Ship(tmpUID, LOwner, tmpLanding, LShipType)
            {
                State          = (ShipState)FReader.ReadInt32(),
                Mode           = (ShipMode)FReader.ReadInt32(),
                AttachedPlanet = PlanetByUID(FReader.ReadInt32()),
                Count          = FReader.ReadInt32(),
                HP             = FReader.ReadInt32(),
                Fuel           = FReader.ReadInt32(),
                IsCapture      = FReader.ReadBoolean(),
                IsAutoTarget   = FReader.ReadBoolean(),
            };

            LShip.Allocate();
        }
 void Update()
 {
     if (SSHShared.HotKey(KeyCode.M, false))
         DoShowMap();
     if (SSHShared.HotKey(KeyCode.Escape, false))
         DoHideMap();
     if (FCameraZoomTarget != Camera.orthographicSize)
         DoRollZoom();
 }
示例#3
0
 // Показ линии высадки по хоткею
 private void CheckHotkey()
 {
     // Выключить путь
     if (SSHShared.HotKey(KeyCode.Escape, false) || Input.GetMouseButtonDown(1))
     {
         if (IsActive || IsDrag)
         {
             Cancel();
         }
         return;
     }
     // Для драга игнорируем другие хоткеи
     if (IsDrag)
     {
         return;
     }
     // Каждый слот соответствует клавише (1, 2, ... 7) игнорится если выбран какой-то объект
     if (!SSHShared.HotKey((FSelf.UID + 1).ToString()))
     {
         return;
     }
     // Выключим предыдущее состояние
     if (IsActive)
     {
         Cancel();
         return;
     }
     // Если нельзя включить
     else if (!DoEnterSource())
     {
         return;
     }
     // Выключим предыдущий объект
     if (SSHShared.MonoSource != null)
     {
         // Отмена если идет драг
         if (SSHShared.MonoSource.Script.IsDrag)
         {
             return;
         }
         else
         {
             SSHShared.MonoSource.Script.Cancel();
         }
     }
     FIsHotkey = true;
     // Активируем текущий слот
     if (!IsFocused)
     {
         SSHShared.MonoSource = FSelf;
     }
     Activate();
 }
示例#4
0
 // Обновление владельца планеты
 public void UpdateOwner(int AOwner)
 {
     // Определим игрока владельца
     Owner = SSHShared.FindPlayer(AOwner);
     if (Owner.Role != SSHRole.Neutral)
     {
         Name = Owner.Name;
     }
     // Сохраним данные
     FScript.UpdateOwner();
     // Обновим миникарту при смене владельца
     FScript.UpdateMinimap(true, false, false);
 }
示例#5
0
 public void PlanetarAvailable(int APlanetarID, int AErrorCode)
 {
     // Запустим созвездие если доступно
     if (AErrorCode == 0)
     {
         SSHShared.ShowPlanetar(APlanetarID);
     }
     else if (AErrorCode == 0x1F02)
     {
         ProgressText.text = "Запуск созвездия...";
     }
     else if (AErrorCode != 0x1F02)
     {
         SWEShared.UIPanelAuth.ShowError(AErrorCode);
     }
 }
示例#6
0
        private void DoReadPlanetarLoadPlanets()
        {
            int LCount = FReader.ReadInt32();

            // Создадим координатную сетку
            for (int LSectorX = 0; LSectorX < Engine.MapSize.x; LSectorX++)
            {
                for (int LSectorY = 0; LSectorY < Engine.MapSize.y; LSectorY++)
                {
                    new Grid(Engine.UIPanelGrid, LSectorX, LSectorY);
                }
            }
            // Загрузка планет
            for (int LIndex = 0; LIndex < LCount; LIndex++)
            {
                int    LUID    = FReader.ReadInt32();
                int    LPosX   = FReader.ReadInt32();
                int    LPosY   = FReader.ReadInt32();
                int    LType   = FReader.ReadInt32();
                int    LMode   = FReader.ReadInt32();
                Planet LPlanet = new Planet(LUID, Engine.UIBattlefield, LPosX, LPosY, (PlanetType)LType, (PlanetMode)LMode)
                {
                    Owner             = SSHShared.FindPlayer(FReader.ReadInt32()),
                    State             = (PlanetState)FReader.ReadInt32(),
                    VisibleHard       = FReader.ReadBoolean(),
                    VisibleSoft       = FReader.ReadBoolean(),
                    IsCoverageSelf    = FReader.ReadBoolean(),
                    IsCoverageFriends = FReader.ReadBoolean(),
                    IsCoverageEnemy   = FReader.ReadBoolean(),
                };
                LPlanet.Allocate();
            }
            // Загрузка ссылок
            for (int LIndex = 0; LIndex < LCount; LIndex++)
            {
                int LLinkCount = FReader.ReadInt32();
                for (int LLink = 0; LLink < LLinkCount; LLink++)
                {
                    Engine.MapPlanets[LIndex].Links.Add(Engine.MapPlanets[FReader.ReadInt32()]);
                }
            }
        }
示例#7
0
    // Горячие клавиши перемещения по карту
    void DoCheckKeyboard()
    {
        float LLeftRight    = 0;
        float LForwardBack  = 0;
        float LAcceleration = 1;

        // Лево
        if (SSHShared.HotKey(KeyCode.A, true) || SSHShared.HotKey(KeyCode.LeftArrow, true))
        {
            LLeftRight = C_KeyMapSpeed;
        }
        // Право
        if (SSHShared.HotKey(KeyCode.D, true) || SSHShared.HotKey(KeyCode.RightArrow, true))
        {
            LLeftRight = -C_KeyMapSpeed;
        }
        // Верх
        if (SSHShared.HotKey(KeyCode.W, true) || SSHShared.HotKey(KeyCode.UpArrow, true))
        {
            LForwardBack = -C_KeyMapSpeed;
        }
        // Вниз
        if (SSHShared.HotKey(KeyCode.S, true) || SSHShared.HotKey(KeyCode.DownArrow, true))
        {
            LForwardBack = C_KeyMapSpeed;
        }
        // Ускорение
        if (SSHShared.HotKey(KeyCode.LeftShift, true))
        {
            LAcceleration = C_KeyMapAcceleration;
        }
        // Смена позиции только если хоть одна кнопка нажата
        if ((LLeftRight != 0) || (LForwardBack != 0))
        {
            ChangePosition(LLeftRight * LAcceleration * -C_MapSpeed, LForwardBack * LAcceleration * -C_MapSpeed, true);
        }
    }
示例#8
0
 public void ShowExit()
 {
     SSHShared.ShowWelcome(true);
 }