Beispiel #1
0
 /// <inheritdoc />
 public BedrockServerType(Alex game, XboxAuthService xboxAuthService) : base(new BedrockServerQueryProvider(game), "Bedrock", "bedrock")
 {
     DefaultPort     = 19132;
     Alex            = game;
     ProtocolVersion = McpeProtocolInfo.ProtocolVersion;
     XboxAuthService = xboxAuthService;
 }
Beispiel #2
0
        public PlayingState(Alex alex, GraphicsDevice graphics, WorldProvider worldProvider, INetworkProvider networkProvider) : base(alex)
        {
            NetworkProvider = networkProvider;

            World       = new World(alex, graphics, Options, new FirstPersonCamera(Options.VideoOptions.RenderDistance, Vector3.Zero, Vector3.Zero), networkProvider);
            SkyRenderer = new SkyBox(alex, graphics, World);

            WorldProvider = worldProvider;
            if (worldProvider is SPWorldProvider)
            {
                World.FreezeWorldTime = true;
            }

            var chat  = new ChatComponent(World);
            var title = new TitleComponent();

            WorldProvider = worldProvider;
            WorldProvider.Init(World, chat, out var info, out var chatProvider);
            World.WorldInfo              = info;
            chat.ChatProvider            = chatProvider;
            WorldProvider.TitleComponent = title;

            _playingHud = new PlayingHud(Alex, World.Player, chat, title);
            _debugInfo  = new GuiDebugInfo();
            InitDebugInfo();
        }
Beispiel #3
0
        private async void OnJoinServerButtonPressed()
        {
            var       entry = SelectedItem.SavedServerEntry;
            var       ips   = Dns.GetHostAddresses(entry.Host).ToArray();
            IPAddress ip    = ips[Rnd.Next(0, ips.Length - 1)];

            if (ip == null)
            {
                return;
            }

            IPEndPoint target = new IPEndPoint(ip, entry.Port);

            var authenticationService = GetService <IPlayerProfileService>();
            var currentProfile        = authenticationService.CurrentProfile;

            if (Alex.ServerTypeManager.TryGet(entry.ServerType, out var typeImplementation))
            {
                if (!await typeImplementation.VerifyAuthentication(currentProfile))
                {
                    await typeImplementation.Authenticate(_skyBox, result =>
                    {
                        if (result)
                        {
                            Alex.ConnectToServer(typeImplementation, new ServerConnectionDetails(target, entry.Host), authenticationService.CurrentProfile);
                        }
                    });
                }
                else
                {
                    Alex.ConnectToServer(typeImplementation, new ServerConnectionDetails(target, entry.Host), authenticationService.CurrentProfile);
                }
            }
        }
        public void ChargeAccounts()
        {
            var cashAccount = new Account(Session)
            {
                Type = AccountTypeEnum.Cash
            };

            Session.CommitChanges();
            Andrew.DepositAmount(30);
            Session.CommitChanges();
            Alex.DepositAmount(30);
            Session.CommitChanges();
            Assert.IsTrue(cashAccount.Balance == -60);
            VideoRentDateTime.AddMonths(1);
            Andrew.DebitMembershipFee(30);
            Session.CommitChanges();
            VideoRentDateTime.AddMonths(1);
            Andrew.DepositAmount(30);
            Session.CommitChanges();
            Andrew.DebitMembershipFee(30);
            Session.CommitChanges();
            VideoRentDateTime.AddMonths(1);
            Andrew.DebitMembershipFee(30);
            Session.CommitChanges();
            Assert.IsTrue(Andrew.IsMembershipDebter);
            Assert.IsTrue(GetMonths(VideoRentDateTime.Now - Andrew.LastPayDate()) == 3);
            Assert.IsFalse(Alex.IsMembershipDebter);
            Assert.IsTrue(cashAccount.Balance == 0);
            Assert.IsTrue(Andrew.Accounts[0].Balance == -30);
        }
        public SingleplayerServer(string world, Alex alex, IPEndPoint endPoint, PlayerProfile profile, DedicatedThreadPool threadPool, out INetworkProvider networkProvider) : base(alex, endPoint, profile, threadPool, out networkProvider)
        {
            Server             = new MiNetServer(new IPEndPoint(IPAddress.Loopback, 0));
            ConnectionEndpoint = Server.Endpoint;

            Server.LevelManager = new LevelManager();
            MiNETLevel          = Server.LevelManager.GetLevel(null, world);
        }
        public BedrockWorldProvider(Alex alex, IPEndPoint endPoint, PlayerProfile profile,
                                    out INetworkProvider networkProvider)
        {
            Alex = alex;

            Client          = new BedrockClient(alex, endPoint, profile, new DedicatedThreadPool(new DedicatedThreadPoolSettings(Environment.ProcessorCount, ThreadType.Background, "BedrockClientThread")), this);
            networkProvider = Client;
        }
Beispiel #7
0
        public EntityModelExplorer(Alex alex, World world)
        {
            Alex           = alex;
            World          = world;
            GraphicsDevice = alex.GraphicsDevice;

            _entityDefinitions = alex.Resources.BedrockResourcePack.EntityDefinitions.ToArray();
        }
Beispiel #8
0
        public BlockModelExplorer(Alex alex, World world)
        {
            Alex           = alex;
            World          = world;
            GraphicsDevice = alex.GraphicsDevice;

            _blockStates = BlockFactory.AllBlockstates.Values.ToArray();
        }
Beispiel #9
0
        public SPWorldProvider(Alex alex, IWorldGenerator worldGenerator)
        {
            Alex            = alex;
            OptionsProvider = alex.Services.GetService <IOptionsProvider>();

            _generator = worldGenerator;

            ThreadCancellationTokenSource = new CancellationTokenSource();
        }
Beispiel #10
0
        public World(Alex alex, GraphicsDevice graphics, AlexOptions options, Camera camera,
                     INetworkProvider networkProvider)
        {
            Alex     = alex;
            Graphics = graphics;
            Camera   = camera;
            Options  = options;

            PhysicsEngine = new PhysicsManager(alex, this);
            ChunkManager  = new ChunkManager(alex, graphics, options, this);
            EntityManager = new EntityManager(graphics, this, networkProvider);
            Ticker        = new TickManager(this);
            PlayerList    = new PlayerList();

            ChunkManager.Start();
            var    profileService = alex.Services.GetService <IPlayerProfileService>();
            string username       = string.Empty;
            Skin   skin           = profileService?.CurrentProfile?.Skin;

            if (skin == null)
            {
                alex.Resources.ResourcePack.TryGetBitmap("entity/alex", out Bitmap rawTexture);
                var t = TextureUtils.BitmapToTexture2D(graphics, rawTexture);
                skin = new Skin()
                {
                    Texture = t,
                    Slim    = true
                };
            }

            if (!string.IsNullOrWhiteSpace(profileService?.CurrentProfile?.Username))
            {
                username = profileService.CurrentProfile.Username;
            }

            Player = new Player(graphics, alex, username, this, skin, networkProvider, PlayerIndex.One);

            Player.KnownPosition = new PlayerLocation(GetSpawnPoint());
            Camera.MoveTo(Player.KnownPosition, Vector3.Zero);

            Options.FieldOfVision.ValueChanged += FieldOfVisionOnValueChanged;
            Camera.FOV = Options.FieldOfVision.Value;

            PhysicsEngine.AddTickable(Player);

            Player.Inventory.IsPeInventory = true;
            if (ItemFactory.TryGetItem("minecraft:diamond_sword", out var sword))
            {
                Player.Inventory[Player.Inventory.SelectedSlot] = sword;
                Player.Inventory.MainHand = sword;
            }
            else
            {
                Log.Warn($"Could not get diamond sword!");
            }
        }
Beispiel #11
0
        public ChunkManager(Alex alex, GraphicsDevice graphics, AlexOptions option, IWorld world)
        {
            Game            = alex;
            Graphics        = graphics;
            World           = world;
            Options         = option;
            ProfilerService = alex.Services.GetService <ProfilerService>();

            Chunks = new ConcurrentDictionary <ChunkCoordinates, IChunkColumn>();

            var fogStart = 0;

            TransparentEffect = new AlphaTestEffect(Graphics)
            {
                Texture            = alex.Resources.Atlas.GetStillAtlas(),
                VertexColorEnabled = true,
                World          = Matrix.Identity,
                AlphaFunction  = CompareFunction.Greater,
                ReferenceAlpha = 127,
                FogStart       = fogStart,
                FogEnabled     = false
            };

            AnimatedEffect = new AlphaTestEffect(Graphics)
            {
                Texture            = alex.Resources.Atlas.GetAtlas(0),
                VertexColorEnabled = true,
                World          = Matrix.Identity,
                AlphaFunction  = CompareFunction.Greater,
                ReferenceAlpha = 127,
                FogStart       = fogStart,
                FogEnabled     = false
            };

            OpaqueEffect = new BasicEffect(Graphics)
            {
                TextureEnabled     = true,
                Texture            = alex.Resources.Atlas.GetStillAtlas(),
                FogStart           = fogStart,
                VertexColorEnabled = true,
                LightingEnabled    = true,
                FogEnabled         = false
            };

            //if (alex.)

            FrameCount = alex.Resources.Atlas.GetFrameCount();

            ChunkManagementThread = new Thread(ChunkUpdateThread)
            {
                IsBackground = true,
                Name         = "Chunk Management"
            };

            HighestPriority = new ConcurrentQueue <ChunkCoordinates>();
        }
Beispiel #12
0
        public void ReturnMovie()
        {
            var rent = Alex.DoRent(new RentInfo(Avatar, 1)).Rents[0];

            VideoRentDateTime.AddDays(3);
            var overdueReceipt = Alex.ReturnRent(rent);

            Assert.IsNotNull(overdueReceipt);
            Assert.AreNotEqual(0, overdueReceipt.Payment);
        }
Beispiel #13
0
        public PlayingHud(Alex game, Player player, TitleComponent titleComponent) : base()
        {
            Title = titleComponent;

            Alex   = game;
            Player = player;

            Player.OnInventoryChanged += OnInventoryChanged;

            Anchor  = Alignment.Fill;
            Padding = Thickness.One;

            _playerController = player.Controller;
            InputManager.AddListener(new MouseInputListener(InputManager.PlayerIndex));

            _healthAndHotbar = new GuiStackContainer()
            {
                Orientation = Orientation.Vertical,
                ChildAnchor = Alignment.Fill
            };

            _bottomContainer              = new GuiMultiStackContainer();
            _bottomContainer.ChildAnchor  = Alignment.BottomFill;
            _bottomContainer.Anchor       = Alignment.BottomCenter;
            _bottomContainer.AutoSizeMode = AutoSizeMode.GrowAndShrink;
            _bottomContainer.Orientation  = Orientation.Vertical;

            //BottomContainer.

            _hotbar         = new GuiItemHotbar(player.Inventory);
            _hotbar.Anchor  = Alignment.BottomCenter;
            _hotbar.Padding = Thickness.Zero;

            Chat         = new ChatComponent();
            Chat.Enabled = false;
            Chat.Anchor  = Alignment.BottomLeft;

            _healthContainer        = new GuiContainer();
            _healthContainer.Anchor = Alignment.Fill;

            _healthContainer.Margin = new Thickness(0, 0, 0, 1);

            _healthComponent        = new HealthComponent(player);
            _healthComponent.Anchor = Alignment.TopLeft;

            _hungerComponent        = new HungerComponent(player);
            _hungerComponent.Anchor = Alignment.TopRight;

            _tipPopupComponent              = new TipPopupComponent();
            _tipPopupComponent.Anchor       = Alignment.BottomCenter;
            _tipPopupComponent.AutoSizeMode = AutoSizeMode.GrowAndShrink;

            Scoreboard        = new ScoreboardView();
            Scoreboard.Anchor = Alignment.MiddleRight;
        }
Beispiel #14
0
 public static Alex getAlex()
 {
     lock (typeof(Alex))
     {
         if (theSingleton == null)
         {
             theSingleton = new Alex();
         }
     }
     return(theSingleton);
 }
Beispiel #15
0
        private void Debug(IWorldGenerator generator)
        {
            Alex.IsMultiplayer = false;

            Alex.IsMouseVisible = false;

            generator.Initialize();
            var debugProvider = new SPWorldProvider(Alex, generator);

            Alex.LoadWorld(debugProvider, debugProvider.Network);
        }
Beispiel #16
0
        public void RentMovies_CalcPayment()
        {
            var receipt = Alex.Buy(new RentInfo[] { new RentInfo(Avatar), new RentInfo(Cube) });

            Assert.AreEqual(2, receipt.Rents.Count);
            Assert.AreEqual(MovieItemStatus.Sold, receipt.Rents[0].Item.Status);
            Assert.AreEqual(MovieItemStatus.Sold, receipt.Rents[1].Item.Status);
            var payment = receipt.Rents[0].Item.SellingPrice + receipt.Rents[1].Item.SellingPrice;

            Assert.AreEqual(payment, receipt.Payment);
        }
Beispiel #17
0
        public PlayingState(Alex alex, GraphicsDevice graphics, WorldProvider worldProvider, NetworkProvider networkProvider) : base(alex)
        {
            NetworkProvider = networkProvider;

            World = new World(alex.Services, graphics, Options, networkProvider);
            World.Player.IsFirstPersonMode = true;

            WorldProvider = worldProvider;
            if (worldProvider is SPWorldProvider)
            {
                World.DoDaylightcycle = false;
                //World.Player.SetInventory(new BedrockInventory(46));
                if (ItemFactory.TryGetItem("minecraft:diamond_sword", out var sword))
                {
                    World.Player.Inventory.MainHand = sword;
                    World.Player.Inventory[World.Player.Inventory.SelectedSlot] = sword;
                }
            }

            var title = new TitleComponent();

            WorldProvider = worldProvider;
            WorldProvider.Init(World);

            WorldProvider.TitleComponent = title;

            _playingHud = new PlayingHud(Alex, World.Player, title);
            _playingHud.Chat.Network = networkProvider;

            WorldProvider.ScoreboardView = _playingHud.Scoreboard;
            WorldProvider.ChatRecipient  = _playingHud;
            //WorldProvider.ScoreboardView

            _debugInfo = new GuiDebugInfo();
            InitDebugInfo();

            MiniMap = new GuiMiniMap(World.ChunkManager)
            {
                Anchor = Alignment.TopRight
            };

            var settings = GetService <IOptionsProvider>();

            settings.AlexOptions.VideoOptions.Minimap.Bind(OnMinimapSettingChange);
            RenderMinimap = settings.AlexOptions.VideoOptions.Minimap.Value;

            if (RenderMinimap)
            {
                _playingHud.AddChild(MiniMap);
            }

            _networkDebugHud = new NetworkDebugHud(NetworkProvider);
        }
 public void AsTest()
 {
     using (var session = Domain.OpenSession()) {
         using (var transactionn = session.OpenTransaction()) {
             var alex = new Alex();
             session.SaveChanges();
             var query = session.Query.All <Developer>().Select(developer => new { SoloProfessional = developer as IAmSoloProfessional }).ToArray();
             Assert.AreEqual(1, query.Length);
             Assert.AreSame(alex, query[0].SoloProfessional);
         }
     }
 }
        public ProfileSelectionState(GuiPanoramaSkyBox skyBox, Alex alex)
        {
            Alex           = alex;
            _skyBox        = skyBox;
            ProfileService = GetService <IPlayerProfileService>();

            Title = "Select Profile";

            Background = new GuiTexture2D(_skyBox, TextureRepeatMode.Stretch);

            base.ListContainer.ChildAnchor = Alignment.MiddleCenter;
            base.ListContainer.Orientation = Orientation.Horizontal;

            Footer.AddRow(row =>
            {
                row.AddChild(_addBtn = new GuiButton("Add", AddClicked)
                {
                });
                row.AddChild(_editBtn = new GuiButton("Edit", EditClicked)
                {
                    Enabled = false
                });
                row.AddChild(_deleteBtn = new GuiButton("Delete", DeleteClicked)
                {
                    Enabled = false
                });
            });

            Footer.AddRow(row =>
            {
                //   row.ChildAnchor = Alignment.CenterX;
                row.AddChild(_selectBtn = new GuiButton("Select Profile", OnProfileSelect)
                {
                    Enabled = false
                });

                row.AddChild(_cancelBtn = new GuiButton("Cancel", OnCancelButtonPressed)
                {
                });
            });

            if (_defaultSkin == null)
            {
                Alex.Instance.Resources.ResourcePack.TryGetBitmap("entity/alex", out var rawTexture);
                _defaultSkin = new Skin()
                {
                    Slim    = true,
                    Texture = TextureUtils.BitmapToTexture2D(Alex.Instance.GraphicsDevice, rawTexture)
                };
            }

            Reload();
        }
Beispiel #20
0
        public BedrockWorldProvider(Alex alex, IPEndPoint endPoint, PlayerProfile profile,
                                    out NetworkProvider networkProvider)
        {
            Alex = alex;

            //Client = new ExperimentalBedrockClient(alex, alex.Services, this, endPoint);
            Client          = new BedrockClient(alex, endPoint, profile, this);
            networkProvider = Client;

            var guiManager = Alex.GuiManager;

            FormManager = new BedrockFormManager(networkProvider, guiManager, alex.InputManager);
        }
Beispiel #21
0
        public BedrockClientPacketHandler(BedrockClient client, Alex alex, CancellationToken cancellationToken) :
            base(client)
        {
            BaseClient        = client;
            AlexInstance      = alex;
            CancellationToken = cancellationToken;

            AnvilWorldProvider.LoadBlockConverter();

            ChunkProcessor = new ChunkProcessor(4,
                                                alex.Services.GetService <IOptionsProvider>().AlexOptions.MiscelaneousOptions.ServerSideLighting,
                                                cancellationToken);
        }
        public BedrockWorldProvider(Alex alex, IPEndPoint endPoint, PlayerProfile profile, DedicatedThreadPool threadPool,
                                    out NetworkProvider networkProvider)
        {
            Alex = alex;
            var eventDispatcher = alex.Services.GetRequiredService <IEventDispatcher>();

            EventDispatcher = eventDispatcher;

            //Client = new ExperimentalBedrockClient(alex, alex.Services, this, endPoint);
            Client          = new BedrockClient(alex, eventDispatcher, endPoint, profile, threadPool, this);
            networkProvider = Client;

            EventDispatcher.RegisterEvents(this);
        }
        public void CheckAccountBalance()
        {
            var cashAccount = new Account(Session)
            {
                Debit = 300, Type = AccountTypeEnum.Cash
            };

            Session.CommitChanges();
            Andrew.DepositAmount(30);
            Session.CommitChanges();
            Alex.DepositAmount(30);
            Session.CommitChanges();
            Assert.IsTrue(cashAccount.Balance == -360);
        }
 public void GeneratePuzzle(Alex owner, Alex.Puzzle puzzle)
 {
     this.owner = owner;
     this.currentPuzzle = puzzle;
     Cleanup();
     currentChar = 0;
     if (puzzle.arrow) {
         GenerateArrowPuzzle(puzzle);
     } else if (puzzle.words) {
         GenerateTextPuzzle(puzzle);
     } else {
         throw new System.Exception("Puzzle type unknown " + puzzle);
     }
     inPuzzle = true;
 }
Beispiel #25
0
        public DebugModelRenderer(Alex alex)
        {
            Background   = Color.DeepSkyBlue;
            Anchor       = Alignment.Fill;
            ClipToBounds = false;

            EntityPosition = new PlayerLocation(Vector3.Zero);
            Camera         = new DebugModelRendererCamera(this);

            // World = new World(alex, alex.GraphicsDevice, alex.Services.GetService<IOptionsProvider>().AlexOptions,
            //     new FirstPersonCamera(16, Vector3.Zero, Vector3.Zero), new DebugNetworkProvider());

            BlockModelExplorer  = new BlockModelExplorer(alex, null);
            EntityModelExplorer = new EntityModelExplorer(alex, null);

            ModelExplorer = BlockModelExplorer;
        }
Beispiel #26
0
        public Player(GraphicsDevice graphics, Alex alex, string name, World world, Skin skin, INetworkProvider networkProvider, PlayerIndex playerIndex) : base(name, world, networkProvider, skin.Texture, true)
        {
            //	DoRotationCalculations = false;
            PlayerIndex = playerIndex;
            Controller  = new PlayerController(graphics, world, alex.InputManager, this, playerIndex);
            NoAi        = false;

            //Inventory = new Inventory(46);
            //Inventory.SelectedHotbarSlotChanged += SelectedHotbarSlotChanged;
            //base.Inventory.IsPeInventory = true;
            MovementSpeed = 4.317f;
            FlyingSpeed   = 10.89f;

            SnapHeadYawRotationOnMovement = false;

            RenderEntity = true;
        }
Beispiel #27
0
        public void UpdateExtCtrl(Band band, Band bandb, bool tx)
        {
            if (!tx && (int)band < 12)              // if !tx ignore given band and round off to nearest band based on freq
            {
                band = Alex.AntBandFromFreq();
            }

            if (!tx && (int)bandb < 12)
            {
                bandb = Alex.AntBandFromFreqB();
            }

            int idx  = (int)band - (int)Band.B160M;
            int idxb = (int)bandb - (int)Band.B160M;
            int bits;

            if ((idx < 0 || idx > 26) || (idxb < 0 || idxb > 26))
            {
                bits = 0;
            }
            else
            {
                if (SplitPins)
                {
                    bits = tx ? (TXABitMasks[idx] & RxABitMask) | TXBBitMasks[idxb] : (RXABitMasks[idx] & RxABitMask) | RXBBitMasks[idxb];
                }
                else
                {
                    if (tx && VFOTBX)
                    {
                        bits = TXABitMasks[idxb];
                    }
                    else if (tx)
                    {
                        bits = TXABitMasks[idx];
                    }
                    else
                    {
                        bits = RXABitMasks[idx];
                    }
                }
            }
            System.Console.WriteLine("Bits: " + bits + " Band: " + (int)band + " Band: " + (int)bandb);
            NetworkIO.SetOCBits(bits);
        }
Beispiel #28
0
 public void Dispose()
 {
     Heart?.Dispose();
     Hearts?.Dispose();
     Stage?.Dispose();
     PenguinSliding?.Dispose();
     PenguinWalking?.Dispose();
     PenguinWithBoard?.Dispose();
     UIBackground?.Dispose();
     Grzesiek?.Dispose();
     DOG?.Dispose();
     Alex?.Dispose();
     Kamil?.Dispose();
     Marcin?.Dispose();
     Marek?.Dispose();
     Tymon?.Dispose();
     PenguinIcons?.Dispose();
 }
Beispiel #29
0
        public PlayingHud(Alex game, Player player, ChatComponent chat, TitleComponent titleComponent) : base()
        {
            Title = titleComponent;

            Alex   = game;
            Player = player;

            _playerController = player.Controller;
            InputManager.AddListener(new MouseInputListener(InputManager.PlayerIndex));

            _hotbar         = new GuiItemHotbar(player.Inventory);
            _hotbar.Anchor  = Alignment.BottomCenter;
            _hotbar.Padding = Thickness.Zero;

            Chat         = chat;
            Chat.Enabled = false;
            Chat.Anchor  = Alignment.BottomLeft;
        }
Beispiel #30
0
        public PluginManager(Alex parent)
        {
            Parent       = parent;
            HostAssembly = Assembly.GetAssembly(typeof(PluginManager));

            AssemblyReferences = new ConcurrentDictionary <string, Assembly>();
            LoadedAssemblies   = new Dictionary <Assembly, LoadedAssembly>();
            References         = new ConcurrentDictionary <Type, object>();

            foreach (var referencedAssemblies in AppDomain.CurrentDomain.GetAssemblies())
            {
                if (!AssemblyReferences.ContainsKey(referencedAssemblies.GetName().Name))
                {
                    AssemblyReferences.TryAdd(referencedAssemblies.GetName().Name, referencedAssemblies);
                }
            }

            //AppDomain.CurrentDomain.AssemblyResolve += PluginManagerOnAssemblyResolve;
        }
        public void CheckDayOffset()
        {
            var cashAccount = new Account(Session)
            {
                Debit = 300, Type = AccountTypeEnum.Cash
            };

            Session.CommitChanges();
            Andrew.DepositAmount(30);
            Session.CommitChanges();
            VideoRentDateTime.AddDays(2);
            Alex.DepositAmount(30);
            Session.CommitChanges();
            VideoRentDateTime.AddDays(2);
            Andrew.DepositAmount(30);
            Session.CommitChanges();
            Assert.IsTrue((VideoRentDateTime.Now - Andrew.LastPayDate()).Days == 4);
            Assert.IsTrue((VideoRentDateTime.Now - Alex.LastPayDate()).Days == 2);
        }
 void GenerateTextPuzzle(Alex.Puzzle puzzle)
 {
     puzzleSequence = new int[puzzle.wordAaron.Length];
     // all lower, we aren't checking uppercase shift keys
     string keyedWord = puzzle.wordAaron.ToLower();
     for (int i = 0; i < puzzle.wordAaron.Length; i++) {
         puzzleSequence[i] = (int)keyedWord[i];
     }
     labelAlexWord = new FLabel("comfortaa32", puzzle.wordAlex);
     labelAlexWord.color = onColor;
     labelAlexWord.anchorX = 0f;
     labelAlexWord.y = 50f;
     puzzleUI.AddChild(labelAlexWord);
     labelAaronWord = new FLabel("comfortaa32", puzzle.wordAaron);
     labelAaronWord.color = Color.white;
     labelAaronWord.anchorX = 0f;
     puzzleUI.AddChild(labelAaronWord);
 }
 void GenerateArrowPuzzle(Alex.Puzzle puzzle)
 {
     // generate a new sequence of buttons to solve
     puzzleSequence = new int[puzzle.arrowLength];
     labelsOn = new FSprite[puzzle.arrowLength];
     labelsOff = new FSprite[puzzle.arrowLength];
     nextX = 0f;
     for (int i = 0; i < puzzle.arrowLength; i++) {
         puzzleSequence[i] = Random.Range(0, 4);
         labelsOn[i] = new FSprite(buttonNames[puzzleSequence[i]] + "-on");
         labelsOff[i] = new FSprite(buttonNames[puzzleSequence[i]] + "-off");
         labelsOn[i].x = nextX;
         labelsOff[i].x = nextX;
         // next button to the right
         nextX += labelsOn[i].width + 5f;
         puzzleUI.AddChild(labelsOff[i]);
     }
 }