--- hex-a-hop-0.0.20070315.orig/debian/hex-a-hop.desktop +++ hex-a-hop-0.0.20070315/debian/hex-a-hop.desktop @@ -0,0 +1,27 @@ +[Desktop Entry] +Type=Application +Name=Hex-a-hop +GenericName=Logic Game +GenericName[bg]=Логическа игра +GenericName[de]=Logikspiel +GenericName[es]=Juego de lógica +GenericName[ja]=論理ゲーム +GenericName[nl]=Logisch spel +GenericName[pl]=Gra logiczna +GenericName[ru]=Логическая игра +GenericName[ta]=தர்க்கபுதிர் விளையாட்டு +GenericName[vi]=Trò chơi Lôgic +Comment=Puzzle game based on hexagonal tiles +Comment[bg]=Игра-ребус с шестоъгълни плочки +Comment[de]=Puzzlespiel, basierend auf hexagonalen Platten +Comment[es]=Rompecabezas basado en baldosas hexagonales +Comment[ja]=六角形のタイルを用いたパズルゲーム +Comment[nl]=Puzzelspel gebaseerd op zeshoekige tegels +Comment[pl]=Gra-łamigłówka na planszy o sześciokątnych polach +Comment[ru]=Игра-головоломка с шестиугольными плитками +Comment[ta]=அறுகோண ஓடுகள் உள்ள புதிர் விளையாட்டு +Comment[vi]=Trờ chối đố dựa vào cái ngói hình sáu cạnh +Icon=hex-a-hop +Exec=hex-a-hop +Terminal=false +Categories=Game;KidsGame; --- hex-a-hop-0.0.20070315.orig/debian/hex-a-hop.xpm +++ hex-a-hop-0.0.20070315/debian/hex-a-hop.xpm @@ -0,0 +1,663 @@ +/* XPM */ +static char *dummy[]={ +"32 32 628 2", +"Qt c None", +".# c #000000", +".S c #000001", +".0 c #000100", +".w c #000101", +".m c #000200", +".A c #000201", +"g2 c #001909", +"#j c #001a10", +"gF c #003b29", +"hl c #004732", +".V c #010000", +".Z c #010100", +".p c #010102", +"#3 c #010201", +".L c #010202", +"hX c #010204", +"cN c #010301", +".e c #010402", +".a c #010604", +".f c #010704", +".1 c #010d07", +"gj c #013826", +"fz c #013a29", +"eA c #014a34", +".Y c #020300", +"#C c #020304", +"b5 c #020305", +"gW c #020400", +".z c #020405", +"gz c #020802", +"dB c #020d09", +"ep c #021811", +".5 c #021e14", +"he c #026e59", +".v c #030305", +".D c #030406", +"#b c #030507", +".I c #030508", +"hE c #030701", +".s c #030e0b", +".l c #03120f", +"d1 c #03140f", +".4 c #031f15", +".3 c #03251a", +"fX c #03402e", +"gE c #034531", +"dq c #03624b", +"#z c #04070b", +"ge c #040f0b", +"em c #04100f", +".2 c #042118", +".Q c #04231a", +"fW c #044936", +"g1 c #04533f", +"#8 c #04785e", +"eM c #050709", +"#2 c #05090d", +"gd c #050b12", +"eo c #050c0e", +".6 c #052419", +"eN c #052a21", +"b6 c #052c22", +"en c #053629", +"hH c #054c3a", +"fd c #05523e", +"dX c #05553f", +"dr c #055943", +"bj c #060404", +"ar c #060c10", +"co c #060c11", +"el c #061613", +"bH c #061c19", +"d# c #06211d", +"gV c #062626", +"f# c #063227", +"#k c #064c3a", +"#r c #06604b", +"hf c #06765e", +".P c #070b0c", +".G c #070e0b", +"aT c #070e11", +"#a c #071014", +"#0 c #071118", +".M c #071b14", +"#y c #072420", +"dA c #072e28", +"fw c #072f25", +"e. c #075742", +"es c #075b47", +"ds c #07614c", +"#s c #07624c", +"dO c #076d57", +"#A c #080e14", +"bi c #081418", +"cM c #08161a", +"## c #08171a", +"#. c #081e1c", +"fS c #081f18", +"#1 c #082f27", +"#B c #083429", +"aS c #08382b", +"eQ c #085f4b", +"fA c #08604b", +"d3 c #08604c", +"gi c #086550", +"aw c #086650", +"gk c #086752", +"cx c #087a63", +"dU c #088a73", +"aq c #092221", +".t c #09241c", +"d0 c #092522", +".7 c #094232", +".n c #094c3d", +"#x c #095746", +"d8 c #095b46", +"dE c #096a55", +"#t c #096f58", +"#q c #096f5a", +"di c #09725b", +"f0 c #09967d", +"ej c #099b82", +"hh c #0a2312", +".9 c #0a2923", +".d c #0a352f", +"fc c #0a6b56", +"#J c #0a826a", +"hM c #0a8a73", +"hD c #0b0f12", +"ap c #0b151c", +"bI c #0b2119", +".R c #0b2326", +".8 c #0b392b", +".c c #0b493b", +"cn c #0b4e3b", +".g c #0b5947", +".y c #0b5a48", +"eR c #0b735d", +"dx c #0b765f", +"#u c #0b7760", +"hk c #0b7862", +"#p c #0b7b65", +"cQ c #0b7d67", +"fv c #0c1631", +".q c #0c2c28", +"dc c #0c7660", +"#l c #0c7963", +"dp c #0c7f64", +"cr c #0c806a", +".C c #0d171b", +".o c #0d2726", +".x c #0d2a2a", +".b c #0d3c36", +"dP c #0d4d4f", +"dY c #0d6c56", +"#v c #0d7760", +"bm c #0d7a64", +"db c #0d7b65", +"dD c #0d7f68", +"cV c #0d826b", +"#o c #0d8770", +"e3 c #0e1436", +".J c #0e191e", +"#c c #0e1b20", +".F c #0e2726", +"b4 c #0e3d32", +"#Z c #0e6453", +"ek c #0e664e", +"#w c #0e705a", +"d2 c #0e806a", +"fe c #0e8971", +"fD c #0e8e77", +"dN c #0e9177", +"do c #0e9178", +".i c #0f2c2b", +".j c #0f4c40", +".k c #0f6752", +"cU c #0f856d", +"fY c #0f8871", +"et c #0f8972", +"b8 c #0f8b73", +"#m c #0f8c74", +"#n c #0f8f78", +"gh c #0f927b", +"eL c #102d49", +".u c #104c42", +"gD c #10846e", +"er c #108a73", +"fV c #108b73", +"dC c #108d75", +"d4 c #10917a", +"cd c #10937c", +"bK c #10967e", +"ea c #109b81", +".h c #11463c", +".r c #11735e", +"eq c #11917a", +"b7 c #11927a", +"eP c #11937b", +"bJ c #11967e", +"eS c #119780", +"fZ c #119980", +"hg c #121f23", +"gy c #12382d", +"c3 c #128d76", +"fb c #12967e", +"eO c #12977f", +"dd c #129881", +"fa c #129c83", +"fR c #13171b", +"gU c #13755f", +"da c #138771", +"fB c #139880", +"fy c #139981", +"eE c #141b38", +"aX c #14332a", +"#I c #144b40", +"bh c #14745f", +"eb c #147a6f", +"dt c #148570", +"e# c #148d76", +"dK c #149680", +"cR c #149981", +"fU c #149a82", +"ed c #151d62", +".U c #152221", +"hN c #158f79", +"#K c #15977f", +"b9 c #159882", +"cs c #159982", +"fo c #161c55", +"#d c #16322b", +".N c #163736", +"d9 c #16513d", +"g0 c #168671", +"c4 c #16937c", +"dZ c #16967d", +"cL c #175f4b", +"hL c #176c59", +"cP c #17816c", +"ho c #178e78", +"#L c #179b84", +"fn c #181c0f", +".E c #185348", +"c8 c #188e78", +"bL c #189781", +"fx c #189c85", +"fg c #198e79", +"cp c #1a5a4c", +"cq c #1a8b76", +"#M c #1a9a83", +"c1 c #1a9a84", +"fL c #1b2fa4", +"hF c #1b5f4e", +"#Y c #1b917a", +"cy c #1b937d", +"d5 c #1b9a84", +"bn c #1b9f88", +"dy c #1c8d78", +"#T c #1c9a84", +"ff c #1c9b85", +"fC c #1c9c86", +"eV c #1d927d", +"#P c #1d9c85", +"as c #1e050b", +".T c #1e3234", +"#S c #1e9882", +"c2 c #1e9883", +"#Q c #1e9a84", +"gg c #1e9d87", +"#D c #1f0c11", +"ez c #1f2417", +"g3 c #1f7361", +"dI c #1f8774", +"dh c #1f917c", +"ew c #1f9480", +"c0 c #1f9b85", +"f. c #202a68", +"gX c #205849", +"ao c #207e6b", +"cc c #209882", +"#R c #209884", +"#N c #209c86", +"#O c #209d88", +"hG c #218370", +"cw c #219883", +"dF c #219b86", +"ec c #23424c", +"dT c #23523d", +"d. c #238470", +"dW c #239783", +"dJ c #239985", +"dl c #239c86", +"#U c #239f8a", +".X c #25040c", +"cO c #257a69", +"hO c #25917e", +"de c #259c88", +"gC c #259e8a", +"#7 c #261417", +"aR c #267f6f", +"dj c #269984", +"aY c #269f8a", +"dV c #26a18c", +"dv c #279d8a", +"dL c #279e89", +"cJ c #279f8a", +".K c #284b41", +"eB c #287469", +"d7 c #289582", +"dn c #289e8a", +"du c #299f8c", +"#9 c #29a38d", +"c9 c #2a9d89", +"ce c #2a9d8a", +"bo c #2a9e8a", +"gm c #2b7765", +"eT c #2b9e8b", +"dz c #2ba08c", +"#X c #2ba18c", +"dQ c #2c4538", +"c7 c #2c9e8b", +"cX c #2c9f8b", +"c5 c #2c9f8d", +"dk c #2da08c", +"c. c #2e9e8b", +"fT c #2e9f8b", +"cW c #2e9f8c", +"#V c #2ea38f", +".W c #2f0914", +"ei c #2f725c", +"gG c #2f9b89", +"an c #2fa791", +"bM c #309f8c", +"cH c #30a08d", +"cE c #30a18d", +".O c #314b44", +"cC c #32a18f", +"hp c #32a28f", +"dM c #32a290", +".B c #33584d", +"gA c #338879", +"dw c #33a290", +"aU c #340513", +"aa c #34a08e", +"cF c #34a18f", +"#W c #34a491", +".H c #35564f", +"f1 c #355e48", +"cl c #35a290", +"am c #35a391", +"cK c #36a391", +"a. c #36a492", +"gf c #379a89", +"bS c #37a18f", +"eu c #37a291", +"hA c #387869", +"ab c #38a290", +"cT c #38a492", +"c# c #39a18f", +"ct c #39a290", +"ah c #39a391", +"cD c #39a493", +"cS c #3aa190", +"df c #3aa290", +"c6 c #3aa391", +"a# c #3aa491", +"#i c #3b0110", +"cm c #3ba291", +"ae c #3ba392", +"af c #3ba493", +"aQ c #3ba996", +"bN c #3ca291", +"dG c #3ca391", +"al c #3ca392", +"ac c #3ca492", +"ag c #3ca493", +"gl c #3caa98", +"ex c #3d4b36", +"bp c #3da391", +"aD c #3da392", +"ad c #3da492", +"cz c #3da494", +"aB c #3ea392", +"aP c #3fa492", +"ai c #3fa594", +"aE c #40a493", +"aC c #40a494", +"dg c #40a695", +"bO c #41a494", +"cG c #41a595", +"a2 c #42a493", +"a3 c #42a494", +"cf c #42a595", +"eU c #42a797", +"eX c #433426", +"ak c #43a695", +"ax c #43ad9b", +"dR c #443f2b", +"bq c #44a595", +"ev c #44a798", +"hq c #44a897", +"gB c #44aa99", +"a4 c #45a495", +"aA c #45a595", +"dH c #45a798", +"d6 c #45a898", +"br c #46a595", +"bR c #46a696", +"aj c #46a797", +"av c #470213", +"a0 c #47a696", +"hm c #485d51", +"eK c #487c71", +"hr c #489a8b", +"cj c #48a797", +"cI c #48a897", +"gZ c #48aa99", +"bT c #49a797", +"ca c #4ba798", +"aZ c #4ba99a", +"a1 c #4ca898", +"aF c #4ca899", +"#e c #4d1d2b", +"dS c #4d4631", +"ck c #4da999", +"fm c #4e5bb4", +"hn c #4e8072", +"bU c #4fa999", +"dm c #4fa99a", +"fE c #50533e", +"g6 c #50a595", +"cA c #50aa9a", +"bl c #53071c", +"hj c #53b0a0", +"a5 c #54aa9b", +"ay c #54ab9d", +"cu c #55ab9c", +"fK c #57639d", +"aG c #57ab9d", +"hP c #589689", +"cZ c #58ac9e", +"bk c #590019", +"aO c #59ac9e", +"cY c #59ad9e", +"gJ c #5a8075", +"bW c #5aac9e", +"gT c #5b6a54", +"bg c #5cb5a5", +"bV c #5dada0", +"hi c #5fa99f", +"cb c #5faea0", +"az c #5faea1", +"cg c #60aea2", +"ey c #61432f", +"gI c #61ada0", +"aH c #62aea1", +"ci c #62afa2", +"#H c #64102b", +"bX c #64afa3", +"g4 c #64b5a8", +"gn c #654c37", +"bP c #65b0a3", +"a6 c #66afa3", +"eW c #675f47", +"cv c #67b1a4", +"hI c #68837a", +"aI c #68b0a4", +"aJ c #69b1a4", +"ee c #6a6d87", +"hW c #6a6f6f", +"bs c #6ab0a4", +"gY c #6cb8ac", +"fh c #6d5e47", +"bZ c #6db2a6", +"g9 c #6f695c", +"bG c #6f9d91", +"bY c #6fb3a7", +"b3 c #70aca0", +"gH c #72b7ab", +"g5 c #75b6ab", +"b1 c #76b5a9", +"aN c #76b5aa", +"cB c #77b6ab", +"aK c #78b6ab", +"eY c #7b7f7b", +"bf c #7bb6ac", +"ch c #7bb7ac", +"bv c #7cb6ac", +"b2 c #7cb9ae", +"a7 c #7db7ac", +"b0 c #7db8ad", +"e4 c #7f89d0", +"gL c #80644c", +"bw c #80b8ae", +"h. c #826e5a", +"hB c #82a8a0", +"eZ c #838c83", +"eF c #848ecf", +"bx c #85bab0", +"aM c #85bab1", +"aW c #860024", +"e2 c #86887b", +"eh c #88634c", +"#h c #89012c", +"f7 c #8a80a4", +"fp c #8a97d7", +"hd c #8b958a", +"be c #8cbbb2", +"aL c #8cbdb4", +"go c #8d684e", +"gK c #8d7f72", +"bu c #8ebdb4", +"f2 c #90664d", +"bz c #90bcb4", +"fM c #91909d", +"#6 c #92002a", +"by c #92beb6", +"gc c #998268", +"bt c #99c0b8", +"a8 c #99c0b9", +"bQ c #9ac1b9", +"f8 c #9e8892", +"gx c #9e9175", +"g7 c #9ec0b9", +"ef c #a48e78", +"eg c #a67b5f", +"bE c #a7c4bd", +"a9 c #a7c4be", +"hv c #a9ada9", +"bA c #aac5bf", +"fi c #ac866b", +"fG c #ac8b73", +"b. c #acc6c0", +"#4 c #ad1347", +"hu c #adb3af", +"gS c #ae896d", +"h# c #ae8e74", +"b# c #afc7c1", +"fH c #b0a8a0", +"eC c #b0b9d3", +"fj c #b3b2ac", +"bB c #b3c8c3", +"fu c #b49a9d", +"hC c #b4bab5", +"ba c #b4cac5", +"hw c #b7b8b4", +"fJ c #b8c4e1", +"fF c #b98c70", +"bD c #b9cac5", +"bF c #b9ceca", +"bC c #bacbc6", +"bd c #bbcbc6", +"eD c #bcb8b4", +"au c #be003e", +"#G c #be0543", +"bb c #becdc8", +"g8 c #c1beba", +"e0 c #c1c2cd", +"bc c #c3ceca", +"f5 c #c5a38a", +"f6 c #c5b19f", +"#g c #c70b4c", +"hK c #c8d0ce", +"hT c #c9cbc9", +"e9 c #cba8ba", +"gM c #cea082", +"ha c #cea487", +"eJ c #cfaa8b", +"f3 c #d0a284", +"aV c #d40048", +"hb c #d5aa8d", +"hc c #d5b8a3", +"fl c #d5dded", +"e1 c #d8d8f5", +"hz c #d9dedc", +"hs c #d9e2e0", +"gp c #daab8d", +"fQ c #daac8a", +"hx c #dddedb", +"ga c #deb093", +"f4 c #dfaf8f", +"fP c #e1b395", +"fI c #e1e4e6", +"hQ c #e5e4e4", +"ht c #e7e8e8", +"#F c #e80d59", +"hS c #e8e8e8", +"fq c #e9c7a7", +"eI c #eab697", +"f9 c #eabb97", +"#5 c #eb0354", +"eH c #ecb897", +"fN c #ecbc99", +"#E c #ed2b6e", +"gR c #edb898", +"gv c #edbb9b", +"gu c #eebc9d", +"hJ c #efecec", +"hU c #efefef", +"hR c #f0f0f0", +"at c #f10053", +"gN c #f2be9e", +"fr c #f3bf9e", +"fs c #f3c0a0", +"e7 c #f3c1a1", +"e6 c #f4bf9d", +"g. c #f4c0a0", +"fO c #f5c2a1", +"g# c #f5c2a2", +"gP c #f6c2a2", +"gQ c #f6c3a2", +"gr c #f7c19f", +"gO c #f8c3a3", +"e5 c #f8d9bd", +"hV c #f9f9f9", +"#f c #fa3a7d", +"gw c #fac09f", +"gq c #fbc5a4", +"ft c #fbc6a1", +"gb c #fcc3a3", +"gt c #fdc7a0", +"hy c #fdfdfe", +"gs c #fec79e", +"e8 c #ffc69f", +"eG c #ffe4cb", +"fk c #ffffff", +"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.a.b.c.d.e.#QtQtQtQtQtQt", +"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.f.g.h.i.j.k.l.#QtQtQtQtQt", +"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.m.n.o.#.#.p.q.r.s.#QtQtQtQt", +"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.t.u.v.#Qt.#.w.x.y.z.#QtQtQt", +"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.A.B.C.#QtQtQt.#.D.E.F.#QtQtQt", +"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.G.H.I.#QtQtQtQt.#.J.K.L.#QtQt", +"QtQtQtQtQtQtQtQtQtQtQtQtQt.#Qt.#.#.M.N.#.#QtQtQtQt.#.I.O.P.#QtQt", +"QtQtQtQt.#.#.#.#.#Qt.#.#.#.#.#.#.#.Q.R.#.S.#.#.#QtQt.#.T.U.#QtQt", +"QtQtQt.#.V.W.X.Y.Z.#.0.1.2.3.4.5.6.7.8.9#.###a#b.#.#.##c#d.#.#Qt", +"QtQt.#.##e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z.##A#B#C.#Qt", +"QtQt.##D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#0.I#1#2.#Qt", +"Qt.##3#4#5#6#7#8#9a.a#aaabacadaeafagahabaiajakalamanaoapaqar.#Qt", +"Qt.#asatauavawaxayazaAaBaCaDaEaFaGaHaIaJaKaLaMaNaOaPaQaRaSaT.#Qt", +"Qt.#aUaVaWaXaYaZa0a1a2a3a4a5a6a7a8a9b.b#babbbcbdb#bebfbgbhbi.#Qt", +"Qt.#bjbkblbmbnboabbpbqbrbsbtbubfbvbwa7bxbybzbAbBbCbDbEbFbGbH.#Qt", +"QtQt.#.VbIbJbKbLbMbNbObPbQaKbRbSbTbUbVazbWbXbYaJbZb0b1b2b3b4b5.#", +"QtQtQt.#b6b7b8b9c.c#cabwcbcccdcecfcgchcicacfcaa5bRcjckclcmcnco.#", +"QtQt.#.0cpcqcrcsc.ctcucvcwcxcyczcAcBaOcCcDcEcFcGaecHcIcJcKcLcM.#", +"QtQt.#cNcOcPcQcRcecScacTcUcVcWcXcYcZc0c1c2c3c4c5c6c7akc8c9d.d#.#", +"QtQt.#.fdadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdA.#", +"QtQt.#dBdCdDdEbJdFdGdHdIdcdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0.#", +"QtQt.#d1b7d2d3d4d5ald6d7d8d9e.e#eaebecedeeefegeheiejekelemeneo.#", +"QtQt.#epeqeresetcseuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeM.#.w.#.#", +"QtQt.#eNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9f.b5.#.#.#Qt", +"QtQt.#f#fafbfcfdfeffcTfgfhfifjfkflfmfnfofpfqfrfsftfufv.#.#QtQtQt", +"QtQt.#fwfxfybmfzfAfBfCfDfEfFfGfHfIfJfKfLfMfNfOfPfsfQfR.#QtQtQtQt", +"QtQt.#fSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9g.g#gagbgcgd.#QtQtQtQt", +"QtQt.#gegfggghgigjgkc1glgmgngogpgqgrgsgtfsgugvgwgxgyb5.#QtQtQtQt", +"QtQt.#gzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgV.#QtQtQtQtQt", +"QtQt.#gWgXgYgZg0g1g2g3g4g5g6g7g8g9h.h#hahbhchdhehfhg.#QtQtQtQtQt", +"QtQtQt.#hhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChD.#QtQtQtQt", +"QtQtQt.#hEhFhGhHhIhJhKhLhMhNhOhPhQhRhRhRhRhRhShThUhVhWhX.#QtQtQt"}; --- hex-a-hop-0.0.20070315.orig/debian/install +++ hex-a-hop-0.0.20070315/debian/install @@ -0,0 +1,12 @@ +hex-a-hop usr/games +*.dat usr/share/games/hex-a-hop +graphics/emi.dat usr/share/games/hex-a-hop/graphics/ +graphics/gradient.dat usr/share/games/hex-a-hop/graphics/ +graphics/icon.bmp usr/share/games/hex-a-hop/graphics/ +graphics/map.dat usr/share/games/hex-a-hop/graphics/ +graphics/map_top.dat usr/share/games/hex-a-hop/graphics/ +graphics/tiles.dat usr/share/games/hex-a-hop/graphics/ +graphics/tiles_reflect.dat usr/share/games/hex-a-hop/graphics/ +graphics/title.dat usr/share/games/hex-a-hop/graphics/ +debian/*.xpm usr/share/pixmaps/ +debian/*.desktop usr/share/applications/ --- hex-a-hop-0.0.20070315.orig/debian/copyright +++ hex-a-hop-0.0.20070315/debian/copyright @@ -0,0 +1,43 @@ +This package was debianized by Miriam Ruiz on +Sun, 08 Jul 2007 15:47:23 +0000. + +It was downloaded from http://www.aceinternet.co.uk/~mokona/ + +Upstream Author: Tom Beaumont + +Copyright (C) 2005-2007 Tom Beaumont + +Makefile: Copyright Oliver Pearce 2004 + +hints.html: Released into the public domain, downloaded from + http://www.aceinternet.co.uk/~mokona/hex_hints.html + +License: + + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, version 2 of the GPL license can be found in +/usr/share/common-licenses/GPL-2. +The 3rd version of the GPL can be found in +/usr/share/common-licenses/GPL-3. + +Note that you can either choose one of the versions or any later version of +the GPL license. For your convenience, links to the currently released versions +of the license were listed above. + +The Debian packaging is + Copyright 2007, Miriam Ruiz , + Copyright 2007, Jens Seidel , and +is licensed under the GPL, see above. --- hex-a-hop-0.0.20070315.orig/debian/README.source +++ hex-a-hop-0.0.20070315/debian/README.source @@ -0,0 +1,58 @@ +This package uses quilt to manage all modifications to the upstream +source. Changes are stored in the source package as diffs in +debian/patches and applied during the build. + +To configure quilt to use debian/patches instead of patches, you want +either to export QUILT_PATCHES=debian/patches in your environment +or use this snippet in your ~/.quiltrc: + + for where in ./ ../ ../../ ../../../ ../../../../ ../../../../../; do + if [ -e ${where}debian/rules -a -d ${where}debian/patches ]; then + export QUILT_PATCHES=debian/patches + break + fi + done + +To get the fully patched source after unpacking the source package, cd to +the root level of the source package and run: + + quilt push -a + +The last patch listed in debian/patches/series will become the current +patch. + +To add a new set of changes, first run quilt push -a, and then run: + + quilt new + +where is a descriptive name for the patch, used as the filename in +debian/patches. Then, for every file that will be modified by this patch, +run: + + quilt add + +before editing those files. You must tell quilt with quilt add what files +will be part of the patch before making changes or quilt will not work +properly. After editing the files, run: + + quilt refresh + +to save the results as a patch. + +Alternately, if you already have an external patch and you just want to +add it to the build system, run quilt push -a and then: + + quilt import -P /path/to/patch + quilt push -a + +(add -p 0 to quilt import if needed). as above is the filename to +use in debian/patches. The last quilt push -a will apply the patch to +make sure it works properly. + +To remove an existing patch from the list of patches that will be applied, +run: + + quilt delete + +You may need to run quilt pop -a to unapply patches first before running +this command. --- hex-a-hop-0.0.20070315.orig/debian/hex-a-hop.6 +++ hex-a-hop-0.0.20070315/debian/hex-a-hop.6 @@ -0,0 +1,46 @@ +.\" (c) 2005-2007 Tom Beaumont +.\" (c) 2007 Miriam Ruiz +.\" (c) 2007 Helge Kreutzmann +.\" +.\" This document is free software; you can redistribute it and/or modify +.\" it under the terms of the GNU General Public License as published by +.\" the Free Software Foundation; either version 2 of the License, or +.\" (at your option) any later version. +.\" +.\" This package is distributed in the hope that it will be useful, +.\" but WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.\" You should have received a copy of the GNU General Public License +.\" along with this package; if not, write to the Free Software +.\" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +.TH "Hex\(hya\(hyhop" "6" "" "" "" +.SH "NAME" +hex\-a\-hop \- puzzle game based on hexagonal tiles +.SH "DESCRIPTION" +Hex\(hya\(hyhop is a puzzle game based on hexagonal tiles. There is no time limit and no real\(hytime element. + +The objective is simply to destroy all the green hexagonal tiles on each of the 100 levels. As you progress through the game, more types of tiles are introduced which make things more difficult and interesting. + +.SH "USAGE" +You can move the character around with the keys Q,W,E,A,S,D, or with the numeric keypad. Alternatively, you can use the mouse and click on the tile you'd like to move to. + +Use 'U', backspace or the right mouse button to undo mistakes. +The 'Esc' key (or middle mouse button) brings up a menu from which you can restart if you get stuck. + +Your goal is to break all the green tiles. You mainly do this by jumping on them. They will crack when you land on them, and only disintegrate when you jump off. Try not to trap yourself! + +During the game, you will be given hints and instructions on what to do. Use the cursor keys or click on the arrows to scroll through the help pages. More pages will be added as you progress through the game, as new tiles will keep appearing. + +You can choose which level to attempt next from the map screen. Silver levels are ones you've cleared. Black levels are ones you haven't completed yet, but are available to play. + +There is no time limit and no real\(hytime element, so take as long as you like. +.SH "SEE ALSO" +You can find more about the game on its homepage: http://www.aceinternet.co.uk/~mokona/ + +In Debian's version, game data is stored in the directory $HOME/.hex\-a\-hop/. If the environment variable $HOME is not set, it'll use /tmp/ instead. + +.SH "AUTHOR" +The game has been written by Tom Beaumont, and is distributed under the GNU General Public License, either version 2 of the License, or (at your option) any later version. + --- hex-a-hop-0.0.20070315.orig/debian/hints.html +++ hex-a-hop-0.0.20070315/debian/hints.html @@ -0,0 +1,1580 @@ + + + + +Hex-a-hop hints + + + +

+Hex-a-hop Hints +

+ + + +
+

I've attempted to structure the hints for each level in some kind of logical manner so it doesn't spoil anything more than you want it to. +

If you need help for a level not listed here, feel free to email me, and I'll try to make some hints for it. +

+ +

Hex-a-hop homepage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ Level name
(Alphabetical order)
+
+
+ A Strange Place +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + + + +
+ All About Preparation +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + + + + + + + + + +
+ Beware Feedback Loops +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + +
+ Branching Pathway +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + +
+ Breakthrough +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + + + + + + + +
+ Clearance +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + + + +
+ Commute +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + + + +
+ Death Trap +
+ +
Click here to view a hint +
+ + + + + + + + + +
+ Eagerness +
+ +
Click here to view a hint +
+ + + + + + + + + +
+ Ferrying +
+ +
Click here to view a hint +
+ + + + + + + + + +
+ Fetch Quest +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ Finishing Strike +
+ +
Click here to view a hint +
+ + + + + + + + + +
+ Forced Fire +
+ +
Click here to view a hint +
+ + + + + + + + + +
+ Green Honey +
+ +
Click here to view a hint +
+ + + + + + + + + + + +
+ Gun Platform +
+ +
Click here to view a hint +
+ + + + + + + + + + + +
+ Hunting +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + +
+ Icy Road +
+ +
Click here to view a hint +
+ + + + + +
+ Island +
+ +
Click here to view a hint +
+ + + + + + + +
+ Laser Surgery +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + + + + + +
+ Leftovers +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + + + + + +
+ Lifts +
+ +
Click here to view a hint +
+ + + + + + + + + +
+ Maze +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + + + +
+ Mini Island +
+ +
Click here to view a hint +
+ + + + + + + +
+ More Stripes +
+ +
Click here to view a hint +
+ + + + + + + + + +
+ No Swimming Allowed +
+ +
Click here to view a hint +
+ + + + + + + + + +
+ Nucleus +
+ +
Click here to view a hint +
+ + + + + + + + + +
+ One Two One Two +
+ +
Click here to view a hint +
+ + + + + + + + + +
+ Only One Way Up +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + + + +
+ Pro Skater +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + +
+ Radioactive Ice +
+ +
Click here to view a hint +
+ + + + + + + + + + + +
+ Refraction +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + + + + + +
+ Reversing Space +
+ +
Click here to view a hint +
+ + + + + + + + + + + +
+ Rental Boat +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + +
+ Revolver Cannon +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + + + + + +
+ Rolling Hexagons +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + + + +
+ Route Finder +
+ +
Click here to view a hint +
+ + + + + + + + + + + +
+ Somewhat Constructive +
+ +
Click here to view a hint +
+ + + + + + + + + +
+ Sprocket +
+ +
Click here to view a hint +
+ + + + + + + + + +
+ Stripes +
+ +
Click here to view a hint +
+ + + + + +
+ Switch +
+ +
Click here to view a hint +
+ + + + + +
+ Three More Ways +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + +
+ Trampoline Retrieval +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + + + +
+ Trampolines +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + +
+ Transport Hub +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + + + + + + + +
+ Trigger Happy +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + + + + + +
+ Turtle +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + +
+ Two Fish +
+ +
Click here to view a hint +
+ + + +
+ Wand +
+ +
Click here to view a hint +
+ + + + + + + + + + + +
+ Wave Cannon +
+ +
Click here to view a hint +
+ + + + + + + + + + + + + + + + +
+ +
+ +

Hex-a-hop homepage --- hex-a-hop-0.0.20070315.orig/debian/menu +++ hex-a-hop-0.0.20070315/debian/menu @@ -0,0 +1,3 @@ +?package(hex-a-hop):needs="X11" section="Games/Puzzles" \ + title="Hex-a-hop" command="/usr/games/hex-a-hop" \ + icon="/usr/share/pixmaps/hex-a-hop.xpm" --- hex-a-hop-0.0.20070315.orig/debian/changelog +++ hex-a-hop-0.0.20070315/debian/changelog @@ -0,0 +1,181 @@ +hex-a-hop (0.0.20070315-8) unstable; urgency=low + + [ Barry deFreese ] + * Add README.source for quilt. + * Bump Standards Version to 3.8.3. (No changes needed). + + -- Barry deFreese Sat, 12 Dec 2009 11:31:53 -0500 + +hex-a-hop (0.0.20070315-7) unstable; urgency=low + + [ Jens Seidel ] + * Added Japanese translation of desktop file. Thanks to Kobayashi + Noritada . Closes: #445491 + * Fixed a few typos in the Dutch translation. Thanks to Roland Clobus + . Closes: #456000, #456529 + * Drop XS- prefix from XS-Vcs-Svn and XS-Vcs-Browser fields in + debian/control. + * Fixed a crash which especially happened once lasers are involved. + Thanks Gerfried Fuchs for the report and Bas Wijnen + and Roland Clobus for + analysing. Closes: #443822 + + [ Ansgar Burchardt ] + * Remove Homepage semi-field from description + + [ Barry deFreese ] + * Add myself to uploaders. + * remove_confirmation.patch - Remove confirmation window on exit. + + Thanks to Bas Winjen. (Closes: #441528). + * Bump Standards Version to 3.8.1. (No changes needed). + + -- Barry deFreese Mon, 06 Apr 2009 14:33:29 -0400 + +hex-a-hop (0.0.20070315-6) unstable; urgency=low + + [Jens Seidel] + * Minor update of Polish translation. Thanks to Piotr Engelking + . + * Fixed another big endian error for "par" value. Closes: #442183 + * Added (partial) Japanese translation. Thanks to Kobayashi + Noritada . Closes: #443118 + * Added hints.html which gives tips how to solve some levels. + * Fix compilation error on the Hurd where PATH_MAX is not defined. + * A string was not translatable. Thanks to Piotr Engelking + for the patch. Closes: #443193 + * Added support for wheel mouse in help dialog. Thanks again + Piotr. Closes: #443194 + * Fixed a build error on m68k because of a wrong alignment test. + Closes: #442854 + * Allow right aligned text in the help dialog for some languages + such as Japanese. + + -- Jens Seidel Thu, 20 Sep 2007 00:30:00 +0200 + +hex-a-hop (0.0.20070315-5) unstable; urgency=low + + [Jens Seidel] + * Fixed a few errors in the code found with valgrind. + * Reduced the CPU load a little bit. Thanks to Joey Hess + for the patch. Closes: #440377 + There is more to do to get it properly fixed. + * Code is now big endian clean. Closes: #438857 + * Use an ordinary (ASCII) dash instead of a UTF-8 + encoded one in the Vietnamese translation which is + invalid in the generated man page. + * Moved Vietnamese and Bulgarian man page into + {bg,vi}.UTF-8/ which will be supported in man-db + version 2.5.0 in the near future. See: #440420 + * Added Tamil translation. Thanks to Tirumurti + Vasudevan . Closes: #441040 + * Added a lintian override for UTF-8 manpages. + * Minor typo and whitespace fixes in Polish translation. + * Changed priority from extra to optional as suggested by + Bas Wijnen . + * Explicitely refer to GPL-2 and GPL-3 in copyright. Added + myself too. + + -- Jens Seidel Mon, 10 Sep 2007 22:30:00 +0200 + +hex-a-hop (0.0.20070315-4) unstable; urgency=low + + [Jens Seidel] + * Added Vietnamese translation. Thanks to Clytie Siddall + . Closes: #438453 + * Added Russian translation. Thanks to Yuri Kozlov + . Closes: #438799 + * Added Dutch translation. Thanks to Bas Wijnen + . Closes: #438726 + * Added Bulgarian translation. Thanks to Damyan Ivanov + . Closes: #439047 + * Added Polish translation and applied a minor i18n fix. + Thanks to Piotr Engelking . + Closes: #439819 + * Use new font also for help dialog title. + * Font handling is now independent of language. The text + is now always wrapped if necessary. + * Most dialog sizes are now properly respected. + * Avoid segmentation fault on 64 bit systems on start by + using a workaround for #439071. Closes: #438800 + * Old font code removed. Compare: #438857 + * Use a workaround for bug #439855 of SDL Pango. + Closes: #439393 + * Increased a few short arrays containing translated + strings. Especially 40 bytes for optionSlotName are too + short for Russian and Bulgarian (in UTF-8 encoding). + This should be responsible for the bogus menu entries + in the screenshot to #438800. + * Create manpage translation from PO file using po4a. + Thanks to Helge Kreutzmann . + Closes: #438676. + * Build stops now on first error processing translations. + Thanks to Helge for the suggestion. + * Added some useful translator comments. Thanks again Helge. + * Fixed two lintian warnings (proper usage of hyphens in + manpage, removed "Encoding" line in desktop file). + * Fixed a superfluous space in a level name. Thanks to + Piotr Engelking . Closes: #439289. + * Use a bold font as suggested by Piotr Engelking + to increase readability. + Closes: #439290. + * Fixed an error in one of the applied patches and allow + displaying of end credits. Thanks to Piotr Engelking + . Closes: #439291. + * Added Homepage field to source control file. + + [Miriam Ruiz] + * Updated Spanish Translation. Thanks quique. + + -- Jens Seidel Wed, 29 Aug 2007 00:01:00 +0200 + +hex-a-hop (0.0.20070315-3) unstable; urgency=low + + [Miriam Ruiz] + * Do not unnecessarily initialize cdrom subsystem. Thanks to + Piotr Engelking . Closes: #436008 + * Added tools to convert files from/to bmp and dat formats. + + [Jens Seidel] + * Refined debian/i18n/Makefile to workaround an xgettext + limitation, to ship a POT file and to update PO files. + Closes: #437338 + * Added German translation. Thanks to Helge Kreutzmann + . Closes: #437438 + * Fixed some typos. Thanks to Helge Kreutzmann + . Closes: #437440, #437439 + * Fixed all compiler warnings and use e.g. -Wall -Wextra + default. Closes: #437313 + * Use the SDLPango library for font handling. This is a first + draft and behaves differently for English and translations. + Closes: #436469. + * debian/control: + + Added myself to the uploader list. + + -- Miriam Ruiz Wed, 8 Aug 2007 16:34:41 +0200 + +hex-a-hop (0.0.20070315-2) unstable; urgency=low + + [Miriam Ruiz] + * Fixed man page. Thanks to Helge Kreutzmann + Closes: #436038 + * Added support for i18n via gettext. Closes: #436040 + * Take word size and endianess into account when reading the size of + the .dat file. Closes: #434741 + + [ Sam Hocevar ] + * patch-hex-a-hop-better-than-par.diff: + + Display a different level tile when the user beat the par. + * debian/control: + + Added myself to the uploader list. + + [ Cyril Brulebois ] + * Added XS-Vcs-Svn and XS-Vcs-Browser fields in the control file. + + -- Miriam Ruiz Sun, 05 Aug 2007 10:10:28 +0000 + +hex-a-hop (0.0.20070315-1) unstable; urgency=low + + * Initial release (Closes: #431912) + + -- Miriam Ruiz Sun, 08 Jul 2007 15:47:23 +0000 + --- hex-a-hop-0.0.20070315.orig/debian/compat +++ hex-a-hop-0.0.20070315/debian/compat @@ -0,0 +1 @@ +5 --- hex-a-hop-0.0.20070315.orig/debian/lintian-override +++ hex-a-hop-0.0.20070315/debian/lintian-override @@ -0,0 +1,3 @@ +hex-a-hop: manpage-has-errors-from-man usr/share/man/bg.UTF-8/man6/hex-a-hop.6.gz 22: name expected (got a magic token) +hex-a-hop: manpage-has-errors-from-man usr/share/man/ta.UTF-8/man6/hex-a-hop.6.gz 22: name expected (got a magic token) +hex-a-hop: manpage-has-errors-from-man usr/share/man/vi.UTF-8/man6/hex-a-hop.6.gz 44: a magic token is not allowed in a name --- hex-a-hop-0.0.20070315.orig/debian/rules +++ hex-a-hop-0.0.20070315/debian/rules @@ -0,0 +1,81 @@ +#!/usr/bin/make -f + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +CFLAGS = -Wall -W -g -DUSE_GETTEXT + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif + +patch: + dh_testdir + QUILT_PATCHES=debian/patches quilt push -a || test $$? = 2 + +unpatch: + dh_testdir + QUILT_PATCHES=debian/patches quilt pop -a -f || test $$? = 2 + +configure: configure-stamp +configure-stamp: + dh_testdir + $(MAKE) -f /usr/share/quilt/quilt.make patch + touch $@ + +build: build-stamp +build-stamp: configure-stamp + dh_testdir + $(MAKE) CXXFLAGS="$(CFLAGS)" NAME="hex-a-hop" DATA_DIR="/usr/share/games/hex-a-hop" + $(MAKE) CXXFLAGS="$(CFLAGS)" NAME="hex-a-hop" DATA_DIR="/usr/share/games/hex-a-hop" -C debian/i18n + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + $(MAKE) -C debian/i18n clean + [ ! -f Makefile ] || $(MAKE) NAME="hex-a-hop" clean + $(MAKE) -f /usr/share/quilt/quilt.make unpatch + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + install -p -d -m 755 $(CURDIR)/debian/hex-a-hop/usr/share/lintian/overrides/ + install -m 644 debian/lintian-override $(CURDIR)/debian/hex-a-hop/usr/share/lintian/overrides/hex-a-hop + #$(MAKE) DESTDIR=$(CURDIR)/debian/hex-a-hop install + $(MAKE) -C debian/i18n install LOCALEDIR=$(CURDIR)/debian/hex-a-hop/usr/share/locale/ \ + MANDIR=$(CURDIR)/debian/hex-a-hop/usr/share/man/ + + +# Build architecture-independent files here. +binary-indep: build install + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs + dh_installdocs debian/hints.html + dh_installexamples + dh_install + dh_installmenu + # dh_installman is not yet able to install translations into .UTF-8/ + dh_installman debian/hex-a-hop.6 + dh_link + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure --- hex-a-hop-0.0.20070315.orig/debian/control +++ hex-a-hop-0.0.20070315/debian/control @@ -0,0 +1,22 @@ +Source: hex-a-hop +Section: games +Priority: optional +Maintainer: Debian Games Team +Uploaders: Miriam Ruiz , Jens Seidel , Sam Hocevar (Debian packages) , Barry deFreese +Build-Depends: debhelper (>= 5), quilt, gettext, libsdl1.2-dev, libsdl-pango-dev, po4a +Standards-Version: 3.8.3 +Homepage: http://www.aceinternet.co.uk/~mokona/ +Vcs-Svn: svn://svn.debian.org/svn/pkg-games/packages/trunk/hex-a-hop/ +Vcs-Browser: http://svn.debian.org/wsvn/pkg-games/packages/trunk/hex-a-hop/?op=log + +Package: hex-a-hop +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: puzzle game based on hexagonal tiles + Hex-a-hop is a great puzzle game in which a girl has to break all the green + tiles in an hexagonal map without getting trapped. There is no time limit and + no real-time element. + . + The objective is simply to destroy all the green hexagonal tiles on each of + the 100 levels. As you progress through the game, more types of tiles are + introduced which make things more difficult and interesting. --- hex-a-hop-0.0.20070315.orig/debian/hex-a-hop.es.add +++ hex-a-hop-0.0.20070315/debian/hex-a-hop.es.add @@ -0,0 +1,3 @@ +PO4A-HEADER:mode=after;position=AUTOR;beginboundary=\.SH +La pgina de manual fue traducida por Enrique Matas Snchez (Quique), +y se distribuye bajo la misma licencia que hex\-a\-hop. --- hex-a-hop-0.0.20070315.orig/debian/hex-a-hop.de.add +++ hex-a-hop-0.0.20070315/debian/hex-a-hop.de.add @@ -0,0 +1,3 @@ +PO4A-HEADER:mode=after;position=AUTOR;beginboundary=\.SH +Die Handbuchseite wurde von Helge Kreutzmann bersetzt und wird unter der +gleichen Lizenz wie hex\-a\-hop vertrieben. --- hex-a-hop-0.0.20070315.orig/debian/i18n/pl.po +++ hex-a-hop-0.0.20070315/debian/i18n/pl.po @@ -0,0 +1,1169 @@ +# Polish translation of hex-a-hop. +# +# Copyright (c) 2005-2007 Tom Beaumont +# Copyright (c) 2007 for the translation by Piotr Engelking +# +# This file is distributed under the same license as the hex-a-hop package. +# Piotr Engelking , 2007 +# +# Translators: A few hints: +# +# Support for translations is still experimental. You may find a few minor +# flaws. If you do not understand a message please ask to allow us adding +# helpful comments. +# +# The English help messages contain unusual spaces. " " is internally +# replaced by a newline, " " starts a new paragraph. You may ignore +# these spaces for now. You can also use "\n" (or " ") in translations to +# force a linebreak and "\n\n" (or " ") to start a new paragraph. It is +# suggested not to use fixed line breaks in paragraphs as this depends on +# font settings. You should also avoid " " or " " as this is unusual. +# +# The manpage is also created from this file. If you want to add an extra +# paragraph, e.g. describing your copyright for the translation or other +# language dependent information, create a file named hex-a-hop..add. +# The first line of this file must read: +# PO4A-HEADER:mode=after;position=AUTHOR;beginboundary=\.SH +# Please *only* replace the word "AUTHOR" by the translation of this word to +# your language. For more details read po4a(7). +# +# The manpage uses \\(hy. This is a hyphen sign (looks like -) and is used to +# connect two words such as "real-time". If you use "-" it will be wrongly +# rendered by po4a as minus sign (\- in output). See also +# http://lists.debian.org/debian-devel/2003/03/msg01481.html. If you read +# a message containing \\(hy consider it as usual hyphen. In your translation +# you should also replace all hyphens by \\(hy. Commands, file names, ... never +# contain hyphens but 7 bit minus signs! +# +# There is also a desktop file hex-a-hop.desktop containing two translatable +# strings. Please update it as well. +# +msgid "" +msgstr "" +"Project-Id-Version: hex-a-hop 0.0.20070315\n" +"Report-Msgid-Bugs-To: hex-a-hop@packages.debian.org\n" +"POT-Creation-Date: 2007-09-20 00:13+0200\n" +"PO-Revision-Date: 2007-09-19 17:42+0200\n" +"Last-Translator: Piotr Engelking \n" +"Language-Team: Polish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural= n==1 ? 0 : n%10>=2 && n%10<=4 && n/10%10!" +"=1 ? 1 : 2;\n" + +#: hex_puzzzle.cpp:1558 +#, c-format +msgid "Complete 1 more level to unlock!" +msgid_plural "Complete %d more levels to unlock!" +msgstr[0] "Przejdź jeszcze jedną planszę" +msgstr[1] "Przejdź jeszcze %d plansze" +msgstr[2] "Przejdź jeszcze %d plansz" + +#: hex_puzzzle.cpp:1565 +msgid "<>" +msgstr "<>" + +#. TRANSLATORS: Anti-Ice are pickups, which turn ice plates into solid +#. plates once you step on them. Each pickup changes one ice plate +#: hex_puzzzle.cpp:2655 +#, c-format +msgid "Anti-Ice: %d" +msgstr "Kolce: %d" + +#: hex_puzzzle.cpp:2656 +#, c-format +msgid "Jumps: %d" +msgstr "Dzwonki: %d" + +#: hex_puzzzle.cpp:2657 +#, c-format +msgid "Score: %d (%d)" +msgstr "Wynik: %d (%d)" + +#. TRANSLATORS: Par is similar to golf, a pre defined score which you +#. can attempt to beat +#: hex_puzzzle.cpp:2660 +#, c-format +msgid "Par: %d" +msgstr "Oczekiwany: %d" + +#: hex_puzzzle.cpp:2661 +#, c-format +msgid "Diff: %d" +msgstr "Różnica: %d" + +#: hex_puzzzle.cpp:2664 +#, c-format +msgid " Par: %d Current: %d" +msgstr " Oczekiwany: %d Wynik: %d" + +#: hex_puzzzle.cpp:2667 +#, c-format +msgid " Anti-Ice: %d" +msgstr " Kolce: %d" + +#: hex_puzzzle.cpp:2669 +#, c-format +msgid " Jumps: %d" +msgstr " Dzwonki: %d" + +#: hex_puzzzle.cpp:2675 +#, c-format +msgid "Points: %d" +msgstr "Punkty: %d" + +#: hex_puzzzle.cpp:2676 +#, c-format +msgid "Discovered: %d%% (%d/%d)" +msgstr "Odkryte: %d%% (%d/%d)" + +#: hex_puzzzle.cpp:2677 +#, c-format +msgid "Complete: %d%% (%d)" +msgstr "Ukończone: %d%% (%d)" + +#: hex_puzzzle.cpp:2678 +#, c-format +msgid "Mastered: %d%% (%d)" +msgstr "Biegłość: %d%% (%d)" + +#: hex_puzzzle.cpp:2681 +#, c-format +msgid " %d%% Mastered" +msgstr " %d%% biegłości" + +#: hex_puzzzle.cpp:2683 +#, c-format +msgid " %d%% Complete" +msgstr " %d%% ukończone" + +#: hex_puzzzle.cpp:2735 +#, c-format +msgid "Best:% 3d" +msgstr "Najlepszy:% 3d" + +#: hex_puzzzle.cpp:2736 +#, c-format +msgid "Par:% 3d" +msgstr "Oczekiwany:% 3d" + +#: hex_puzzzle.cpp:2739 +msgid "Completed" +msgstr "Ukończona" + +#: hex_puzzzle.cpp:2742 +msgid "Incomplete" +msgstr "Nie ukończona" + +#: hex_puzzzle.cpp:2783 menus.h:576 +msgid "Level Complete!" +msgstr "Przeszedłeś planszę!" + +#: hex_puzzzle.cpp:2899 +#, c-format +msgid "Special(%d,%d): %s (%d)" +msgstr "Specjalna(%d,%d): %s (%d)" + +#: hex_puzzzle.cpp:2899 +msgid "" +msgstr "" + +#: hex_puzzzle.cpp:3044 +msgid "Select level" +msgstr "Wybierz planszę" + +#: hex_puzzzle.cpp:4097 +msgid "Save level" +msgstr "Zapisz planszę" + +#: hex_puzzzle.cpp:4103 +msgid "Open level" +msgstr "Wczytaj planszę" + +#: menus.h:90 +msgid "" +"Basic controls:|Move around with the keys Q,W,E,A,S,D or the numeric " +"keypad. Alternatively, you can use the mouse and click on the tile you'd " +"like to move to. Use 'U', backspace or the right mouse button to undo " +"mistakes. The 'Esc' key (or middle mouse button) brings up a menu from " +"which you can restart if you get stuck." +msgstr "" +"Sterowanie:|Poruszasz się przy pomocy klawiszy Q, W, E, A, S, D, lub " +"klawiatury numerycznej. Możesz także używać myszy, klikając na pole na które " +"chcesz się poruszyć.\n" +"\n" +"Klawisz U, backspace, lub prawy klawisz myszy cofa ostatni ruch.\n" +"\n" +"Klawisz Esc lub środkowy przycisk myszy przenosi cię do menu. Jeśli się " +"zablokowałeś, możesz zacząć przechodzenie planszy jeszcze raz, od początku." + +#: menus.h:94 +msgid "" +"Objective:|Your goal is to break all the green tiles. You mainly do this " +"by jumping on them. They will crack when you land on them, and only " +"disintegrate when you jump off. Try not to trap yourself!" +msgstr "" +"Cel:|Twoim celem jest pozbycie się wszystkich zielonych pól.\n" +"\n" +"Możesz to zrobić wskakując na nie.\n" +"\n" +"Pole zostaje uszkodzone gdy na nie wskoczysz, a gdy z niego zeskoczysz, " +"rozpada się całkowicie.\n" +"\n" +"Uważaj by się nie zablokować!" + +#: menus.h:96 +msgid "" +"The coloured walls flatten themselves when there are no matching coloured " +"tiles remaining." +msgstr "" +"Kolorowe ściany zapadają się kiedy nie zostanie już żadne zwykłe pole tego " +"samego koloru." + +#: menus.h:98 +msgid "" +"You can bounce on the purple trampoline tiles to get around. But try not " +"to fall in the water. If you do, remember you can undo with 'U', " +"backspace or the right mouse button!" +msgstr "" +"Możesz przeskakiwać przez inne pola używając fioletowych trampolin.\n" +"\n" +"Uważaj by nie wpaść do wody!\n" +"\n" +"Gdyby tak się stało, pamiętaj że możesz cofnąć ostatni ruch klawiszem U, " +"backspace, lub prawym klawiszem myszy." + +#: menus.h:100 +msgid "" +"A red spinner tile will rotate the pieces around it when you step on it." +msgstr "" +"Czerwony wirnik obraca się wraz z sąsiednimi polami gdy na niego wskoczysz." + +#: menus.h:104 +msgid "" +"You don't need to destroy blue tiles to complete the level. But they'll " +"turn green when you step off them, and you know what you have to do to " +"green tiles..." +msgstr "" +"Nie musisz pozbywać się niebieskich pól by przejść planszę.\n" +"\n" +"Gdy zeskoczysz z takiego pola, zmienia ono jednak kolor na zielony. A wiesz " +"już co należy zrobić z zielonymi polami…" + +#: menus.h:108 +msgid "" +"Yellow laser tiles fire when you step on them. Shooting other laser tiles " +"is more destructive." +msgstr "" +"Żółte lasery strzelają gdy na nie wskoczysz.\n" +"\n" +"Strzał w inny laser ma wielką siłę niszczącą." + +#: menus.h:110 +msgid "Ice is slippery! Please be careful!!" +msgstr "" +"Lód jest bardzo śliski!\n" +"\n" +"Bądź ostrożny!" + +#: menus.h:114 +msgid "" +"The dark grey tiles with arrows on are builders. Landing on one creates " +"green tiles in any adjacent empty tile, and turns green tiles into walls." +msgstr "" +"Gdy wskoczysz na ciemnoszare pole ze strzałkami, sąsiednie puste pola " +"zmienią się w zielone, a sąsiednie zielone pola zmienią się w zielone ściany." + +#. TRANSLATORS: pop means vanish and Emy drowns (you loose) +#: menus.h:119 +msgid "" +"You can ride on the pink floating boats to get across water. They'll pop " +"if you try and float off the edge of the screen though, so look where " +"you're going." +msgstr "" +"Różowa tratwa zabierze cię na drugą stronę wielkiej wody.\n" +"\n" +"Uważaj jednak, tratwa rozpadnie się jeśli wypłyniesz poza krawędź planszy." + +#: menus.h:121 +msgid "The blue lifts go up or down when you land on them." +msgstr "Niebieska winda jeździ w górę i w dół gdy na nią wskoczysz." + +#: menus.h:127 +msgid "" +"The spiky anti-ice pickups turn icy tiles into blue ones. They get used " +"automatically when you land on ice." +msgstr "" +"Kolce, które możesz zbierać, zmieniają lodowe pola w niebieskie.\n" +"\n" +"Używasz ich automatycznie gdy wskoczysz na lód." + +#. TRANSLATORS: Normally you jump from one plate to another. The golden jump (a +#. pickup) allows you to jump and land on the *same* plate +#: menus.h:131 +msgid "" +"Collecting the golden jump pickups will allow you to do a big vertical " +"jump. Try it out on different types of tiles. Use the space bar or " +"return key to jump. Or click on the tile you're currently on with the mouse." +msgstr "" +"Złote dzwonki pozwalają ci skakać w miejscu.\n" +"\n" +"Wypróbuj ich działanie na różnych rodzajach pól.\n" +"\n" +"Używasz ich przy pomocy spacji lub klawisza Enter. Możesz także kliknąć na " +"pole na którym stoisz." + +#: menus.h:136 +msgid "" +"Map Screen:|You can choose which level to attempt next from the map " +"screen. Silver levels are ones you've cleared. Black levels are ones " +"you haven't completed yet, but are available to play." +msgstr "" +"Mapa:|Korzystając z mapy, wybierasz którą planszę chcesz spróbować przejść.\n" +"\n" +"Srebrne kulki oznaczają plansze które przeszedłeś, czarne zaś te których nie " +"udało ci się jeszcze przejść." + +#. TRANSLATORS: Levels are depicted as black balls. Once you passed them, they +#. turn silver. If you reached the par, they turn golden (with a crown), and if +#. you beat the par, they turn their shape/color once more +#: menus.h:142 +msgid "" +"New feature unlocked!|Each level has an efficiency target for you to try " +"and beat. Every move you make and each non-green tile you destroy counts " +"against you. Why not try replaying some levels and going for gold?" +msgstr "" +"Odkryłeś coś nowego!|Dla każdej planszy ustalono pewien oczekiwany poziom " +"biegłości który możesz próbować osiągnąć.\n" +"\n" +"Każdy wykonany ruch i każde zniszczone niezielone pole liczone są na twoją " +"niekorzyść.\n" +"\n" +"Spróbuj przejść niektóre plansze ponownie by zawalczyć o złoto!" + +#: menus.h:147 +msgid "" +"Thanks for playing this little game. I hope you enjoy it! -- -- " +"All content is Copyright 2005 Tom Beaumont email: tombeaumont@yahoo.com " +"Any constructive criticism gratefully received!" +msgstr "" +"Dziękuję za grę!\n" +"\n" +"Mam nadzieję, że dobrze się bawiłeś!\n" +"\n" +"-- --\n" +"\n" +"Copyright © 2005 Tom Beamount\n" +"\n" +"email: tombeaumont@yahoo.com\n" +"Any constructive criticism gratefully received!" + +#. TRANSLATORS: This string is copied twice into the POT file to workaround a +#. gettext limitation (no macro expansion). The extracted string "Welcome to " +#. will not be used. +#: menus.h:153 +msgid "Welcome to " +msgstr "Witaj w " + +#: menus.h:199 +msgid "Info:" +msgstr "Wskazówka:" + +#: menus.h:231 +msgid "Press any key" +msgstr "Naciśnij dowolny klawisz" + +#. TRANSLATORS: This specifies how the text in the help dialog should +#. be aligned. Do *not* translate the text itself but use one of "left", +#. "center" or "right" (untranslated!). The default is "center". +#: menus.h:253 +msgid "text alignment" +msgstr "" + +#: menus.h:339 +#, c-format +msgid "Help (Page --)" +msgstr "Pomoc (strona --)" + +#: menus.h:341 +#, c-format +msgid "Help (Page %d/%d)" +msgstr "Pomoc (strona %d/%d)" + +#: menus.h:428 +msgid "Resume" +msgstr "Powrót do gry" + +#: menus.h:429 +msgid "Restart Level" +msgstr "Od początku" + +#: menus.h:430 +msgid "Return to Map" +msgstr "Powrót do mapy" + +#: menus.h:431 +msgid "Continue" +msgstr "Dalej" + +#: menus.h:432 +msgid "Toggle Fullscreen" +msgstr "Przełącz tryb pełnoekranowy" + +#: menus.h:433 menus.h:1108 +msgid "Options" +msgstr "Opcje" + +#: menus.h:434 +msgid "Quit" +msgstr "Koniec gry" + +#: menus.h:435 +msgid "Yes" +msgstr "Tak" + +#: menus.h:436 +msgid "No" +msgstr "Nie" + +#: menus.h:437 +msgid "Return to Title" +msgstr "Powrót do ekranu powitalnego" + +#: menus.h:438 +msgid "Help" +msgstr "Pomoc" + +#: menus.h:439 +msgid "Start New Game" +msgstr "Nowa gra" + +#: menus.h:440 +msgid "Yes, really delete it!" +msgstr "Tak, skasuj grę" + +#: menus.h:441 +msgid "Don't do it!" +msgstr "Nie kasuj" + +#: menus.h:442 +msgid "Undo Last Move" +msgstr "Cofnij ostatni ruch" + +#: menus.h:443 +msgid "OK" +msgstr "OK" + +#: menus.h:444 +msgid "View Credits Sequence" +msgstr "Obejrzyj napisy końcowe" + +#: menus.h:576 +msgid "Emi can't swim..." +msgstr "Emilia nie umie pływać…" + +#: menus.h:615 +#, c-format +msgid "New Best Score: %d Par Score: %d Par Beaten!" +msgstr "Nowy najlepszy wynik: %d Oczekiwany wynik: %d Cel osiągnięty!" + +#: menus.h:617 +#, c-format +msgid "New Best Score: %d Par Score: %d" +msgstr "Nowy najlepszy wynik: %d Oczekiwany wynik: %d" + +#: menus.h:619 +#, c-format +msgid "Score: %d Previous Best: %d Par Score: %d" +msgstr "Twój wynik: %d Najlepszy wynik: %d Oczekiwany wynik: %d" + +#: menus.h:621 +msgid "Well Done! Level Completed!" +msgstr "Brawo! Przeszedłeś planszę!" + +#: menus.h:700 +msgid " Very Well Done! " +msgstr " Wielkie brawa! " + +#: menus.h:705 +msgid "All Levels Cleared!" +msgstr "Przeszedłeś wszystkie plansze!" + +#: menus.h:709 +msgid "Not a single green hexagon is left unbroken." +msgstr "Nie zostawiłeś za sobą ani jednego zielonego pola." + +#: menus.h:711 +msgid "Truly, you are a master of hexagon hopping!" +msgstr "Jesteś prawdziwym mistrzem skoków po sześciokątach!" + +#: menus.h:715 +msgid "Credits" +msgstr "-- --" + +#: menus.h:716 +msgid ", 2007. +# +# Translators: A few hints: +# +# Support for translations is still experimental. You may find a few minor +# flaws. If you do not understand a message please ask to allow us adding +# helpful comments. +# +# The English help messages contain unusual spaces. " " is internally +# replaced by a newline, " " starts a new paragraph. You may ignore +# these spaces for now. You can also use "\n" (or " ") in translations to +# force a linebreak and "\n\n" (or " ") to start a new paragraph. It is +# suggested not to use fixed line breaks in paragraphs as this depends on +# font settings. You should also avoid " " or " " as this is unusual. +# +# The manpage is also created from this file. If you want to add an extra +# paragraph, e.g. describing your copyright for the translation or other +# language dependent information, create a file named hex-a-hop..add. +# The first line of this file must read: +# PO4A-HEADER:mode=after;position=AUTHOR;beginboundary=\.SH +# Please *only* replace the word "AUTHOR" by the translation of this word to +# your language. For more details read po4a(7). +# +# The manpage uses \\(hy. This is a hyphen sign (looks like -) and is used to +# connect two words such as "real-time". If you use "-" it will be wrongly +# rendered by po4a as minus sign (\- in output). See also +# http://lists.debian.org/debian-devel/2003/03/msg01481.html. If you read +# a message containing \\(hy consider it as usual hyphen. In your translation +# you should also replace all hyphens by \\(hy. Commands, file names, ... never +# contain hyphens but 7 bit minus signs! +# +# There is also a desktop file hex-a-hop.desktop containing two translatable +# strings. Please update it as well. +msgid "" +msgstr "" +"Project-Id-Version: hex-a-hop\n" +"Report-Msgid-Bugs-To: hex-a-hop@packages.debian.org\n" +"POT-Creation-Date: 2007-09-20 00:13+0200\n" +"PO-Revision-Date: 2007-09-20 00:11+0200\n" +"Last-Translator: Noritada Kobayashi \n" +"Language-Team: Japanese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: hex_puzzzle.cpp:1558 +#, c-format +msgid "Complete 1 more level to unlock!" +msgid_plural "Complete %d more levels to unlock!" +msgstr[0] "" +"あと%d個のレベルを\n" +"クリアすると、\n" +"鍵が開きます!" + +#: hex_puzzzle.cpp:1565 +msgid "<>" +msgstr "" + +#. TRANSLATORS: Anti-Ice are pickups, which turn ice plates into solid +#. plates once you step on them. Each pickup changes one ice plate +#: hex_puzzzle.cpp:2655 +#, c-format +msgid "Anti-Ice: %d" +msgstr "防氷剤: %d" + +#: hex_puzzzle.cpp:2656 +#, c-format +msgid "Jumps: %d" +msgstr "ジャンプ剤: %d" + +#: hex_puzzzle.cpp:2657 +#, c-format +msgid "Score: %d (%d)" +msgstr "スコア: %d (%d)" + +#. TRANSLATORS: Par is similar to golf, a pre defined score which you +#. can attempt to beat +#: hex_puzzzle.cpp:2660 +#, c-format +msgid "Par: %d" +msgstr "標準スコア: %d" + +#: hex_puzzzle.cpp:2661 +#, c-format +msgid "Diff: %d" +msgstr "" + +# The head whitespace seems to be necessary for space between the window edge and text. +#: hex_puzzzle.cpp:2664 +#, c-format +msgid " Par: %d Current: %d" +msgstr " 標準: %d 現在: %d" + +#: hex_puzzzle.cpp:2667 +#, c-format +msgid " Anti-Ice: %d" +msgstr " 防氷剤: %d" + +#: hex_puzzzle.cpp:2669 +#, c-format +msgid " Jumps: %d" +msgstr " ジャンプ剤: %d" + +#: hex_puzzzle.cpp:2675 +#, c-format +msgid "Points: %d" +msgstr "" + +#: hex_puzzzle.cpp:2676 +#, c-format +msgid "Discovered: %d%% (%d/%d)" +msgstr "" + +#: hex_puzzzle.cpp:2677 +#, c-format +msgid "Complete: %d%% (%d)" +msgstr "クリア: %d%% (%d)" + +#: hex_puzzzle.cpp:2678 +#, c-format +msgid "Mastered: %d%% (%d)" +msgstr "マスター: %d%% (%d)" + +#: hex_puzzzle.cpp:2681 +#, c-format +msgid " %d%% Mastered" +msgstr " %d%% マスター" + +#: hex_puzzzle.cpp:2683 +#, c-format +msgid " %d%% Complete" +msgstr " %d%% クリア" + +#: hex_puzzzle.cpp:2735 +#, c-format +msgid "Best:% 3d" +msgstr "ベスト:% 3d" + +#: hex_puzzzle.cpp:2736 +#, c-format +msgid "Par:% 3d" +msgstr "標準:% 3d" + +#: hex_puzzzle.cpp:2739 +msgid "Completed" +msgstr "クリア済み" + +#: hex_puzzzle.cpp:2742 +msgid "Incomplete" +msgstr "未クリア" + +#: hex_puzzzle.cpp:2783 menus.h:576 +msgid "Level Complete!" +msgstr "レベルクリア!" + +#: hex_puzzzle.cpp:2899 +#, c-format +msgid "Special(%d,%d): %s (%d)" +msgstr "" + +#: hex_puzzzle.cpp:2899 +msgid "" +msgstr "" + +#: hex_puzzzle.cpp:3044 +msgid "Select level" +msgstr "" + +#: hex_puzzzle.cpp:4097 +msgid "Save level" +msgstr "" + +#: hex_puzzzle.cpp:4103 +msgid "Open level" +msgstr "" + +#: menus.h:90 +msgid "" +"Basic controls:|Move around with the keys Q,W,E,A,S,D or the numeric " +"keypad. Alternatively, you can use the mouse and click on the tile you'd " +"like to move to. Use 'U', backspace or the right mouse button to undo " +"mistakes. The 'Esc' key (or middle mouse button) brings up a menu from " +"which you can restart if you get stuck." +msgstr "" +"基本操作:|キーQ・W・E・A・S・D、またはテンキーを用いて移動してください。代わ" +"りに、移動したいタイルをマウスでクリックしても移動できます。\n" +"\n" +"間違いを取り消すには「U」やバックスペースキー、マウスの右ボタンを使用してくだ" +"さい。\n" +"\n" +"行き詰まった場合は、「Esc」キー (またはマウスの中ボタン) を使用すると、メ" +"ニューを立ち上げて最初からやりなおすことが可能です。" + +#: menus.h:94 +msgid "" +"Objective:|Your goal is to break all the green tiles. You mainly do this " +"by jumping on them. They will crack when you land on them, and only " +"disintegrate when you jump off. Try not to trap yourself!" +msgstr "" +"目標:|目標は、緑色のタイルをすべて壊すことです。\n" +"\n" +"大抵の場合、壊すために、緑色のタイルを踏むことになります。\n" +"\n" +"タイルに足を踏み入れるとひびが入り、さらに別のものへ跳び移るだけでバラバラに" +"なります。\n" +"\n" +"自分で自分を罠にはめないようにしてくださいね!" + +#: menus.h:96 +msgid "" +"The coloured walls flatten themselves when there are no matching coloured " +"tiles remaining." +msgstr "" +"色のついた高台は、同じ色のついたタイルがなくなったときにタイルになります。" + +#: menus.h:98 +msgid "" +"You can bounce on the purple trampoline tiles to get around. But try not " +"to fall in the water. If you do, remember you can undo with 'U', " +"backspace or the right mouse button!" +msgstr "" +"紫色のトランポリンタイルの上で飛び跳ねて、あちこちに移動できます。\n" +"\n" +"しかし、海には落ちないようにしてくださいね。\n" +"\n" +"水に落ちてしまった場合は、「U」・バックスペース・マウスの右ボタンで取り消せる" +"ということを思い出してください!" + +#: menus.h:100 +msgid "" +"A red spinner tile will rotate the pieces around it when you step on it." +msgstr "赤色の回転タイルを踏むと、その周りにあるものが回転します。" + +#: menus.h:104 +msgid "" +"You don't need to destroy blue tiles to complete the level. But they'll " +"turn green when you step off them, and you know what you have to do to " +"green tiles..." +msgstr "" +"レベルをクリアするのに青色のタイルを壊す必要はありません。\n" +"\n" +"しかし、青色のタイルから別のタイルに移ると緑色のタイルになります。\n" +"\n" +"緑色のタイルについては何をしなければならないか、もちろん分かりますよね……?" + +#: menus.h:108 +msgid "" +"Yellow laser tiles fire when you step on them. Shooting other laser tiles " +"is more destructive." +msgstr "" +"黄色のレーザータイルは、踏むと火を噴きます。\n" +"\n" +"他のレーザータイルを撃つとさらに破壊力が増します。" + +#: menus.h:110 +msgid "Ice is slippery! Please be careful!!" +msgstr "" +"氷は滑りやすいですよ!\n" +"\n" +"気をつけてくださいね!!" + +#: menus.h:114 +msgid "" +"The dark grey tiles with arrows on are builders. Landing on one creates " +"green tiles in any adjacent empty tile, and turns green tiles into walls." +msgstr "" +"矢印の書かれた濃い灰色のタイルはビルダです。\n" +"\n" +"ビルダの上に乗ると、その周りのタイルがない場所には緑色のタイルが作られ、緑色" +"のタイルは高台になります。" + +#. TRANSLATORS: pop means vanish and Emy drowns (you loose) +#: menus.h:119 +msgid "" +"You can ride on the pink floating boats to get across water. They'll pop " +"if you try and float off the edge of the screen though, so look where " +"you're going." +msgstr "" +"ピンク色のボートに乗って海を渡ることができます。\n" +"\n" +"しかし、ボートで画面の外側に行こうとすると爆発してしまいますので、行き先は確" +"認しましょう。" + +#: menus.h:121 +msgid "The blue lifts go up or down when you land on them." +msgstr "青色のリフトの上に乗ると、リフトは上下に動きます。" + +#: menus.h:127 +msgid "" +"The spiky anti-ice pickups turn icy tiles into blue ones. They get used " +"automatically when you land on ice." +msgstr "" +"尖った防氷剤を拾っておくと、氷のタイルが青いタイルになります。\n" +"\n" +"防氷剤は、氷に足を踏み入れた際に自動的に使われます。" + +#. TRANSLATORS: Normally you jump from one plate to another. The golden jump (a +#. pickup) allows you to jump and land on the *same* plate +#: menus.h:131 +msgid "" +"Collecting the golden jump pickups will allow you to do a big vertical " +"jump. Try it out on different types of tiles. Use the space bar or " +"return key to jump. Or click on the tile you're currently on with the mouse." +msgstr "" +"金色のジャンプ剤を拾って集めておくと、タイルから真上に向けて大きなジャンプを" +"できるようになります。\n" +"\n" +"様々な種類のタイルの上でジャンプしてみてください。\n" +"\n" +"ジャンプするには、スペースバーかリターンキーを押すか、または現在いるタイルを" +"マウスでクリックしてください。" + +#: menus.h:136 +msgid "" +"Map Screen:|You can choose which level to attempt next from the map " +"screen. Silver levels are ones you've cleared. Black levels are ones " +"you haven't completed yet, but are available to play." +msgstr "" +"マップ画面:|マップ画面では、次に挑戦するレベルを選択できます。\n" +"\n" +"銀色のレベルはクリア済みのレベルです。\n" +"\n" +"黒色のレベルは、まだクリアしていないもののプレイ可能なレベルです。" + +#. TRANSLATORS: Levels are depicted as black balls. Once you passed them, they +#. turn silver. If you reached the par, they turn golden (with a crown), and if +#. you beat the par, they turn their shape/color once more +#: menus.h:142 +msgid "" +"New feature unlocked!|Each level has an efficiency target for you to try " +"and beat. Every move you make and each non-green tile you destroy counts " +"against you. Why not try replaying some levels and going for gold?" +msgstr "" +"新機能が開放!|各レベルにはクリア効率の基準が定められており、その基準の達成に" +"挑戦できるようになっています。\n" +"\n" +"移動したり、緑色以外のタイルを壊したりすると、そのたびに不利になってしまいま" +"す。\n" +"\n" +"レベルを金色にしに、いくつかのレベルをもう一度プレイしてみてはいかがでしょう?" + +#: menus.h:147 +msgid "" +"Thanks for playing this little game. I hope you enjoy it! -- -- " +"All content is Copyright 2005 Tom Beaumont email: tombeaumont@yahoo.com " +"Any constructive criticism gratefully received!" +msgstr "" +"この小さなゲームで遊んでくれてありがとう。\n" +"\n" +"お楽しみください!\n" +"\n" +"-- --\n" +"\n" +"All content is Copyright 2005 Tom Beaumont\n" +"\n" +"email: tombeaumont@yahoo.com\n" +"建設的な批判はどんなものでも潔く受け止めます!" + +#. TRANSLATORS: This string is copied twice into the POT file to workaround a +#. gettext limitation (no macro expansion). The extracted string "Welcome to " +#. will not be used. +#: menus.h:153 +msgid "Welcome to " +msgstr "" + +#: menus.h:199 +msgid "Info:" +msgstr "" + +#: menus.h:231 +msgid "Press any key" +msgstr "いずれかのキーを押してください" + +#. TRANSLATORS: This specifies how the text in the help dialog should +#. be aligned. Do *not* translate the text itself but use one of "left", +#. "center" or "right" (untranslated!). The default is "center". +#: menus.h:253 +msgid "text alignment" +msgstr "right" + +#: menus.h:339 +#, c-format +msgid "Help (Page --)" +msgstr "ヘルプ (--ページ)" + +#: menus.h:341 +#, c-format +msgid "Help (Page %d/%d)" +msgstr "ヘルプ (%d/%dページ)" + +#: menus.h:428 +msgid "Resume" +msgstr "再開" + +#: menus.h:429 +msgid "Restart Level" +msgstr "このレベルをやりなおす" + +#: menus.h:430 +msgid "Return to Map" +msgstr "マップに戻る" + +#: menus.h:431 +msgid "Continue" +msgstr "続ける" + +#: menus.h:432 +msgid "Toggle Fullscreen" +msgstr "フルスクリーンモード" + +#: menus.h:433 menus.h:1108 +msgid "Options" +msgstr "オプション" + +#: menus.h:434 +msgid "Quit" +msgstr "終了" + +#: menus.h:435 +msgid "Yes" +msgstr "はい" + +#: menus.h:436 +msgid "No" +msgstr "いいえ" + +#: menus.h:437 +msgid "Return to Title" +msgstr "タイトルに戻る" + +#: menus.h:438 +msgid "Help" +msgstr "ヘルプ" + +#: menus.h:439 +msgid "Start New Game" +msgstr "新たにゲームを開始" + +#: menus.h:440 +msgid "Yes, really delete it!" +msgstr "はい、本当に削除してください!" + +#: menus.h:441 +msgid "Don't do it!" +msgstr "" + +#: menus.h:442 +msgid "Undo Last Move" +msgstr "最後の移動を取り消す" + +#: menus.h:443 +msgid "OK" +msgstr "OK" + +#: menus.h:444 +msgid "View Credits Sequence" +msgstr "" + +#: menus.h:576 +msgid "Emi can't swim..." +msgstr "Emiは泳げないのです……" + +#: menus.h:615 +#, c-format +msgid "New Best Score: %d Par Score: %d Par Beaten!" +msgstr "新しいベストスコア: %d 標準スコア: %d 標準スコアを達成しました!" + +#: menus.h:617 +#, c-format +msgid "New Best Score: %d Par Score: %d" +msgstr "新しいベストスコア: %d 標準スコア: %d" + +#: menus.h:619 +#, c-format +msgid "Score: %d Previous Best: %d Par Score: %d" +msgstr "スコア: %d 以前のベストスコア: %d 標準スコア: %d" + +#: menus.h:621 +msgid "Well Done! Level Completed!" +msgstr "よくできました! このレベルをクリアしました!" + +#: menus.h:700 +msgid " Very Well Done! " +msgstr " 大変よくできました! " + +#: menus.h:705 +msgid "All Levels Cleared!" +msgstr "すべてのレベルをクリアしました!" + +#: menus.h:709 +msgid "Not a single green hexagon is left unbroken." +msgstr "壊されずに残った緑色の六角形は1枚もありません。" + +#: menus.h:711 +msgid "Truly, you are a master of hexagon hopping!" +msgstr "" + +#: menus.h:715 +msgid "Credits" +msgstr "クレジット" + +#: menus.h:716 +msgid ", 2007. +# +# Translators: A few hints: +# +# Support for translations is still experimental. You may find a few minor +# flaws. If you do not understand a message please ask to allow us adding +# helpful comments. +# +# The English help messages contain unusual spaces. " " is internally +# replaced by a newline, " " starts a new paragraph. You may ignore +# these spaces for now. You can also use "\n" (or " ") in translations to +# force a linebreak and "\n\n" (or " ") to start a new paragraph. It is +# suggested not to use fixed line breaks in paragraphs as this depends on +# font settings. You should also avoid " " or " " as this is unusual. +# +# The manpage is also created from this file. If you want to add an extra +# paragraph, e.g. describing your copyright for the translation or other +# language dependent information, create a file named hex-a-hop..add. +# The first line of this file must read: +# PO4A-HEADER:mode=after;position=AUTHOR;beginboundary=\.SH +# Please *only* replace the word "AUTHOR" by the translation of this word to +# your language. For more details read po4a(7). +# +# There is also a desktop file hex-a-hop.desktop containing two translatable +# strings. Please update it as well. +msgid "" +msgstr "" +"Project-Id-Version: hex-a-hop\n" +"Report-Msgid-Bugs-To: hex-a-hop@packages.debian.org\n" +"POT-Creation-Date: 2007-09-20 00:13+0200\n" +"PO-Revision-Date: 2007-08-23 20:08+0100\n" +"Last-Translator: Bas Wijnen \n" +"Language-Team: Dutch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: hex_puzzzle.cpp:1558 +#, c-format +msgid "Complete 1 more level to unlock!" +msgid_plural "Complete %d more levels to unlock!" +msgstr[0] "Los nog 1 puzzel op om te ontgrendelen" +msgstr[1] "Los nog %d puzzels op om te ontgrendelen" + +#: hex_puzzzle.cpp:1565 +msgid "<>" +msgstr "<>" + +#. TRANSLATORS: Anti-Ice are pickups, which turn ice plates into solid +#. plates once you step on them. Each pickup changes one ice plate +#: hex_puzzzle.cpp:2655 +#, c-format +msgid "Anti-Ice: %d" +msgstr "Anti-ijs: %d" + +#: hex_puzzzle.cpp:2656 +#, c-format +msgid "Jumps: %d" +msgstr "Sprongen: %d" + +#: hex_puzzzle.cpp:2657 +#, c-format +msgid "Score: %d (%d)" +msgstr "Score: %d (%d)" + +#. TRANSLATORS: Par is similar to golf, a pre defined score which you +#. can attempt to beat +#: hex_puzzzle.cpp:2660 +#, c-format +msgid "Par: %d" +msgstr "Doel: %d" + +#: hex_puzzzle.cpp:2661 +#, c-format +msgid "Diff: %d" +msgstr "Verschil: %d" + +#: hex_puzzzle.cpp:2664 +#, c-format +msgid " Par: %d Current: %d" +msgstr "Doel: %d Huidig: %d" + +#: hex_puzzzle.cpp:2667 +#, c-format +msgid " Anti-Ice: %d" +msgstr "Anti-ijs: %d" + +#: hex_puzzzle.cpp:2669 +#, c-format +msgid " Jumps: %d" +msgstr "Sprongen: %d" + +#: hex_puzzzle.cpp:2675 +#, c-format +msgid "Points: %d" +msgstr "Punten: %d" + +#: hex_puzzzle.cpp:2676 +#, c-format +msgid "Discovered: %d%% (%d/%d)" +msgstr "Ontdekt: %d%% (%d van %d)" + +#: hex_puzzzle.cpp:2677 +#, c-format +msgid "Complete: %d%% (%d)" +msgstr "Opgelost: %d%% (%d)" + +#: hex_puzzzle.cpp:2678 +#, c-format +msgid "Mastered: %d%% (%d)" +msgstr "Voltooid: %d%% (%d)" + +#: hex_puzzzle.cpp:2681 +#, c-format +msgid " %d%% Mastered" +msgstr "%d%% voltooid" + +#: hex_puzzzle.cpp:2683 +#, c-format +msgid " %d%% Complete" +msgstr "%d%% opgelost" + +#: hex_puzzzle.cpp:2735 +#, c-format +msgid "Best:% 3d" +msgstr "Beste:% 3d" + +#: hex_puzzzle.cpp:2736 +#, c-format +msgid "Par:% 3d" +msgstr "Doel:% 3d" + +#: hex_puzzzle.cpp:2739 +msgid "Completed" +msgstr "Opgelost" + +#: hex_puzzzle.cpp:2742 +msgid "Incomplete" +msgstr "Niet opgelost" + +#: hex_puzzzle.cpp:2783 menus.h:576 +msgid "Level Complete!" +msgstr "Puzzel opgelost!" + +#: hex_puzzzle.cpp:2899 +#, c-format +msgid "Special(%d,%d): %s (%d)" +msgstr "Optie(%d,%d): %s (%d)" + +#: hex_puzzzle.cpp:2899 +msgid "" +msgstr "" + +#: hex_puzzzle.cpp:3044 +msgid "Select level" +msgstr "Kies puzzel" + +#: hex_puzzzle.cpp:4097 +msgid "Save level" +msgstr "Bewaar puzzel" + +#: hex_puzzzle.cpp:4103 +msgid "Open level" +msgstr "Open puzzel" + +#: menus.h:90 +msgid "" +"Basic controls:|Move around with the keys Q,W,E,A,S,D or the numeric " +"keypad. Alternatively, you can use the mouse and click on the tile you'd " +"like to move to. Use 'U', backspace or the right mouse button to undo " +"mistakes. The 'Esc' key (or middle mouse button) brings up a menu from " +"which you can restart if you get stuck." +msgstr "" +"Besturing:|Spring naar aanliggende tegels met 'Q', 'W', 'E', 'A', 'S', 'D', " +"of het numerieke toetsenbord. Of klik met de muis op de tegel waar je heen " +"wilt springen.\n" +"\n" +"Gebruik 'U', backspace, of de rechter muisknop om een sprong ongedaan te " +"maken.\n" +"\n" +"De 'Esc' toets en de middelste muisknop geven een menu vanuit waar je kunt " +"herstarten als je vastzit." + +#: menus.h:94 +msgid "" +"Objective:|Your goal is to break all the green tiles. You mainly do this " +"by jumping on them. They will crack when you land on them, and only " +"disintegrate when you jump off. Try not to trap yourself!" +msgstr "" +"Opdracht:|Het doel is om alle groene tegels kapot te maken.\n" +"\n" +"Meestal doe je dat door erop te springen.\n" +"\n" +"Ze breken als je erop landt, en gaan helemaal kapot als je eraf springt.\n" +"\n" +"Pas op dat je jezelf niet insluit!" + +#: menus.h:96 +msgid "" +"The coloured walls flatten themselves when there are no matching coloured " +"tiles remaining." +msgstr "" +"De gekleurde muren zakken in als er geen tegels van dezelfde kleur meer zijn." + +#: menus.h:98 +msgid "" +"You can bounce on the purple trampoline tiles to get around. But try not " +"to fall in the water. If you do, remember you can undo with 'U', " +"backspace or the right mouse button!" +msgstr "" +"De paarse tegels zijn trampolines.\n" +"\n" +"Pas op dat je niet in het water valt.\n" +"\n" +"Doe je dat toch, bedenk dan dat je 'U', backspace, en de rechter muisknop " +"kunt gebruiken om je beweging ongedaan te maken." + +#: menus.h:100 +msgid "" +"A red spinner tile will rotate the pieces around it when you step on it." +msgstr "Als je op een rode tegel gaat staan, draaien de tegels er omheen." + +#: menus.h:104 +msgid "" +"You don't need to destroy blue tiles to complete the level. But they'll " +"turn green when you step off them, and you know what you have to do to " +"green tiles..." +msgstr "" +"De blauwe tegels hoeven niet kapot.\n" +"\n" +"Maar als je eraf springt worden ze groen. En je weet wat je moet doen met " +"groene tegels..." + +#: menus.h:108 +msgid "" +"Yellow laser tiles fire when you step on them. Shooting other laser tiles " +"is more destructive." +msgstr "" +"De gele lasertegels schieten als je erop springt.\n" +"\n" +"Andere lasers beschieten geeft een grote explosie." + +#: menus.h:110 +msgid "Ice is slippery! Please be careful!!" +msgstr "" +"Pas op!\n" +"\n" +"Glad ijs!" + +#: menus.h:114 +msgid "" +"The dark grey tiles with arrows on are builders. Landing on one creates " +"green tiles in any adjacent empty tile, and turns green tiles into walls." +msgstr "" +"De donkergrijze tegels zijn bouwers.\n" +"\n" +"Als je erop landt, maken ze groene tegels om zich heen op lege plaatsen, en " +"maken ze muren van groene tegels." + +#. TRANSLATORS: pop means vanish and Emy drowns (you loose) +#: menus.h:119 +msgid "" +"You can ride on the pink floating boats to get across water. They'll pop " +"if you try and float off the edge of the screen though, so look where " +"you're going." +msgstr "" +"Je kunt de roze boten gebruiken om over water te varen.\n" +"\n" +"Pas wel op, want ze gaan kapot als ze de rand van het scherm raken." + +#: menus.h:121 +msgid "The blue lifts go up or down when you land on them." +msgstr "De blauwe liften gaan omhoog of omlaag als je erop landt." + +#: menus.h:127 +msgid "" +"The spiky anti-ice pickups turn icy tiles into blue ones. They get used " +"automatically when you land on ice." +msgstr "" +"De spijkerballen zijn anti-ijs. Ze maken ijstegels blauw.\n" +"\n" +"Je gebruikt ze automatisch als je op ijs landt." + +#. TRANSLATORS: Normally you jump from one plate to another. The golden jump (a +#. pickup) allows you to jump and land on the *same* plate +#: menus.h:131 +msgid "" +"Collecting the golden jump pickups will allow you to do a big vertical " +"jump. Try it out on different types of tiles. Use the space bar or " +"return key to jump. Or click on the tile you're currently on with the mouse." +msgstr "" +"De gouden kegels geven je een vertikale sprong.\n" +"\n" +"Probeer het maar eens uit op verschillende soorten tegels.\n" +"\n" +"Gebruik de spatiebalk of returntoets om te springen. Of klik met de muis op " +"de tegel waar je op staat." + +#: menus.h:136 +msgid "" +"Map Screen:|You can choose which level to attempt next from the map " +"screen. Silver levels are ones you've cleared. Black levels are ones " +"you haven't completed yet, but are available to play." +msgstr "" +"Op de kaart kan je uitzoeken welke puzzel je wilt gaan doen.\n" +"\n" +"Zilveren bolletjes zijn opgeloste puzzels; zwarte zijn niet opgelost, maar " +"wel te spelen." + +#. TRANSLATORS: Levels are depicted as black balls. Once you passed them, they +#. turn silver. If you reached the par, they turn golden (with a crown), and if +#. you beat the par, they turn their shape/color once more +#: menus.h:142 +msgid "" +"New feature unlocked!|Each level has an efficiency target for you to try " +"and beat. Every move you make and each non-green tile you destroy counts " +"against you. Why not try replaying some levels and going for gold?" +msgstr "" +"Een nieuwe uitdaging!|Elke puzzel heeft een efficiëntiedoel wat je kan " +"proberen te halen.\n" +"\n" +"Elke sprong en elke kapotte niet-groene tegel geeft strafpunten.\n" +"\n" +"Probeer nog eens wat oude puzzels en ga voor goud!" + +#: menus.h:147 +msgid "" +"Thanks for playing this little game. I hope you enjoy it! -- -- " +"All content is Copyright 2005 Tom Beaumont email: tombeaumont@yahoo.com " +"Any constructive criticism gratefully received!" +msgstr "" +"Bedankt voor het spelen. Ik hoop dat je het leuk vond.\n" +"\n" +"Auteursrecht 2005 Tom Beaumont (e-mail: tombeaumont@yahoo.com)\n" +"Auteursrecht Nederlandse vertaling 2007 Bas Wijnen (e-mail: wijnen@debian." +"org)\n" +"Opbouwende kritiek is welkom!" + +#. TRANSLATORS: This string is copied twice into the POT file to workaround a +#. gettext limitation (no macro expansion). The extracted string "Welcome to " +#. will not be used. +#: menus.h:153 +msgid "Welcome to " +msgstr "Welcome to " + +#: menus.h:199 +msgid "Info:" +msgstr "" + +#: menus.h:231 +msgid "Press any key" +msgstr "Druk op een toets" + +#. TRANSLATORS: This specifies how the text in the help dialog should +#. be aligned. Do *not* translate the text itself but use one of "left", +#. "center" or "right" (untranslated!). The default is "center". +#: menus.h:253 +msgid "text alignment" +msgstr "" + +#: menus.h:339 +#, c-format +msgid "Help (Page --)" +msgstr "Uitleg (Pagina - van -)" + +#: menus.h:341 +#, c-format +msgid "Help (Page %d/%d)" +msgstr "Uitleg (Pagina %d van %d)" + +#: menus.h:428 +msgid "Resume" +msgstr "Doorgaan" + +#: menus.h:429 +msgid "Restart Level" +msgstr "Herstart puzzel" + +#: menus.h:430 +msgid "Return to Map" +msgstr "Terug naar de kaart" + +#: menus.h:431 +msgid "Continue" +msgstr "Verder gaan" + +#: menus.h:432 +msgid "Toggle Fullscreen" +msgstr "Volledig scherm aan of uit" + +#: menus.h:433 menus.h:1108 +msgid "Options" +msgstr "Instellingen" + +#: menus.h:434 +msgid "Quit" +msgstr "Afsluiten" + +#: menus.h:435 +msgid "Yes" +msgstr "Ja" + +#: menus.h:436 +msgid "No" +msgstr "Nee" + +#: menus.h:437 +msgid "Return to Title" +msgstr "Terug naar het titelscherm" + +#: menus.h:438 +msgid "Help" +msgstr "Uitleg" + +#: menus.h:439 +msgid "Start New Game" +msgstr "Begin een nieuw spel" + +#: menus.h:440 +msgid "Yes, really delete it!" +msgstr "Ja, echt verwijderen!" + +#: menus.h:441 +msgid "Don't do it!" +msgstr "Nee, niet doen!" + +#: menus.h:442 +msgid "Undo Last Move" +msgstr "Laatste beweging ongedaan maken" + +#: menus.h:443 +msgid "OK" +msgstr "Ok" + +#: menus.h:444 +msgid "View Credits Sequence" +msgstr "Toon makers" + +#: menus.h:576 +msgid "Emi can't swim..." +msgstr "Emi kan niet zwemmen..." + +#: menus.h:615 +#, c-format +msgid "New Best Score: %d Par Score: %d Par Beaten!" +msgstr "" +"Beste score verbeterd: %d\n" +"Doelscore: %d\n" +"Doel gehaald!" + +#: menus.h:617 +#, c-format +msgid "New Best Score: %d Par Score: %d" +msgstr "" +"Beste score verbeterd: %d\n" +"Doelscore: %d" + +#: menus.h:619 +#, c-format +msgid "Score: %d Previous Best: %d Par Score: %d" +msgstr "" +"Score: %d\n" +"Beste tot nu toe: %d\n" +"Doelscore: %d" + +#: menus.h:621 +msgid "Well Done! Level Completed!" +msgstr "" +"Goed zo!\n" +"Puzzel opgelost!" + +#: menus.h:700 +msgid " Very Well Done! " +msgstr "Heel goed gedaan!" + +#: menus.h:705 +msgid "All Levels Cleared!" +msgstr "Je hebt alle puzzels opgelost!" + +#: menus.h:709 +msgid "Not a single green hexagon is left unbroken." +msgstr "Alle groene tegels zijn kapot." + +#: menus.h:711 +msgid "Truly, you are a master of hexagon hopping!" +msgstr "Jij bent echt een meester van het zeshoekspringen!" + +#: menus.h:715 +msgid "Credits" +msgstr "Makers" + +#: menus.h:716 +msgid ".add. +# The first line of this file must read: +# PO4A-HEADER:mode=after;position=AUTHOR;beginboundary=\.SH +# Please *only* replace the word "AUTHOR" by the translation of this word to +# your language. For more details read po4a(7). +# +# There is also a desktop file hex-a-hop.desktop containing two translatable +# strings. Please update it as well. +# +# Miriam Ruiz , 2007. +# Enrique Matias Sanchez (aka Quique) , 2007. +msgid "" +msgstr "" +"Project-Id-Version: hex-a-hop\n" +"Report-Msgid-Bugs-To: hex-a-hop@packages.debian.org\n" +"POT-Creation-Date: 2007-09-20 00:13+0200\n" +"PO-Revision-Date: 2007-08-24 08:44+0200\n" +"Last-Translator: Enrique Matias Sanchez (aka Quique) \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: hex_puzzzle.cpp:1558 +#, c-format +msgid "Complete 1 more level to unlock!" +msgid_plural "Complete %d more levels to unlock!" +msgstr[0] "¡Completa un nivel más para desbloquear!" +msgstr[1] "¡Completa %d niveles más para desbloquear!" + +#: hex_puzzzle.cpp:1565 +msgid "<>" +msgstr "<>" + +#. TRANSLATORS: Anti-Ice are pickups, which turn ice plates into solid +#. plates once you step on them. Each pickup changes one ice plate +#: hex_puzzzle.cpp:2655 +#, c-format +msgid "Anti-Ice: %d" +msgstr "Antihielo: %d" + +#: hex_puzzzle.cpp:2656 +#, c-format +msgid "Jumps: %d" +msgstr "Saltos: %d" + +#: hex_puzzzle.cpp:2657 +#, c-format +msgid "Score: %d (%d)" +msgstr "Puntuación: %d (%d)" + +#. TRANSLATORS: Par is similar to golf, a pre defined score which you +#. can attempt to beat +#: hex_puzzzle.cpp:2660 +#, c-format +msgid "Par: %d" +msgstr "Par: %d" + +#: hex_puzzzle.cpp:2661 +#, c-format +msgid "Diff: %d" +msgstr "Diferencia: %d" + +#: hex_puzzzle.cpp:2664 +#, c-format +msgid " Par: %d Current: %d" +msgstr " Par: %d Actual: %d" + +#: hex_puzzzle.cpp:2667 +#, c-format +msgid " Anti-Ice: %d" +msgstr " Antihielo: %d" + +#: hex_puzzzle.cpp:2669 +#, c-format +msgid " Jumps: %d" +msgstr " Saltos: %d" + +#: hex_puzzzle.cpp:2675 +#, c-format +msgid "Points: %d" +msgstr "Puntos: %d" + +#: hex_puzzzle.cpp:2676 +#, c-format +msgid "Discovered: %d%% (%d/%d)" +msgstr "Descubierto: %d%% (%d/%d)" + +#: hex_puzzzle.cpp:2677 +#, c-format +msgid "Complete: %d%% (%d)" +msgstr "Terminado: %d%% (%d)" + +#: hex_puzzzle.cpp:2678 +#, c-format +msgid "Mastered: %d%% (%d)" +msgstr "Dominado: %d%% (%d)" + +#: hex_puzzzle.cpp:2681 +#, c-format +msgid " %d%% Mastered" +msgstr " %d%% dominado" + +#: hex_puzzzle.cpp:2683 +#, c-format +msgid " %d%% Complete" +msgstr " %d%% terminado" + +#: hex_puzzzle.cpp:2735 +#, c-format +msgid "Best:% 3d" +msgstr "El mejor:% 3d" + +#: hex_puzzzle.cpp:2736 +#, c-format +msgid "Par:% 3d" +msgstr "Par:% 3d" + +#: hex_puzzzle.cpp:2739 +msgid "Completed" +msgstr "Terminado" + +#: hex_puzzzle.cpp:2742 +msgid "Incomplete" +msgstr "Incompleto" + +#: hex_puzzzle.cpp:2783 menus.h:576 +msgid "Level Complete!" +msgstr "¡Nivel terminado!" + +#: hex_puzzzle.cpp:2899 +#, c-format +msgid "Special(%d,%d): %s (%d)" +msgstr "Especial(%d,%d): %s (%d)" + +#: hex_puzzzle.cpp:2899 +msgid "" +msgstr "" + +#: hex_puzzzle.cpp:3044 +msgid "Select level" +msgstr "Seleccionar un nivel" + +#: hex_puzzzle.cpp:4097 +msgid "Save level" +msgstr "Guardar el nivel" + +#: hex_puzzzle.cpp:4103 +msgid "Open level" +msgstr "Abrir un nivel" + +#: menus.h:90 +msgid "" +"Basic controls:|Move around with the keys Q,W,E,A,S,D or the numeric " +"keypad. Alternatively, you can use the mouse and click on the tile you'd " +"like to move to. Use 'U', backspace or the right mouse button to undo " +"mistakes. The 'Esc' key (or middle mouse button) brings up a menu from " +"which you can restart if you get stuck." +msgstr "" +"Controles básicos:|Muévete con las teclas Q, W, E, A, S, D o con el teclado " +"numérico. Como alternativa, puedes usar el ratón y pulsar en la baldosa a la " +"que desees moverte.\n" +"\n" +"Usa «U», Borrar, o el botón derecho del ratón para deshacer equivocaciones.\n" +"\n" +"La tecla «Esc» (o el botón central del ratón) muestra un menú desde el que " +"puedes volver a empezar si te quedas atascado." + +#: menus.h:94 +msgid "" +"Objective:|Your goal is to break all the green tiles. You mainly do this " +"by jumping on them. They will crack when you land on them, and only " +"disintegrate when you jump off. Try not to trap yourself!" +msgstr "" +"Objetivo:|Tu meta es romper todas las baldosas verdes.\n" +"\n" +"Esto se hace principalmente saltando sobre ellas.\n" +"\n" +"Se romperán cuando aterrices sobre ellas, y se desintegrarán cuando las " +"abandones.\n" +"\n" +"¡Procura no quedarte atrapado!" + +#: menus.h:96 +msgid "" +"The coloured walls flatten themselves when there are no matching coloured " +"tiles remaining." +msgstr "" +"Las paredes coloreadas dejan paso cuando ya no quedan baldosas del mismo " +"color." + +#: menus.h:98 +msgid "" +"You can bounce on the purple trampoline tiles to get around. But try not " +"to fall in the water. If you do, remember you can undo with 'U', " +"backspace or the right mouse button!" +msgstr "" +"Puedes rebotar en las baldosas-trampolín de color púrpura para moverte.\n" +"\n" +"Pero intenta no caer en el agua.\n" +"\n" +"Si lo haces, recuerda que puedes volver atrás con «U», Borrar, o el botón " +"derecho del ratón." + +#: menus.h:100 +msgid "" +"A red spinner tile will rotate the pieces around it when you step on it." +msgstr "" +"Una baldosa giratoria de color rojo rotará las piezas a su alrededor cuando " +"pises sobre ella." + +#: menus.h:104 +msgid "" +"You don't need to destroy blue tiles to complete the level. But they'll " +"turn green when you step off them, and you know what you have to do to " +"green tiles..." +msgstr "" +"No necesitas destruir las baldosas azules para terminal el nivel.\n" +"\n" +"Pero se volverán verdes cuando salgas de ellas, y ya sabes lo que tienes que " +"hacer con las baldosas verdes..." + +#: menus.h:108 +msgid "" +"Yellow laser tiles fire when you step on them. Shooting other laser tiles " +"is more destructive." +msgstr "" +"Las baldosas láser amarillas disparan cuando pisas sobre ellas.\n" +"\n" +"Disparar a otras baldosas láser es más destructivo." + +#: menus.h:110 +msgid "Ice is slippery! Please be careful!!" +msgstr "" +"¡El hielo es resbaladizo!\n" +"\n" +"¡Ten cuidado!" + +#: menus.h:114 +msgid "" +"The dark grey tiles with arrows on are builders. Landing on one creates " +"green tiles in any adjacent empty tile, and turns green tiles into walls." +msgstr "" +"Las baldosas de color gris oscuro con flechas encima son constructoras.\n" +"\n" +"Al aterrizar sobre una, se crean baldosas verdes en cualquier baldosa vacía " +"contigua, y las baldosas verdes se convierten en paredes." + +#. TRANSLATORS: pop means vanish and Emy drowns (you loose) +#: menus.h:119 +msgid "" +"You can ride on the pink floating boats to get across water. They'll pop " +"if you try and float off the edge of the screen though, so look where " +"you're going." +msgstr "" +"Puedes montar en los barcos flotantes de color rosa para cruzar el agua.\n" +"\n" +"Sin embargo, si lo intentas desembarcarán y flotarán hasta más allá del " +"borde de la pantalla, así que mira a donde vas." + +#: menus.h:121 +msgid "The blue lifts go up or down when you land on them." +msgstr "Los ascensores azules suben o bajan cuando aterrizas sobre ellos." + +#: menus.h:127 +msgid "" +"The spiky anti-ice pickups turn icy tiles into blue ones. They get used " +"automatically when you land on ice." +msgstr "" +"Las puntiagudos objetos antihielo convierten las baldosas de hilo en " +"azules.\n" +"\n" +"Se usan automáticamente cuando aterrizas sobre hielo." + +#. TRANSLATORS: Normally you jump from one plate to another. The golden jump (a +#. pickup) allows you to jump and land on the *same* plate +#: menus.h:131 +msgid "" +"Collecting the golden jump pickups will allow you to do a big vertical " +"jump. Try it out on different types of tiles. Use the space bar or " +"return key to jump. Or click on the tile you're currently on with the mouse." +msgstr "" +"Recoger los objetos de salto dorados te permitirá dar un gran salto " +"vertical.\n" +"\n" +"Inténtalo en diferentes tipos de baldosa.\n" +"\n" +"Usa la barra espaciadora o la tecla Intro para saltar. O pulsa con el ratón " +"la baldosa en la que te encuentres." + +#: menus.h:136 +msgid "" +"Map Screen:|You can choose which level to attempt next from the map " +"screen. Silver levels are ones you've cleared. Black levels are ones " +"you haven't completed yet, but are available to play." +msgstr "" +"Mapa:|Puedes elegir qué nivel intentar a continuación desde el mapa.\n" +"\n" +"Los niveles plateados son los que ya has pasado.\n" +"\n" +"Los niveles negros son los que todavía no has terminado, pero están " +"disponibles para que los juegues." + +#. TRANSLATORS: Levels are depicted as black balls. Once you passed them, they +#. turn silver. If you reached the par, they turn golden (with a crown), and if +#. you beat the par, they turn their shape/color once more +#: menus.h:142 +msgid "" +"New feature unlocked!|Each level has an efficiency target for you to try " +"and beat. Every move you make and each non-green tile you destroy counts " +"against you. Why not try replaying some levels and going for gold?" +msgstr "" +"¡Se ha desbloqueado una nueva función!|Cada nivel tiene un objetivo de " +"eficiencia para que intentes batirlo.\n" +"\n" +"Cada movimiento que hagas y cada baldosa que destruyas sin ser de color " +"verde cuenta contra ti.\n" +"\n" +"¿Por qué no intentas volver a jugar algunos niveles y conseguir el oro?" + +#: menus.h:147 +msgid "" +"Thanks for playing this little game. I hope you enjoy it! -- -- " +"All content is Copyright 2005 Tom Beaumont email: tombeaumont@yahoo.com " +"Any constructive criticism gratefully received!" +msgstr "" +"Gracias por jugar a este pequeño juego.\n" +"\n" +"Espero que lo disfrutes.\n" +"\n" +"-- --\n" +"\n" +"Todo el contenido es (c) 2005 Tom Beaumont\n" +"\n" +"Correo electrónico: tombeaumont@yahoo.com\n" +"Toda crítica constructiva será bien recibida." + +#. TRANSLATORS: This string is copied twice into the POT file to workaround a +#. gettext limitation (no macro expansion). The extracted string "Welcome to " +#. will not be used. +#: menus.h:153 +msgid "Welcome to " +msgstr "Welcome to " + +#: menus.h:199 +msgid "Info:" +msgstr "" + +#: menus.h:231 +msgid "Press any key" +msgstr "Pulsa una tecla" + +#. TRANSLATORS: This specifies how the text in the help dialog should +#. be aligned. Do *not* translate the text itself but use one of "left", +#. "center" or "right" (untranslated!). The default is "center". +#: menus.h:253 +msgid "text alignment" +msgstr "" + +#: menus.h:339 +#, c-format +msgid "Help (Page --)" +msgstr "Ayuda (Página --)" + +#: menus.h:341 +#, c-format +msgid "Help (Page %d/%d)" +msgstr "Ayuda (Página %d/%d)" + +#: menus.h:428 +msgid "Resume" +msgstr "Reanudar" + +#: menus.h:429 +msgid "Restart Level" +msgstr "Empezar el nivel de nuevo" + +#: menus.h:430 +msgid "Return to Map" +msgstr "Volver al mapa" + +#: menus.h:431 +msgid "Continue" +msgstr "Seguir" + +#: menus.h:432 +msgid "Toggle Fullscreen" +msgstr "Conmutar la pantalla completa" + +#: menus.h:433 menus.h:1108 +msgid "Options" +msgstr "Opciones" + +#: menus.h:434 +msgid "Quit" +msgstr "Salir" + +#: menus.h:435 +msgid "Yes" +msgstr "Sí" + +#: menus.h:436 +msgid "No" +msgstr "No" + +#: menus.h:437 +msgid "Return to Title" +msgstr "Volver al menú principal" + +#: menus.h:438 +msgid "Help" +msgstr "Ayuda" + +#: menus.h:439 +msgid "Start New Game" +msgstr "Comenzar un nuevo juego" + +#: menus.h:440 +msgid "Yes, really delete it!" +msgstr "Sí, borrarlo" + +#: menus.h:441 +msgid "Don't do it!" +msgstr "No hacerlo" + +#: menus.h:442 +msgid "Undo Last Move" +msgstr "Deshacer el último movimiento" + +#: menus.h:443 +msgid "OK" +msgstr "Aceptar" + +#: menus.h:444 +msgid "View Credits Sequence" +msgstr "Ver la secuencia de créditos" + +#: menus.h:576 +msgid "Emi can't swim..." +msgstr "Emi no sabe nadar..." + +#: menus.h:615 +#, c-format +msgid "New Best Score: %d Par Score: %d Par Beaten!" +msgstr "Nueva puntuación máxima: %d Par: %d ¡Mejor que el par!" + +#: menus.h:617 +#, c-format +msgid "New Best Score: %d Par Score: %d" +msgstr "Nueva puntuación máxima: %d Par: %d" + +#: menus.h:619 +#, c-format +msgid "Score: %d Previous Best: %d Par Score: %d" +msgstr "Puntuación: %d Anterior máximo: %d Par: %d" + +#: menus.h:621 +msgid "Well Done! Level Completed!" +msgstr "¡Bien hecho! Nivel terminado" + +#: menus.h:700 +msgid " Very Well Done! " +msgstr " ¡Muy bien hecho!" + +#: menus.h:705 +msgid "All Levels Cleared!" +msgstr "Terminados todos los niveles" + +#: menus.h:709 +msgid "Not a single green hexagon is left unbroken." +msgstr "No ha quedado ni un solo hexágono sin romper." + +#: menus.h:711 +msgid "Truly, you are a master of hexagon hopping!" +msgstr "Verdaderamente, eres un as del salto entre hexágonos" + +#: menus.h:715 +msgid "Credits" +msgstr "Créditos" + +#: menus.h:716 +msgid ".add. +# The first line of this file must read: +# PO4A-HEADER:mode=after;position=AUTHOR;beginboundary=\.SH +# Please *only* replace the word "AUTHOR" by the translation of this word to +# your language. For more details read po4a(7). +# +# The manpage uses \\(hy. This is a hyphen sign (looks like -) and is used to +# connect two words such as "real-time". If you use "-" it will be wrongly +# rendered by po4a as minus sign (\- in output). See also +# http://lists.debian.org/debian-devel/2003/03/msg01481.html. If you read +# a message containing \\(hy consider it as usual hyphen. In your translation +# you should also replace all hyphens by \\(hy. Commands, file names, ... never +# contain hyphens but 7 bit minus signs! +# +# There is also a desktop file hex-a-hop.desktop containing two translatable +# strings. Please update it as well. --- hex-a-hop-0.0.20070315.orig/debian/i18n/Makefile +++ hex-a-hop-0.0.20070315/debian/i18n/Makefile @@ -0,0 +1,86 @@ +# Copyright 2007 Miriam Ruiz +# Copyright 2007 Jens Seidel +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Library General Public +# License as published by the Free Software Foundation; either +# version 2 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. + +LOCALEDIR=./ + +all: hex-a-hop.pot build-stamp + +# xgettext fails on _("Welcome to " GAMENAME "!") (doesn't extract anything +# behind the macro, so we preprocess hex_puzzzle.cpp first +hex_puzzzle_preprocessed.cpp: ../../hex_puzzzle.cpp ../../menus.h ../../level_list.h + cd ../..; $(CXX) $(CXXFLAGS) -E hex_puzzzle.cpp -o debian/i18n/$@ + +hex-a-hop.pot: hex_puzzzle_preprocessed.cpp ../../gfx.cpp ../hex-a-hop.6 + @echo Creating Template \"$@\" +# Yes, we specify both hex_puzzzle.cpp AND debian/i18n/hex_puzzzle_preprocessed.cpp +# as the preprocessed file does not contain all strings as preprocessor +# conditionals are already evaluated for the second file. We also want proper +# path references to source files (no ../.. prefix). + cd ../..; xgettext --add-comments="TRANSLATORS:" -k_ -o "debian/i18n/$@.templ" \ + gfx.cpp hex_puzzzle.cpp menus.h level_list.h debian/i18n/hex_puzzzle_preprocessed.cpp \ + --msgid-bugs-address=hex-a-hop@packages.debian.org \ + --copyright-holder="Tom Beaumont" + cd ../..; po4a-updatepo -f man -m debian/hex-a-hop.6 -p debian/i18n/hex-a-hop.6.pot + @# lets now merge the POT files containing messages from source and manpage + sed 's/charset=CHARSET/charset=ascii/' hex-a-hop.pot.templ > hex-a-hop.pot.templ.po + sed 's/charset=CHARSET/charset=ascii/' hex-a-hop.6.pot > hex-a-hop.6.pot.po + @# The first sed commands prints only the header, the seconds inserts hex-a-hop.pot.comments + sed -n '1,/^$$/ p' hex-a-hop.pot.templ | sed "/^#$$/ r hex-a-hop.pot.comments" > hex-a-hop.pot + msgcat --width=79 hex-a-hop.pot.templ.po hex-a-hop.6.pot.po | sed -n '1,/^$$/ !p' >> hex-a-hop.pot + rm -f hex-a-hop.pot.templ hex-a-hop.6.pot hex-a-hop.pot.templ.po hex-a-hop.6.pot.po + +build: build-stamp +build-stamp: hex-a-hop.pot + @# Merge all (old) PO files with POT file to ship up-to-date files! + @# (it cannot happen as usual in the clean target as there are not all patches + @# applied yet) + @set -e; cd ../..; cat debian/i18n/languages.list | while read lang enc; do \ + echo Updating \"$$lang\" translation; \ + msgmerge --width=79 --update debian/i18n/$$lang.po debian/i18n/hex-a-hop.pot; \ + done + @set -e; cat languages.list | while read lang enc; do \ + echo Building \"$$lang\" translation; \ + msgfmt $$lang.po -o $$lang.mo; \ + addendum=""; test -r ../hex-a-hop.$$lang.add && addendum="-a ../hex-a-hop.$$lang.add"; \ + sed -n '/^msgid_plural / !p' $$lang.po | \ + sed -n '/^msgstr\[[1-9]\] / !p' | \ + sed 's/^msgstr\[0\] /msgstr /' > plural_forms_stripped.po; \ + options=""; [ "$$enc" ] && options="-L $$enc"; \ + po4a-translate $$options -f man -m ../hex-a-hop.6 -p plural_forms_stripped.po $$addendum -l ../hex-a-hop.$$lang.6; \ + done + rm -f plural_forms_stripped.po # see bug #439842 + touch build-stamp + +clean: + rm -f *.mo + rm -f hex_puzzzle_preprocessed.cpp + rm -f build-stamp + @cat languages.list | while read lang enc; do \ + rm -f ../hex-a-hop.$$lang.6; \ + done + +install: build-stamp + @cat languages.list | while read lang enc; do \ + echo Installing \"$$lang\" translation; \ + install -p -d -m 755 $(LOCALEDIR)$$lang/LC_MESSAGES ; \ + install -m 644 $$lang.mo $(LOCALEDIR)$$lang/LC_MESSAGES/hex-a-hop.mo ; \ + encdir=""; [ "$$enc" = utf-8 ] && encdir=.UTF-8; \ + install -p -d -m 755 $(MANDIR)$$lang$$encdir/man6/ ; \ + install -m 644 ../hex-a-hop.$$lang.6 $(MANDIR)$$lang$$encdir/man6/hex-a-hop.6 ; \ + gzip -9 $(MANDIR)$$lang$$encdir/man6/hex-a-hop.6; \ + done --- hex-a-hop-0.0.20070315.orig/debian/i18n/vi.po +++ hex-a-hop-0.0.20070315/debian/i18n/vi.po @@ -0,0 +1,1144 @@ +# Vietnamese translation for Hex-a-hop. +# Copyright © 2007 Tom Beaumont. +# Clytie Siddall , 2007 +# +# Translators: A few hints: +# +# Support for translations is still experimental. You may find a few minor +# flaws. If you do not understand a message please ask to allow us adding +# helpful comments. +# +# The English help messages contain unusual spaces. " " is internally +# replaced by a newline, " " starts a new paragraph. You may ignore +# these spaces for now. You can also use "\n" (or " ") in translations to +# force a linebreak and "\n\n" (or " ") to start a new paragraph. It is +# suggested not to use fixed line breaks in paragraphs as this depends on +# font settings. You should also avoid " " or " " as this is unusual. +# +# The manpage is also created from this file. If you want to add an extra +# paragraph, e.g. describing your copyright for the translation or other +# language dependent information, create a file named hex-a-hop..add. +# The first line of this file must read: +# PO4A-HEADER:mode=after;position=AUTHOR;beginboundary=\.SH +# Please *only* replace the word "AUTHOR" by the translation of this word to +# your language. For more details read po4a(7). +# +# There is also a desktop file hex-a-hop.desktop containing two translatable +# strings. Please update it as well. +msgid "" +msgstr "" +"Project-Id-Version: hex-a-hop\n" +"Report-Msgid-Bugs-To: hex-a-hop@packages.debian.org\n" +"POT-Creation-Date: 2007-09-20 00:13+0200\n" +"PO-Revision-Date: 2007-08-24 14:23+0930\n" +"Last-Translator: Clytie Siddall \n" +"Language-Team: Vietnamese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: LocFactoryEditor 1.7b1\n" + +#: hex_puzzzle.cpp:1558 +#, c-format +msgid "Complete 1 more level to unlock!" +msgid_plural "Complete %d more levels to unlock!" +msgstr[0] "Hoàn thành %d cấp thêm để bỏ khoá !" + +#: hex_puzzzle.cpp:1565 +msgid "<>" +msgstr "<>" + +#. TRANSLATORS: Anti-Ice are pickups, which turn ice plates into solid +#. plates once you step on them. Each pickup changes one ice plate +#: hex_puzzzle.cpp:2655 +#, c-format +msgid "Anti-Ice: %d" +msgstr "Chống băng: %d" + +#: hex_puzzzle.cpp:2656 +#, c-format +msgid "Jumps: %d" +msgstr "Nhảy: %d" + +#: hex_puzzzle.cpp:2657 +#, c-format +msgid "Score: %d (%d)" +msgstr "Điểm: %d (%d)" + +#. TRANSLATORS: Par is similar to golf, a pre defined score which you +#. can attempt to beat +#: hex_puzzzle.cpp:2660 +#, c-format +msgid "Par: %d" +msgstr "Quy định: %d" + +#: hex_puzzzle.cpp:2661 +#, c-format +msgid "Diff: %d" +msgstr "Khác biệt: %d" + +#: hex_puzzzle.cpp:2664 +#, c-format +msgid " Par: %d Current: %d" +msgstr " Quy định: %d Hiện tại: %d" + +#: hex_puzzzle.cpp:2667 +#, c-format +msgid " Anti-Ice: %d" +msgstr " Chống băng: %d" + +#: hex_puzzzle.cpp:2669 +#, c-format +msgid " Jumps: %d" +msgstr " Nhảy: %d" + +#: hex_puzzzle.cpp:2675 +#, c-format +msgid "Points: %d" +msgstr "Điểm: %d" + +#: hex_puzzzle.cpp:2676 +#, c-format +msgid "Discovered: %d%% (%d/%d)" +msgstr "Tìm ra: %d%% (%d/%d)" + +#: hex_puzzzle.cpp:2677 +#, c-format +msgid "Complete: %d%% (%d)" +msgstr "Hoàn tất: %d%% (%d)" + +#: hex_puzzzle.cpp:2678 +#, c-format +msgid "Mastered: %d%% (%d)" +msgstr "Khắc phục: %d%% (%d)" + +#: hex_puzzzle.cpp:2681 +#, c-format +msgid " %d%% Mastered" +msgstr " %d%% Khắc phục" + +#: hex_puzzzle.cpp:2683 +#, c-format +msgid " %d%% Complete" +msgstr " %d%% Hoàn tất" + +#: hex_puzzzle.cpp:2735 +#, c-format +msgid "Best:% 3d" +msgstr "Tốt nhất: % 3d" + +#: hex_puzzzle.cpp:2736 +#, c-format +msgid "Par:% 3d" +msgstr "Quy định: % 3d" + +#: hex_puzzzle.cpp:2739 +msgid "Completed" +msgstr "Hoàn tất" + +#: hex_puzzzle.cpp:2742 +msgid "Incomplete" +msgstr "Chưa hoàn tất" + +#: hex_puzzzle.cpp:2783 menus.h:576 +msgid "Level Complete!" +msgstr "Cấp hoàn tất !" + +#: hex_puzzzle.cpp:2899 +#, c-format +msgid "Special(%d,%d): %s (%d)" +msgstr "Đặc biệt (%d,%d): %s (%d)" + +#: hex_puzzzle.cpp:2899 +msgid "" +msgstr "" + +#: hex_puzzzle.cpp:3044 +msgid "Select level" +msgstr "Chọn cấp" + +#: hex_puzzzle.cpp:4097 +msgid "Save level" +msgstr "Lưu cấp" + +#: hex_puzzzle.cpp:4103 +msgid "Open level" +msgstr "Mở cấp" + +#: menus.h:90 +msgid "" +"Basic controls:|Move around with the keys Q,W,E,A,S,D or the numeric " +"keypad. Alternatively, you can use the mouse and click on the tile you'd " +"like to move to. Use 'U', backspace or the right mouse button to undo " +"mistakes. The 'Esc' key (or middle mouse button) brings up a menu from " +"which you can restart if you get stuck." +msgstr "" +"Điều khiển cơ bản:|Di chuyển dùng các phím Q,W,E,A,S,D hay vùng phím số. " +"Hoặc bạn có thể sử dụng con chuột để nhấn vào cái ngói tới đó bạn muốn di " +"chuyển.\n" +"\n" +"Dùng phím U, phím xoá lùi hay cái nút bên phải trên chuột để hủy bước làm " +"lỗi.\n" +"\n" +"Phím Esc (hay cái nút ở giữa trên chuột) sẽ hiển thị trình đơn cho phép bạn " +"khởi chạy lại trong trường hợp không thể tiếp tục." + +#: menus.h:94 +msgid "" +"Objective:|Your goal is to break all the green tiles. You mainly do this " +"by jumping on them. They will crack when you land on them, and only " +"disintegrate when you jump off. Try not to trap yourself!" +msgstr "" +"Mục đích:|Mục đích là bổ tất cả các cái ngói màu lục.\n" +"\n" +"Thường có thể bổ ngói bằng cách nhảy lên nó.\n" +"\n" +"Nó sẽ nứt khi bạn đến, rồi tan rã chỉ khi bạn nhảy ra.\n" +"\n" +"Hãy cố gắng tránh trường hợp đặt tự bẫy !" + +#: menus.h:96 +msgid "" +"The coloured walls flatten themselves when there are no matching coloured " +"tiles remaining." +msgstr "" +"Những cái tường có màu riêng sẽ tự làm phẳng khi không có cái ngói cùng màu " +"còn lại." + +#: menus.h:98 +msgid "" +"You can bounce on the purple trampoline tiles to get around. But try not " +"to fall in the water. If you do, remember you can undo with 'U', " +"backspace or the right mouse button!" +msgstr "" +"Bạn cũng có thể nảy lên cái ngói bạt lò xo màu tím để nhảy qua nhiều ngói " +"khác.\n" +"\n" +"Tuy nhiên, hãy cố gắng tránh rơi vào nước.\n" +"\n" +"Có phải rời, hãy nhớ lại bạn vẫn còn có khả năng hủy bước bằng phím U, phím " +"xoá lùi hay cái nút bên phải trên chuột !" + +#: menus.h:100 +msgid "" +"A red spinner tile will rotate the pieces around it when you step on it." +msgstr "Cái ngói quay màu đỏ sẽ xoay các cái chung quanh khi bạn đến nó." + +#: menus.h:104 +msgid "" +"You don't need to destroy blue tiles to complete the level. But they'll " +"turn green when you step off them, and you know what you have to do to " +"green tiles..." +msgstr "" +"Bạn không cần hủy các cái ngói màu xanh để hoàn thành cấp.\n" +"\n" +"Tuy nhiên, cái ngói màu xanh sẽ trở thành màu lục khi bạn nhảy ra, và bạn " +"biết được việc nào cần làm với ngói màu lục..." + +#: menus.h:108 +msgid "" +"Yellow laser tiles fire when you step on them. Shooting other laser tiles " +"is more destructive." +msgstr "" +"Cái ngói la-de màu vàng sẽ bắn khi bạn đến nó.\n" +"\n" +"Bắn cái ngói la-de khác thì phá hủy thêm. ;)" + +#: menus.h:110 +msgid "Ice is slippery! Please be careful!!" +msgstr "" +"Đường trơn trên băng !\n" +"\n" +"Hãy cẩn thận !" + +#: menus.h:114 +msgid "" +"The dark grey tiles with arrows on are builders. Landing on one creates " +"green tiles in any adjacent empty tile, and turns green tiles into walls." +msgstr "" +"Cái ngói màu xám tối hiển thị mũi tên là ngói xây dựng.\n" +"\n" +"Đến nó thì tạo cái ngói màu lục ở nơi của ngói trống nào, cũng chuyển dạng " +"ngói lục sang tường." + +#. TRANSLATORS: pop means vanish and Emy drowns (you loose) +#: menus.h:119 +msgid "" +"You can ride on the pink floating boats to get across water. They'll pop " +"if you try and float off the edge of the screen though, so look where " +"you're going." +msgstr "" +"Bạn cũng có thể đáp tàu màu hồng đi qua nước.\n" +"\n" +"Tùy nhiên, tàu biến mất ở cạnh màn hình: hãy chạy cẩn thận." + +#: menus.h:121 +msgid "The blue lifts go up or down when you land on them." +msgstr "Thang máy màu xanh sẽ nâng lên hay hạ xuống khi bạn đến." + +#: menus.h:127 +msgid "" +"The spiky anti-ice pickups turn icy tiles into blue ones. They get used " +"automatically when you land on ice." +msgstr "" +"Cái nhặt gai chống băng thì chuyển dạng ngói băng sang ngói màu xanh.\n" +"\n" +"Cái nhặt này được kích hoạt tự động khi bạn đến băng." + +#. TRANSLATORS: Normally you jump from one plate to another. The golden jump (a +#. pickup) allows you to jump and land on the *same* plate +#: menus.h:131 +msgid "" +"Collecting the golden jump pickups will allow you to do a big vertical " +"jump. Try it out on different types of tiles. Use the space bar or " +"return key to jump. Or click on the tile you're currently on with the mouse." +msgstr "" +"Thu thập các cái nhặt nhảy màu vàng thì cho phép bạn nhảy cao một lần.\n" +"\n" +"Hãy thử nó trên cái ngói kiểu khác nhau.\n" +"\n" +"Dùng phím dài hay phím Return để nhảy lên. Hoặc nhấn chuột vào cái ngói bạn " +"ở." + +#: menus.h:136 +msgid "" +"Map Screen:|You can choose which level to attempt next from the map " +"screen. Silver levels are ones you've cleared. Black levels are ones " +"you haven't completed yet, but are available to play." +msgstr "" +"Màn hình bản đồ :|Bạn có thể chọn cấp kế tiếp trên màn hình bản đồ.\n" +"\n" +"Cấp màu bạc đã được xoá trống.\n" +"Cấp màu đen thì chưa xoá, còn sẵn sàng chơi." + +#. TRANSLATORS: Levels are depicted as black balls. Once you passed them, they +#. turn silver. If you reached the par, they turn golden (with a crown), and if +#. you beat the par, they turn their shape/color once more +#: menus.h:142 +msgid "" +"New feature unlocked!|Each level has an efficiency target for you to try " +"and beat. Every move you make and each non-green tile you destroy counts " +"against you. Why not try replaying some levels and going for gold?" +msgstr "" +"Tính năng mới được mở khoá !|Mỗi cấp có mục tiêu hiệu quả cần thắng.\n" +"\n" +"Mỗi lượt bạn làm và mỗi cái ngói khác lục bạn hủy thì giảm điểm.\n" +"\n" +"Hãy thử chơi lại một số cấp để đặt được màu vàng." + +#: menus.h:147 +msgid "" +"Thanks for playing this little game. I hope you enjoy it! -- -- " +"All content is Copyright 2005 Tom Beaumont email: tombeaumont@yahoo.com " +"Any constructive criticism gratefully received!" +msgstr "" +"Cám ơn bạn đã chơi. Chúc bạn chơi vui vẻ.\n" +"\n" +"Tác quyền © 2007 Tom Beaumont .\n" +"\n" +"Mời bạn ghi chú và gửi báo cáo lỗi." + +#. TRANSLATORS: This string is copied twice into the POT file to workaround a +#. gettext limitation (no macro expansion). The extracted string "Welcome to " +#. will not be used. +#: menus.h:153 +msgid "Welcome to " +msgstr "Welcome to " + +#: menus.h:199 +msgid "Info:" +msgstr "" + +#: menus.h:231 +msgid "Press any key" +msgstr "Bấm bất cứ phím nào" + +#. TRANSLATORS: This specifies how the text in the help dialog should +#. be aligned. Do *not* translate the text itself but use one of "left", +#. "center" or "right" (untranslated!). The default is "center". +#: menus.h:253 +msgid "text alignment" +msgstr "" + +#: menus.h:339 +#, c-format +msgid "Help (Page --)" +msgstr "Trợ giúp (Trang --)" + +#: menus.h:341 +#, c-format +msgid "Help (Page %d/%d)" +msgstr "Trợ giúp (Trang %d/%d)" + +#: menus.h:428 +msgid "Resume" +msgstr "Tiếp tục lại" + +#: menus.h:429 +msgid "Restart Level" +msgstr "Chạy lại cấp" + +#: menus.h:430 +msgid "Return to Map" +msgstr "Trở về Bản đồ" + +#: menus.h:431 +msgid "Continue" +msgstr "Tiếp tục" + +#: menus.h:432 +msgid "Toggle Fullscreen" +msgstr "Hiện/ẩn toàn màn hình" + +#: menus.h:433 menus.h:1108 +msgid "Options" +msgstr "Tùy chọn" + +#: menus.h:434 +msgid "Quit" +msgstr "Thoát" + +#: menus.h:435 +msgid "Yes" +msgstr "Có" + +#: menus.h:436 +msgid "No" +msgstr "Không" + +#: menus.h:437 +msgid "Return to Title" +msgstr "Trở về Tựa đề" + +#: menus.h:438 +msgid "Help" +msgstr "Trợ giúp" + +#: menus.h:439 +msgid "Start New Game" +msgstr "Chạy lượt chơi mới" + +#: menus.h:440 +msgid "Yes, really delete it!" +msgstr "Có phải, thực sự xoá." + +#: menus.h:441 +msgid "Don't do it!" +msgstr "Đừng làm." + +#: menus.h:442 +msgid "Undo Last Move" +msgstr "Hủy bước" + +#: menus.h:443 +msgid "OK" +msgstr "OK" + +#: menus.h:444 +msgid "View Credits Sequence" +msgstr "Xem dãy công trạng" + +#: menus.h:576 +msgid "Emi can't swim..." +msgstr "Emi không bơi được..." + +#: menus.h:615 +#, c-format +msgid "New Best Score: %d Par Score: %d Par Beaten!" +msgstr "Điểm cao nhất mới: %d Điểm quy định: %d Thắng mức quy định !" + +#: menus.h:617 +#, c-format +msgid "New Best Score: %d Par Score: %d" +msgstr "Điểm cao nhất mới: %d Điểm quy định: %d" + +#: menus.h:619 +#, c-format +msgid "Score: %d Previous Best: %d Par Score: %d" +msgstr "Điểm: %d Cao nhất trước: %d Điểm quy định: %d" + +#: menus.h:621 +msgid "Well Done! Level Completed!" +msgstr "Giỏi ! Cấp hoàn tất !" + +#: menus.h:700 +msgid " Very Well Done! " +msgstr " Giỏi lắm ! " + +#: menus.h:705 +msgid "All Levels Cleared!" +msgstr "Mọi cấp đã được xoá trống !" + +#: menus.h:709 +msgid "Not a single green hexagon is left unbroken." +msgstr "Không có một hình lục giác màu lục nào cả còn lại nguyên vẹn." + +#: menus.h:711 +msgid "Truly, you are a master of hexagon hopping!" +msgstr "Thực sự bạn nắm vững thủ tục nhảy qua hình lục giác !" + +#: menus.h:715 +msgid "Credits" +msgstr "Công trạng" + +#: menus.h:716 +msgid ".add. +# The first line of this file must read: +# PO4A-HEADER:mode=after;position=AUTHOR;beginboundary=\.SH +# Please *only* replace the word "AUTHOR" by the translation of this word to +# your language. For more details read po4a(7). +# +# The manpage uses \\(hy. This is a hyphen sign (looks like -) and is used to +# connect two words such as "real-time". If you use "-" it will be wrongly +# rendered by po4a as minus sign (\- in output). See also +# http://lists.debian.org/debian-devel/2003/03/msg01481.html. If you read +# a message containing \\(hy consider it as usual hyphen. In your translation +# you should also replace all hyphens by \\(hy. Commands, file names, ... never +# contain hyphens but 7 bit minus signs! +# +# There is also a desktop file hex-a-hop.desktop containing two translatable +# strings. Please update it as well. +# +# Damyan Ivanov , 2007. +msgid "" +msgstr "" +"Project-Id-Version: hex-a-hop\n" +"Report-Msgid-Bugs-To: hex-a-hop@packages.debian.org\n" +"POT-Creation-Date: 2007-09-20 00:13+0200\n" +"PO-Revision-Date: 2007-08-23 21:16+0300\n" +"Last-Translator: Damyan Ivanov \n" +"Language-Team: Bulgarian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: hex_puzzzle.cpp:1558 +#, c-format +msgid "Complete 1 more level to unlock!" +msgid_plural "Complete %d more levels to unlock!" +msgstr[0] "Преминете още едно ниво за отключване!" +msgstr[1] "Преминете още %d нива за отключване!" + +#: hex_puzzzle.cpp:1565 +msgid "<>" +msgstr "<<БЕЗ ИМЕ>>" + +#. TRANSLATORS: Anti-Ice are pickups, which turn ice plates into solid +#. plates once you step on them. Each pickup changes one ice plate +#: hex_puzzzle.cpp:2655 +#, c-format +msgid "Anti-Ice: %d" +msgstr "Котки: %d" + +#: hex_puzzzle.cpp:2656 +#, c-format +msgid "Jumps: %d" +msgstr "Пружини: %d" + +#: hex_puzzzle.cpp:2657 +#, c-format +msgid "Score: %d (%d)" +msgstr "Точки: %d (%d)" + +#. TRANSLATORS: Par is similar to golf, a pre defined score which you +#. can attempt to beat +#: hex_puzzzle.cpp:2660 +#, c-format +msgid "Par: %d" +msgstr "Норма: %d" + +#: hex_puzzzle.cpp:2661 +#, c-format +msgid "Diff: %d" +msgstr "Разлика: %d" + +#: hex_puzzzle.cpp:2664 +#, c-format +msgid " Par: %d Current: %d" +msgstr "Норма: %d Текущо: %d" + +#: hex_puzzzle.cpp:2667 +#, c-format +msgid " Anti-Ice: %d" +msgstr " Котки: %d" + +#: hex_puzzzle.cpp:2669 +#, c-format +msgid " Jumps: %d" +msgstr " Пружини: %d" + +#: hex_puzzzle.cpp:2675 +#, c-format +msgid "Points: %d" +msgstr "Точки: %d" + +#: hex_puzzzle.cpp:2676 +#, c-format +msgid "Discovered: %d%% (%d/%d)" +msgstr "Разкрити: %d%% (%d/%d)" + +#: hex_puzzzle.cpp:2677 +#, c-format +msgid "Complete: %d%% (%d)" +msgstr "Преминати: %d%% (%d)" + +#: hex_puzzzle.cpp:2678 +#, c-format +msgid "Mastered: %d%% (%d)" +msgstr "Овладени: %d%% (%d)" + +#: hex_puzzzle.cpp:2681 +#, c-format +msgid " %d%% Mastered" +msgstr " овладени %d%%" + +#: hex_puzzzle.cpp:2683 +#, c-format +msgid " %d%% Complete" +msgstr " преминати %d%%" + +#: hex_puzzzle.cpp:2735 +#, c-format +msgid "Best:% 3d" +msgstr "Рекорд:% 3d" + +#: hex_puzzzle.cpp:2736 +#, c-format +msgid "Par:% 3d" +msgstr "Норма:% 3d" + +#: hex_puzzzle.cpp:2739 +msgid "Completed" +msgstr "Преминато" + +#: hex_puzzzle.cpp:2742 +msgid "Incomplete" +msgstr "Предстоящо" + +#: hex_puzzzle.cpp:2783 menus.h:576 +msgid "Level Complete!" +msgstr "Нивото е преминато!" + +#: hex_puzzzle.cpp:2899 +#, c-format +msgid "Special(%d,%d): %s (%d)" +msgstr "Специални(%d,%d): %s (%d)" + +#: hex_puzzzle.cpp:2899 +msgid "" +msgstr "<Няма>" + +#: hex_puzzzle.cpp:3044 +msgid "Select level" +msgstr "Избор на ниво" + +#: hex_puzzzle.cpp:4097 +msgid "Save level" +msgstr "Запис на ниво" + +#: hex_puzzzle.cpp:4103 +msgid "Open level" +msgstr "Отваряне на ниво" + +#: menus.h:90 +msgid "" +"Basic controls:|Move around with the keys Q,W,E,A,S,D or the numeric " +"keypad. Alternatively, you can use the mouse and click on the tile you'd " +"like to move to. Use 'U', backspace or the right mouse button to undo " +"mistakes. The 'Esc' key (or middle mouse button) brings up a menu from " +"which you can restart if you get stuck." +msgstr "" +"Управление:|Преместването става с Q,W,E,A,S,D или с цифровата клавиатура. " +"Можете да се местите и чрез щракване с мишката върху съседна плочка. " +"Клавишите „U“, „Backspace“ и десният бутон на мишката връщат назад. „Esc“ " +"и средният бутон на мишката показват меню, от което можете да рестартирате, " +"в случай, че се заклещите." + +#: menus.h:94 +msgid "" +"Objective:|Your goal is to break all the green tiles. You mainly do this " +"by jumping on them. They will crack when you land on them, and only " +"disintegrate when you jump off. Try not to trap yourself!" +msgstr "" +"Правила:|Целта на играта е да счупите всички зелени плочки. Това става " +"основно чрез скачане върху тях. Плочките се пропукват когато сте отгоре " +"им и се чупят едва след като отскочите. Пазете се да не се заклещите!" + +#: menus.h:96 +msgid "" +"The coloured walls flatten themselves when there are no matching coloured " +"tiles remaining." +msgstr "" +"Цветните стени стават на плочки, когато на полето не останат здрави плочки " +"от същия цвят." + +#: menus.h:98 +msgid "" +"You can bounce on the purple trampoline tiles to get around. But try not " +"to fall in the water. If you do, remember you can undo with 'U', " +"backspace or the right mouse button!" +msgstr "" +"Можете да отскачате от цикламените плочки-трамплини. Пазете се да не паднете " +"във водата. Ако все пак паднете, помнете, че можете да се върнете назад с " +"клавиша „U“, „Backspace“ или десния бутон на мишката." + +#: menus.h:100 +msgid "" +"A red spinner tile will rotate the pieces around it when you step on it." +msgstr "" +"Ако стъпите червената плочка-ротор, тя ще завърти съседните плочки около " +"себе." + +#: menus.h:104 +msgid "" +"You don't need to destroy blue tiles to complete the level. But they'll " +"turn green when you step off them, and you know what you have to do to " +"green tiles..." +msgstr "" +"За да преминете нивото не е задължително да счупите сините плочки. Ако " +"обаче стъпите върху тях, те ще се превърнат в зелени, а тях вече знаете " +"какво трябва да правите..." + +#: menus.h:108 +msgid "" +"Yellow laser tiles fire when you step on them. Shooting other laser tiles " +"is more destructive." +msgstr "" +"Жълтите лазерни плочки стрелят когато стъпите върху тях. Стрелянето по " +"други лазерни плочки е още по-унищожително." + +#: menus.h:110 +msgid "Ice is slippery! Please be careful!!" +msgstr "Внимателно! Ледът е хлъзгав!" + +#: menus.h:114 +msgid "" +"The dark grey tiles with arrows on are builders. Landing on one creates " +"green tiles in any adjacent empty tile, and turns green tiles into walls." +msgstr "" +"Тъмносивите плочки със стрелки са строители. Стъпването върху строител го " +"активира. В празните места наоколо се появяват зелени плочки, а зелените " +"плочки се издигат в стени." + +#. TRANSLATORS: pop means vanish and Emy drowns (you loose) +#: menus.h:119 +msgid "" +"You can ride on the pink floating boats to get across water. They'll pop " +"if you try and float off the edge of the screen though, so look where " +"you're going." +msgstr "" +"Розовите плаващи плочки могат да се използват за плаване през водата. Ако " +"обаче стигнете до края на полето с плаваща плочка, тя ще се спука, така че " +"внимавайте." + +#: menus.h:121 +msgid "The blue lifts go up or down when you land on them." +msgstr "Сините асансьори се издигат или спускат когато стъпите върху тях." + +#: menus.h:127 +msgid "" +"The spiky anti-ice pickups turn icy tiles into blue ones. They get used " +"automatically when you land on ice." +msgstr "" +"Котките против лед превръщат ледените плочки в сини. Котките се използват " +"автоматично в случай, че стъпите върху лед." + +#. TRANSLATORS: Normally you jump from one plate to another. The golden jump (a +#. pickup) allows you to jump and land on the *same* plate +#: menus.h:131 +msgid "" +"Collecting the golden jump pickups will allow you to do a big vertical " +"jump. Try it out on different types of tiles. Use the space bar or " +"return key to jump. Or click on the tile you're currently on with the mouse." +msgstr "" +"Събирането на златните пружини ви дава възможност за високи подскоци. " +"Опитайте ги на различни видове плочки. Използвайте клавиша за интервал " +"или нов ред. Или пък щракнете с мишката на плочката, върху която стоите." + +#: menus.h:136 +msgid "" +"Map Screen:|You can choose which level to attempt next from the map " +"screen. Silver levels are ones you've cleared. Black levels are ones " +"you haven't completed yet, but are available to play." +msgstr "" +"Карта:|Изберете кое от посочените на картата нива искате да играете. " +"Сребърните нива са вече преминати. Черните още не са." + +#. TRANSLATORS: Levels are depicted as black balls. Once you passed them, they +#. turn silver. If you reached the par, they turn golden (with a crown), and if +#. you beat the par, they turn their shape/color once more +#: menus.h:142 +msgid "" +"New feature unlocked!|Each level has an efficiency target for you to try " +"and beat. Every move you make and each non-green tile you destroy counts " +"against you. Why not try replaying some levels and going for gold?" +msgstr "" +"Отключихте ново съревнование! Всяко ниво има норма, към която можете да се " +"стремите и дори да подобрите. Всеки направен ход и всяка плочка с цвят, " +"различен от зелен, която унищожите се брои против вас. Защо не опитате да " +"преиграете няколко нива и да станете медалист?" + +#: menus.h:147 +msgid "" +"Thanks for playing this little game. I hope you enjoy it! -- -- " +"All content is Copyright 2005 Tom Beaumont email: tombeaumont@yahoo.com " +"Any constructive criticism gratefully received!" +msgstr "" +"Благодаря би, че играхте тази игра. Надявам се, че сте се забавлявали! " +"-- -- © 2005 Tom Beamount email: tombeamount@yahoo.com Градивни " +"критики са добре дошли." + +#. TRANSLATORS: This string is copied twice into the POT file to workaround a +#. gettext limitation (no macro expansion). The extracted string "Welcome to " +#. will not be used. +#: menus.h:153 +msgid "Welcome to " +msgstr "Welcome to " + +#: menus.h:199 +msgid "Info:" +msgstr "" + +#: menus.h:231 +msgid "Press any key" +msgstr "Натиснете клавиш" + +#. TRANSLATORS: This specifies how the text in the help dialog should +#. be aligned. Do *not* translate the text itself but use one of "left", +#. "center" or "right" (untranslated!). The default is "center". +#: menus.h:253 +msgid "text alignment" +msgstr "" + +#: menus.h:339 +#, c-format +msgid "Help (Page --)" +msgstr "Помощ (Страница --)" + +#: menus.h:341 +#, c-format +msgid "Help (Page %d/%d)" +msgstr "Помощ (Страница %d/%d)" + +#: menus.h:428 +msgid "Resume" +msgstr "Продължаване" + +#: menus.h:429 +msgid "Restart Level" +msgstr "Започване отначало" + +#: menus.h:430 +msgid "Return to Map" +msgstr "Карта" + +#: menus.h:431 +msgid "Continue" +msgstr "Продължаване" + +#: menus.h:432 +msgid "Toggle Fullscreen" +msgstr "Прозорец/Цял екран" + +#: menus.h:433 menus.h:1108 +msgid "Options" +msgstr "Настройки" + +#: menus.h:434 +msgid "Quit" +msgstr "Изход" + +#: menus.h:435 +msgid "Yes" +msgstr "Да" + +#: menus.h:436 +msgid "No" +msgstr "Не" + +#: menus.h:437 +msgid "Return to Title" +msgstr "Начален екран" + +#: menus.h:438 +msgid "Help" +msgstr "Помощ" + +#: menus.h:439 +msgid "Start New Game" +msgstr "Нова игра" + +#: menus.h:440 +msgid "Yes, really delete it!" +msgstr "Да, изтриване!" + +#: menus.h:441 +msgid "Don't do it!" +msgstr "Не, благодаря!" + +#: menus.h:442 +msgid "Undo Last Move" +msgstr "Ход назад" + +#: menus.h:443 +msgid "OK" +msgstr "Добре" + +#: menus.h:444 +msgid "View Credits Sequence" +msgstr "Информация за авторите" + +#: menus.h:576 +msgid "Emi can't swim..." +msgstr "Еми не може да плува..." + +#: menus.h:615 +#, c-format +msgid "New Best Score: %d Par Score: %d Par Beaten!" +msgstr "Нов рекорд: %d Норма: %d Преминахте нормата!" + +#: menus.h:617 +#, c-format +msgid "New Best Score: %d Par Score: %d" +msgstr "Нов рекорд: %d Норма: %d" + +#: menus.h:619 +#, c-format +msgid "Score: %d Previous Best: %d Par Score: %d" +msgstr "Точки: %d Предишен рекорд: %d Норма: %d" + +#: menus.h:621 +msgid "Well Done! Level Completed!" +msgstr "Много добре! Преминахте нивото!" + +#: menus.h:700 +msgid " Very Well Done! " +msgstr " Отлично! " + +#: menus.h:705 +msgid "All Levels Cleared!" +msgstr "Преминахте всички нива!" + +#: menus.h:709 +msgid "Not a single green hexagon is left unbroken." +msgstr "Няма останали зелени плочки!" + +#: menus.h:711 +msgid "Truly, you are a master of hexagon hopping!" +msgstr "Наистина сте майстор по скачане по шестоъгълни плочки!" + +#: menus.h:715 +msgid "Credits" +msgstr "Автори" + +#: menus.h:716 +msgid ".add. +# The first line of this file must read: +# PO4A-HEADER:mode=after;position=AUTHOR;beginboundary=\.SH +# Please *only* replace the word "AUTHOR" by the translation of this word to +# your language. For more details read po4a(7). +# +# The manpage uses \\(hy. This is a hyphen sign (looks like -) and is used to +# connect two words such as "real-time". If you use "-" it will be wrongly +# rendered by po4a as minus sign (\- in output). See also +# http://lists.debian.org/debian-devel/2003/03/msg01481.html. If you read +# a message containing \\(hy consider it as usual hyphen. In your translation +# you should also replace all hyphens by \\(hy. Commands, file names, ... never +# contain hyphens but 7 bit minus signs! +# +# There is also a desktop file hex-a-hop.desktop containing two translatable +# strings. Please update it as well. +# +# Dr.T.Vasudevan , 2007. +msgid "" +msgstr "" +"Project-Id-Version: hex-a-hop\n" +"Report-Msgid-Bugs-To: hex-a-hop@packages.debian.org\n" +"POT-Creation-Date: 2007-09-20 00:13+0200\n" +"PO-Revision-Date: 2007-09-07 15:08+0530\n" +"Last-Translator: Dr.T.Vasudevan \n" +"Language-Team: TAMIL \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: hex_puzzzle.cpp:1558 +#, c-format +msgid "Complete 1 more level to unlock!" +msgid_plural "Complete %d more levels to unlock!" +msgstr[0] "பூட்டை திறக்க இன்னும் 1 மட்டத்தை முடியுங்கள்!" +msgstr[1] "பூட்டை திறக்க இன்னும் %d மட்டங்களை முடியுங்கள்!" + +#: hex_puzzzle.cpp:1565 +msgid "<>" +msgstr "<>" + +#. TRANSLATORS: Anti-Ice are pickups, which turn ice plates into solid +#. plates once you step on them. Each pickup changes one ice plate +#: hex_puzzzle.cpp:2655 +#, c-format +msgid "Anti-Ice: %d" +msgstr "ஆன்டி-ஐஸ்: %d" + +#: hex_puzzzle.cpp:2656 +#, c-format +msgid "Jumps: %d" +msgstr "தாவல்கள்: %d" + +#: hex_puzzzle.cpp:2657 +#, c-format +msgid "Score: %d (%d)" +msgstr "மதிப்பெண்: %d (%d)" + +#. TRANSLATORS: Par is similar to golf, a pre defined score which you +#. can attempt to beat +#: hex_puzzzle.cpp:2660 +#, c-format +msgid "Par: %d" +msgstr "சராசரி: %d" + +#: hex_puzzzle.cpp:2661 +#, c-format +msgid "Diff: %d" +msgstr "வித்தியாசம்: %d" + +#: hex_puzzzle.cpp:2664 +#, c-format +msgid " Par: %d Current: %d" +msgstr "சராசரி: %d நடப்பு: %d" + +#: hex_puzzzle.cpp:2667 +#, c-format +msgid " Anti-Ice: %d" +msgstr "ஆன்டி-ஐஸ்: %d" + +#: hex_puzzzle.cpp:2669 +#, c-format +msgid " Jumps: %d" +msgstr "தாவல்கள்: %d" + +#: hex_puzzzle.cpp:2675 +#, c-format +msgid "Points: %d" +msgstr "புள்ளிகள்: %d" + +#: hex_puzzzle.cpp:2676 +#, c-format +msgid "Discovered: %d%% (%d/%d)" +msgstr "கண்டுபிடிக்கப்பட்டது: %d%% (%d/%d)" + +#: hex_puzzzle.cpp:2677 +#, c-format +msgid "Complete: %d%% (%d)" +msgstr "முடிந்தது: %d%% (%d)" + +#: hex_puzzzle.cpp:2678 +#, c-format +msgid "Mastered: %d%% (%d)" +msgstr "வெற்றி கொண்டது: %d%% (%d)" + +#: hex_puzzzle.cpp:2681 +#, c-format +msgid " %d%% Mastered" +msgstr " %d%% வெற்றி கொள்ளப்பட்டது" + +#: hex_puzzzle.cpp:2683 +#, c-format +msgid " %d%% Complete" +msgstr " %d%% முடிந்தது" + +#: hex_puzzzle.cpp:2735 +#, c-format +msgid "Best:% 3d" +msgstr "சிறந்தது:% 3d" + +#: hex_puzzzle.cpp:2736 +#, c-format +msgid "Par:% 3d" +msgstr "சராசரி:% 3d" + +#: hex_puzzzle.cpp:2739 +msgid "Completed" +msgstr "நிறைவேறியது" + +#: hex_puzzzle.cpp:2742 +msgid "Incomplete" +msgstr "நிறைவேறாதது" + +#: hex_puzzzle.cpp:2783 menus.h:576 +msgid "Level Complete!" +msgstr "நிலை முடிந்தது!" + +#: hex_puzzzle.cpp:2899 +#, c-format +msgid "Special(%d,%d): %s (%d)" +msgstr "சிறப்பு(%d,%d): %s (%d)" + +#: hex_puzzzle.cpp:2899 +msgid "" +msgstr "<எதுவுமில்லை>" + +#: hex_puzzzle.cpp:3044 +msgid "Select level" +msgstr "மட்டத்தை தேர்ந்தெடு" + +#: hex_puzzzle.cpp:4097 +msgid "Save level" +msgstr "மட்டத்தை சேமி" + +#: hex_puzzzle.cpp:4103 +msgid "Open level" +msgstr "மட்டத்தை திற" + +#: menus.h:90 +msgid "" +"Basic controls:|Move around with the keys Q,W,E,A,S,D or the numeric " +"keypad. Alternatively, you can use the mouse and click on the tile you'd " +"like to move to. Use 'U', backspace or the right mouse button to undo " +"mistakes. The 'Esc' key (or middle mouse button) brings up a menu from " +"which you can restart if you get stuck." +msgstr "" +"அடிப்படை கட்டுப்பாடு:| Q W E A S D விசைகளால் நகருங்க. அல்லது எண் விசை பலகத்தால. " +"இல்லாவிட்டால் சொடுக்கியையும் பயன்படுத்தலாம். போக வேண்டிய ஓடு மேல சொடுக்குங்க. தவறுகளை " +"சரி செய்ய 'U' விசை backspace அல்லது வலது சொடுக்கி பொத்தான் பயன்படுத்துங்க. " +"எங்காவது மாட்டிக் கொண்டா 'Esc' விசை அல்லது நடு சொடுக்கி பொத்தானை சொடுக்கியோ கிடைக்கும் " +"பட்டியிலிருந்து திரும்பி முதலிலிருந்து ஆரம்பிக்கலாம்." + +#: menus.h:94 +msgid "" +"Objective:|Your goal is to break all the green tiles. You mainly do this " +"by jumping on them. They will crack when you land on them, and only " +"disintegrate when you jump off. Try not to trap yourself!" +msgstr "" +"இலக்கு:|அனைத்து பச்சை ஓடுகளையும் உடைக்க வேண்டும். இதை நீங்கள் முக்கியமாக அதன் மீது " +"குதிப்பதால் செய்கிறீகள். நீங்கள் அதன் மீது குதிக்கும்போது அவை விரிசல் விடும். அதன் " +"மீதிருந்து எழும்பும் போது அவை உடையும். இக்கட்டில் மாட்டாதீர்கள்." + +#: menus.h:96 +msgid "" +"The coloured walls flatten themselves when there are no matching coloured " +"tiles remaining." +msgstr "நிறமிட்ட சுவர்கள் பொருத்தமான ஓடுகள் மீதம் இல்லாதபோது தட்டையாகும்." + +#: menus.h:98 +msgid "" +"You can bounce on the purple trampoline tiles to get around. But try not " +"to fall in the water. If you do, remember you can undo with 'U', " +"backspace or the right mouse button!" +msgstr "" +"நீங்கள் ஊதா வீழ்தடுப்புரை ஓடுகள் மீது குதித்து தாவலாம். தண்ணீரில் விழாமல் " +"பாத்துக்குங்க! ஒரு வேளை விழுந்தா நகர்வை ரத்து செய்யலாம், 'U' backspace அல்லது " +"வலது சொடுக்கி பொத்தான் மூலமாக!" + +#: menus.h:100 +msgid "" +"A red spinner tile will rotate the pieces around it when you step on it." +msgstr "சிவப்பு சுத்தும் ஓடு அதன் மேல் கால் வைத்தால் சுற்றி உள்ள ஓடுகளை சுழற்றும்." + +#: menus.h:104 +msgid "" +"You don't need to destroy blue tiles to complete the level. But they'll " +"turn green when you step off them, and you know what you have to do to " +"green tiles..." +msgstr "" +"நீங்கள் இந்த மட்டத்தை முடிக்க நீல ஓடுகளை உடைக்க வேண்டாம். ஆனால் அவற்றின் மீதிருந்து வெளியே " +"போனால் அவை பச்சையாக மாறும். பச்சை ஓட்டை என்ன செய்யனும்னுதான் தெரியுமே..." + +#: menus.h:108 +msgid "" +"Yellow laser tiles fire when you step on them. Shooting other laser tiles " +"is more destructive." +msgstr "" +"மஞ்சள் லேசர் ஓடுகள் மீது கால் வைத்தால் அவை துப்பாக்கி போல சுடும். மத்த லேசர் ஓடுகளை " +"சுடுவது இன்னும் நாசம் பண்ணும்." + +#: menus.h:110 +msgid "Ice is slippery! Please be careful!!" +msgstr "ஐஸ் வழுக்கும்! தயவு செய்து ஜாக்கிரதையாக இருங்க!" + +#: menus.h:114 +msgid "" +"The dark grey tiles with arrows on are builders. Landing on one creates " +"green tiles in any adjacent empty tile, and turns green tiles into walls." +msgstr "" +"அம்பு குறியுள்ள சாம்பல் நிற ஓடுகள் கட்டுமானம் செய்பவை. ஒன்று மீது இறங்கினால் பக்கத்தில் " +"ஏதாவது காலி ஓட்டில் பச்சை ஓடுகள் உருவாக்கப்படும். மற்றும் பச்சை ஓடுகள் சுவர்களாகும்." + +#. TRANSLATORS: pop means vanish and Emy drowns (you loose) +#: menus.h:119 +msgid "" +"You can ride on the pink floating boats to get across water. They'll pop " +"if you try and float off the edge of the screen though, so look where " +"you're going." +msgstr "" +"நீங்கள் பிங்க் படகுகளில் ஏறி தண்ணீரை கடந்து போகலாம். ஆனால் திரை ஓரம் வந்துவிட்டால் அவை " +"உடைந்து விடும். அதனால எங்க போறோம்னு பாருங்க." + +#: menus.h:121 +msgid "The blue lifts go up or down when you land on them." +msgstr "நீல ஓடுகள் மேல கால் வச்சா அவை மேல அல்லது கீழே போகும்.." + +#: menus.h:127 +msgid "" +"The spiky anti-ice pickups turn icy tiles into blue ones. They get used " +"automatically when you land on ice." +msgstr "" +"முள் உள்ள ஆன்டி ஐஸ் தூக்கிகள் ஐஸ் ஓடுகளை நீல ஓடுகளாக்கும். அவை நீங்கள் ஐஸ் மேல குதிச்சா " +"தானாக பயன்படும்." + +#. TRANSLATORS: Normally you jump from one plate to another. The golden jump (a +#. pickup) allows you to jump and land on the *same* plate +#: menus.h:131 +msgid "" +"Collecting the golden jump pickups will allow you to do a big vertical " +"jump. Try it out on different types of tiles. Use the space bar or " +"return key to jump. Or click on the tile you're currently on with the mouse." +msgstr "" +"தங்க நிற குதி தூக்கிகளை சேகரித்தால் அவை நீங்கள் பெரிய உயரமான குதி போட " +"அனுமதிக்கும். வித்தியாசமான ஓடுகளை முயற்சி பண்ணி பாருங்க. என்டர் விசை அல்லது " +"ஸ்பேஸ் விசைகளை பயன்படுத்துங்க. அல்லது நீங்க இப்ப இருக்கும் ஓடு மேல சொடுக்குங்க." + +#: menus.h:136 +msgid "" +"Map Screen:|You can choose which level to attempt next from the map " +"screen. Silver levels are ones you've cleared. Black levels are ones " +"you haven't completed yet, but are available to play." +msgstr "" +"இயல்பட திரை:| நீங்கள் எந்த மட்டம் அடுத்து போகலாம்னு வரைபடத்திலிருந்து தேர்ந்தெடுக்கலாம். " +"வெள்ளி மட்டம் நீங்க முடிச்சவை. கருப்பு முடியாதது, நீங்க விளையாட கிடைப்பது." + +#. TRANSLATORS: Levels are depicted as black balls. Once you passed them, they +#. turn silver. If you reached the par, they turn golden (with a crown), and if +#. you beat the par, they turn their shape/color once more +#: menus.h:142 +msgid "" +"New feature unlocked!|Each level has an efficiency target for you to try " +"and beat. Every move you make and each non-green tile you destroy counts " +"against you. Why not try replaying some levels and going for gold?" +msgstr "" +"புதிய சிறப்பு அம்சம் திறக்கப்பட்டது!| ஒவ்வொரு மட்டத்துக்கும் ஒரு செயல் திறன் இலக்கு உண்டு. " +"அதை முயற்சி பண்ணி கடக்கணும். நீங்கள் பண்ணும் ஒவ்வொரு நகர்வும் உடைக்கும் பச்சையில்லாத " +"கல்லும் கணக்கில வரும். சில மட்டங்களை திருப்பியும் ஆடி தங்கம் வாங்கலாமே?" + +#: menus.h:147 +msgid "" +"Thanks for playing this little game. I hope you enjoy it! -- -- " +"All content is Copyright 2005 Tom Beaumont email: tombeaumont@yahoo.com " +"Any constructive criticism gratefully received!" +msgstr "" +"இந்த சின்ன விளையாட்டை ஆடியதுக்கு நன்றி. ஜாலியா இருந்ததுன்னு நினைக்கிறேன். -- " +"-- அனைத்தும் பதிப்புரிமை 2005 டாம் பியோமௌன் மின்னஞ்சல் tombeaumont@yahoo.com " +"ஏதாவது நல்ல விமரிசனம் இருந்தா நன்றியோட வரவேற்போம்!" + +#. TRANSLATORS: This string is copied twice into the POT file to workaround a +#. gettext limitation (no macro expansion). The extracted string "Welcome to " +#. will not be used. +#: menus.h:153 +msgid "Welcome to " +msgstr "நல்வரவு!" + +#: menus.h:199 +msgid "Info:" +msgstr "" + +#: menus.h:231 +msgid "Press any key" +msgstr "ஏதாவது விசையை அழுத்துங்க" + +#. TRANSLATORS: This specifies how the text in the help dialog should +#. be aligned. Do *not* translate the text itself but use one of "left", +#. "center" or "right" (untranslated!). The default is "center". +#: menus.h:253 +msgid "text alignment" +msgstr "" + +#: menus.h:339 +#, c-format +msgid "Help (Page --)" +msgstr "உதவி (பக்கம் --)" + +#: menus.h:341 +#, c-format +msgid "Help (Page %d/%d)" +msgstr "உதவி (பக்கம் %d/%d)" + +#: menus.h:428 +msgid "Resume" +msgstr "மீண்டும் தொடர்க" + +#: menus.h:429 +msgid "Restart Level" +msgstr "மட்டத்தை மீட்டமை" + +#: menus.h:430 +msgid "Return to Map" +msgstr "படத்துக்கு திரும்புக" + +#: menus.h:431 +msgid "Continue" +msgstr "தொடர்க" + +#: menus.h:432 +msgid "Toggle Fullscreen" +msgstr "முழுத்திரைக்கு மாற்று" + +#: menus.h:433 menus.h:1108 +msgid "Options" +msgstr "தேர்வுகள்" + +#: menus.h:434 +msgid "Quit" +msgstr "வெளிச்செல்" + +#: menus.h:435 +msgid "Yes" +msgstr "ஆம்" + +#: menus.h:436 +msgid "No" +msgstr "இல்லை" + +#: menus.h:437 +msgid "Return to Title" +msgstr "தலைப்புக்கு திரும்புக" + +#: menus.h:438 +msgid "Help" +msgstr "உதவி" + +#: menus.h:439 +msgid "Start New Game" +msgstr "புதிய விளையாட்டை துவக்குக" + +#: menus.h:440 +msgid "Yes, really delete it!" +msgstr "ஆம், உண்மையாக நீக்குக!" + +#: menus.h:441 +msgid "Don't do it!" +msgstr "ஓ, செய்யாதே!" + +#: menus.h:442 +msgid "Undo Last Move" +msgstr "கடைசி நகர்த்தலை செயல் நீக்கு" + +#: menus.h:443 +msgid "OK" +msgstr "சரி" + +#: menus.h:444 +msgid "View Credits Sequence" +msgstr "நன்றிகள் காட்சி வரிசையில்" + +#: menus.h:576 +msgid "Emi can't swim..." +msgstr "எமியால் நீந்த முடியாது..." + +#: menus.h:615 +#, c-format +msgid "New Best Score: %d Par Score: %d Par Beaten!" +msgstr "புதிய சிறந்த மதிப்பெண்: %d சராசரி மதிப்பெண்: %d சராசரி கடக்கப்பட்டது!" + +#: menus.h:617 +#, c-format +msgid "New Best Score: %d Par Score: %d" +msgstr "புதிய சிறந்த மதிப்பெண்: %d சராசரி மதிப்பெண்: %d" + +#: menus.h:619 +#, c-format +msgid "Score: %d Previous Best: %d Par Score: %d" +msgstr "மதிப்பெண்: %d முந்தைய சிறந்த: %d சராசரி மதிப்பெண்: %d" + +#: menus.h:621 +msgid "Well Done! Level Completed!" +msgstr "நன்கு முடிந்தது! நிலை நிறைவேறியது!" + +#: menus.h:700 +msgid " Very Well Done! " +msgstr " மிகச் சிறப்பாக முடித்தீர்கள்! " + +#: menus.h:705 +msgid "All Levels Cleared!" +msgstr "அனைத்தும் மட்டங்கள் நீக்கப்பட்டுவிட்டன!" + +#: menus.h:709 +msgid "Not a single green hexagon is left unbroken." +msgstr "ஒரு தனி பச்சை ஓடும் உடையாமல் இல்லை " + +#: menus.h:711 +msgid "Truly, you are a master of hexagon hopping!" +msgstr "உண்மையில் அறுகோண தாவலில் நீங்கள் ஒரு மேதை!" + +#: menus.h:715 +msgid "Credits" +msgstr "நன்றிகள்" + +#: menus.h:716 +msgid ".add. +# The first line of this file must read: +# PO4A-HEADER:mode=after;position=AUTHOR;beginboundary=\.SH +# Please *only* replace the word "AUTHOR" by the translation of this word to +# your language. For more details read po4a(7). +# +# The manpage uses \\(hy. This is a hyphen sign (looks like -) and is used to +# connect two words such as "real-time". If you use "-" it will be wrongly +# rendered by po4a as minus sign (\- in output). See also +# http://lists.debian.org/debian-devel/2003/03/msg01481.html. If you read +# a message containing \\(hy consider it as usual hyphen. In your translation +# you should also replace all hyphens by \\(hy. Commands, file names, ... never +# contain hyphens but 7 bit minus signs! +# +# There is also a desktop file hex-a-hop.desktop containing two translatable +# strings. Please update it as well. +# +# Yuri Kozlov , 2007. +msgid "" +msgstr "" +"Project-Id-Version: 0.0.20070315\n" +"Report-Msgid-Bugs-To: hex-a-hop@packages.debian.org\n" +"POT-Creation-Date: 2007-09-20 00:13+0200\n" +"PO-Revision-Date: 2007-08-29 21:00+0400\n" +"Last-Translator: Yuri Kozlov \n" +"Language-Team: Russian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +# Using only two plural forms simplifies translation a little bit +# and works here ... +#: hex_puzzzle.cpp:1558 +#, c-format +msgid "Complete 1 more level to unlock!" +msgid_plural "Complete %d more levels to unlock!" +msgstr[0] "Осталось пройти ещё один!" +msgstr[1] "Нужно пройти ещё %d!" + +#: hex_puzzzle.cpp:1565 +msgid "<>" +msgstr "<<БЕЗ ИМЕНИ>>" + +#. TRANSLATORS: Anti-Ice are pickups, which turn ice plates into solid +#. plates once you step on them. Each pickup changes one ice plate +#: hex_puzzzle.cpp:2655 +#, c-format +msgid "Anti-Ice: %d" +msgstr "Анти-лёд: %d" + +#: hex_puzzzle.cpp:2656 +#, c-format +msgid "Jumps: %d" +msgstr "Прыжки: %d" + +#: hex_puzzzle.cpp:2657 +#, c-format +msgid "Score: %d (%d)" +msgstr "Счёт: %d (%d)" + +#. TRANSLATORS: Par is similar to golf, a pre defined score which you +#. can attempt to beat +#: hex_puzzzle.cpp:2660 +#, c-format +msgid "Par: %d" +msgstr "Номинал: %d" + +#: hex_puzzzle.cpp:2661 +#, c-format +msgid "Diff: %d" +msgstr "Разность: %d" + +#: hex_puzzzle.cpp:2664 +#, c-format +msgid " Par: %d Current: %d" +msgstr " Номинал: %d Текущий: %d" + +#: hex_puzzzle.cpp:2667 +#, c-format +msgid " Anti-Ice: %d" +msgstr " Анти-лёд: %d" + +#: hex_puzzzle.cpp:2669 +#, c-format +msgid " Jumps: %d" +msgstr " Прыжки: %d" + +#: hex_puzzzle.cpp:2675 +#, c-format +msgid "Points: %d" +msgstr "Очки: %d" + +#: hex_puzzzle.cpp:2676 +#, c-format +msgid "Discovered: %d%% (%d/%d)" +msgstr "Открыто: %d%% (%d/%d)" + +#: hex_puzzzle.cpp:2677 +#, c-format +msgid "Complete: %d%% (%d)" +msgstr "Выполнено: %d%% (%d)" + +#: hex_puzzzle.cpp:2678 +#, c-format +msgid "Mastered: %d%% (%d)" +msgstr "Мастерски: %d%% (%d)" + +#: hex_puzzzle.cpp:2681 +#, c-format +msgid " %d%% Mastered" +msgstr " мастерски %d%%" + +#: hex_puzzzle.cpp:2683 +#, c-format +msgid " %d%% Complete" +msgstr " %d%% выполнено" + +#: hex_puzzzle.cpp:2735 +#, c-format +msgid "Best:% 3d" +msgstr "Лучший:% 3d" + +#: hex_puzzzle.cpp:2736 +#, c-format +msgid "Par:% 3d" +msgstr "Номинал:% 3d" + +#: hex_puzzzle.cpp:2739 +msgid "Completed" +msgstr "Пройден" + +#: hex_puzzzle.cpp:2742 +msgid "Incomplete" +msgstr "Не пройден" + +#: hex_puzzzle.cpp:2783 menus.h:576 +msgid "Level Complete!" +msgstr "Уровень пройден!" + +#: hex_puzzzle.cpp:2899 +#, c-format +msgid "Special(%d,%d): %s (%d)" +msgstr "Специально(%d,%d): %s (%d)" + +#: hex_puzzzle.cpp:2899 +msgid "" +msgstr "<Нет>" + +#: hex_puzzzle.cpp:3044 +msgid "Select level" +msgstr "Выбрать уровень" + +#: hex_puzzzle.cpp:4097 +msgid "Save level" +msgstr "Сохранить уровень" + +#: hex_puzzzle.cpp:4103 +msgid "Open level" +msgstr "Открыть уровень" + +#: menus.h:90 +msgid "" +"Basic controls:|Move around with the keys Q,W,E,A,S,D or the numeric " +"keypad. Alternatively, you can use the mouse and click on the tile you'd " +"like to move to. Use 'U', backspace or the right mouse button to undo " +"mistakes. The 'Esc' key (or middle mouse button) brings up a menu from " +"which you can restart if you get stuck." +msgstr "" +"Управление:|Клавиши перемещения: Q,W,E,A,S,D или цифры на числовой " +"клавиатуре. Также можно использовать мышь и щёлкать по плитке, на которую " +"нужно переместиться. Чтобы вернуться назад при неверном ходе нажмите 'U', " +"backspace или правую клавишу мыши. По клавише 'Esc' (или средней кнопке " +"мыши) появляется меню, откуда можно начать заново, если ничего не получается." + +#: menus.h:94 +msgid "" +"Objective:|Your goal is to break all the green tiles. You mainly do this " +"by jumping on them. They will crack when you land on them, and only " +"disintegrate when you jump off. Try not to trap yourself!" +msgstr "" +"Цель:|Нужно сломать все зелёные плитки. Для этого в большинстве случаев " +"нужно прыгнуть на них. Он трескаются, если на них наступить и сломаются " +"окончательно, когда вы с них спрыгните. Не загоните сами себя в ловушку!" + +#: menus.h:96 +msgid "" +"The coloured walls flatten themselves when there are no matching coloured " +"tiles remaining." +msgstr "" +"Цветные стены превратятся в плитки, когда не останется ни одной плитки того " +"же цвета." + +#: menus.h:98 +msgid "" +"You can bounce on the purple trampoline tiles to get around. But try not " +"to fall in the water. If you do, remember you can undo with 'U', " +"backspace or the right mouse button!" +msgstr "" +"Фиолетовые плитки используются для прыжков. Осторожней, не упадите в " +"воду. Если это случилось, можно отменить последний ход, нажав клавишу " +"'U', backspace или правую кнопку мыши!" + +#: menus.h:100 +msgid "" +"A red spinner tile will rotate the pieces around it when you step on it." +msgstr "" +"Если наступить на красную плитку со стрелкой, то все плитки вокруг неё " +"повернутся." + +#: menus.h:104 +msgid "" +"You don't need to destroy blue tiles to complete the level. But they'll " +"turn green when you step off them, and you know what you have to do to " +"green tiles..." +msgstr "" +"Вам не нужно уничтожать бирюзовые плитки чтобы пройти уровень. Но они " +"становятся зелёными, если на них наступить, а вы, конечно, знаете что " +"придётся делать с зелёными плитками..." + +#: menus.h:108 +msgid "" +"Yellow laser tiles fire when you step on them. Shooting other laser tiles " +"is more destructive." +msgstr "" +"Жёлтые плитки стреляют лазером, если на них наступить. А если попасть в " +"другую плитку с лазером, то взрыв будет ещё больше." + +#: menus.h:110 +msgid "Ice is slippery! Please be careful!!" +msgstr "Лёд очень скользкий! Осторожней!!" + +#: menus.h:114 +msgid "" +"The dark grey tiles with arrows on are builders. Landing on one creates " +"green tiles in any adjacent empty tile, and turns green tiles into walls." +msgstr "" +"Тёмно-серые плитки со стрелой для строительства. В пустой плитке рядом с " +"местом, где падает стрела создаётся зелёная плитка, а зелёные плитки " +"становятся стенами." + +#. TRANSLATORS: pop means vanish and Emy drowns (you loose) +#: menus.h:119 +msgid "" +"You can ride on the pink floating boats to get across water. They'll pop " +"if you try and float off the edge of the screen though, so look where " +"you're going." +msgstr "" +"Вы можете плавать по воде на красных плотах. Они тонут когда достигают " +"края экрана, поэтому смотрите куда плывёте." + +#: menus.h:121 +msgid "The blue lifts go up or down when you land on them." +msgstr "Синие лифты переместят вас вверх и вниз." + +#: menus.h:127 +msgid "" +"The spiky anti-ice pickups turn icy tiles into blue ones. They get used " +"automatically when you land on ice." +msgstr "" +"Подобранный острый анти-лёд превращает ледяные плитки в бирюзовые. Он " +"применяется автоматически сразу как вы наступаете на лёд." + +#. TRANSLATORS: Normally you jump from one plate to another. The golden jump (a +#. pickup) allows you to jump and land on the *same* plate +#: menus.h:131 +msgid "" +"Collecting the golden jump pickups will allow you to do a big vertical " +"jump. Try it out on different types of tiles. Use the space bar or " +"return key to jump. Or click on the tile you're currently on with the mouse." +msgstr "" +"Подобранные золотинки для прыжков позволяют совершать большие вертикальные " +"прыжки. Попробуйте их на различных типах плиток. Для прыжка " +"используйте клавишу пробела или ввода. Или щёлкните мышкой по плитке, на " +"которой стоите." + +#: menus.h:136 +msgid "" +"Map Screen:|You can choose which level to attempt next from the map " +"screen. Silver levels are ones you've cleared. Black levels are ones " +"you haven't completed yet, but are available to play." +msgstr "" +"Карта уровней:|Здесь вы можете выбрать следующий уровень для " +"прохождения. Серебристым цветом отмечены пройденные уровни. Чёрным " +"цветом отмечены не пройденные и доступные для игры." + +#. TRANSLATORS: Levels are depicted as black balls. Once you passed them, they +#. turn silver. If you reached the par, they turn golden (with a crown), and if +#. you beat the par, they turn their shape/color once more +#: menus.h:142 +msgid "" +"New feature unlocked!|Each level has an efficiency target for you to try " +"and beat. Every move you make and each non-green tile you destroy counts " +"against you. Why not try replaying some levels and going for gold?" +msgstr "" +"Появилось новое свойство!|Каждый уровень степень эффективности прохождения, " +"которую вы можете побить. За каждый сделанный ход и за каждую не зелёную " +"разрушенную плитку снимаются очки. Почему бы вам не пройти уровни ещё раз " +"и не обратить их в золото?" + +#: menus.h:147 +msgid "" +"Thanks for playing this little game. I hope you enjoy it! -- -- " +"All content is Copyright 2005 Tom Beaumont email: tombeaumont@yahoo.com " +"Any constructive criticism gratefully received!" +msgstr "" +"Спасибо, что поиграли в эту маленькую игру. Надеюсь, вам понравилось! " +"-- -- Copyright 2005 Tom Beaumont email: tombeaumont@yahoo.com Любая " +"конструктивная критика с благодарностью принимается!" + +#. TRANSLATORS: This string is copied twice into the POT file to workaround a +#. gettext limitation (no macro expansion). The extracted string "Welcome to " +#. will not be used. +#: menus.h:153 +msgid "Welcome to " +msgstr "Welcome to " + +#: menus.h:199 +msgid "Info:" +msgstr "" + +#: menus.h:231 +msgid "Press any key" +msgstr "Нажмите любую клавишу" + +#. TRANSLATORS: This specifies how the text in the help dialog should +#. be aligned. Do *not* translate the text itself but use one of "left", +#. "center" or "right" (untranslated!). The default is "center". +#: menus.h:253 +msgid "text alignment" +msgstr "" + +#: menus.h:339 +#, c-format +msgid "Help (Page --)" +msgstr "Помощь (Страница --)" + +#: menus.h:341 +#, c-format +msgid "Help (Page %d/%d)" +msgstr "Помощь (Страница %d/%d)" + +#: menus.h:428 +msgid "Resume" +msgstr "Продолжить" + +#: menus.h:429 +msgid "Restart Level" +msgstr "Уровень заново" + +#: menus.h:430 +msgid "Return to Map" +msgstr "Вернуться на карту" + +#: menus.h:431 +msgid "Continue" +msgstr "Продолжить" + +#: menus.h:432 +msgid "Toggle Fullscreen" +msgstr "На полный экран" + +#: menus.h:433 menus.h:1108 +msgid "Options" +msgstr "Параметры" + +#: menus.h:434 +msgid "Quit" +msgstr "Выход" + +#: menus.h:435 +msgid "Yes" +msgstr "Да" + +#: menus.h:436 +msgid "No" +msgstr "Нет" + +#: menus.h:437 +msgid "Return to Title" +msgstr "В главное меню" + +#: menus.h:438 +msgid "Help" +msgstr "Помощь" + +#: menus.h:439 +msgid "Start New Game" +msgstr "Начать новую игру" + +#: menus.h:440 +msgid "Yes, really delete it!" +msgstr "Да, удалить!" + +#: menus.h:441 +msgid "Don't do it!" +msgstr "Нет, не надо!" + +#: menus.h:442 +msgid "Undo Last Move" +msgstr "Отменить последний ход" + +#: menus.h:443 +msgid "OK" +msgstr "OK" + +#: menus.h:444 +msgid "View Credits Sequence" +msgstr "Об авторах" + +#: menus.h:576 +msgid "Emi can't swim..." +msgstr "Эми не умеет плавать..." + +#: menus.h:615 +#, c-format +msgid "New Best Score: %d Par Score: %d Par Beaten!" +msgstr "Новый рекорд: %d Номинал: %d Номинал побит!" + +#: menus.h:617 +#, c-format +msgid "New Best Score: %d Par Score: %d" +msgstr "Новый рекорд: %d Номинал: %d" + +#: menus.h:619 +#, c-format +msgid "Score: %d Previous Best: %d Par Score: %d" +msgstr "Очки: %d Лучший предыдущий: %d Номинал: %d" + +#: menus.h:621 +msgid "Well Done! Level Completed!" +msgstr "Хорошо! Уровень пройден!" + +#: menus.h:700 +msgid " Very Well Done! " +msgstr " Очень хорошо! " + +#: menus.h:705 +msgid "All Levels Cleared!" +msgstr "Все уровни очищены!" + +#: menus.h:709 +msgid "Not a single green hexagon is left unbroken." +msgstr "Ни один зелёный шестиугольник не остался целым." + +#: menus.h:711 +msgid "Truly, you are a master of hexagon hopping!" +msgstr "Несомненно, вы мастер в прыжках по шестиугольникам!" + +#: menus.h:715 +msgid "Credits" +msgstr "Создатели" + +#: menus.h:716 +msgid ", 2007. +# This file is distributed under the same license as the hex-a-hop package. +# +# Translators: A few hints: +# +# Support for translations is still experimental. You may find a few minor +# flaws. If you do not understand a message please ask to allow us adding +# helpful comments. +# +# The English help messages contain unusual spaces. " " is internally +# replaced by a newline, " " starts a new paragraph. You may ignore +# these spaces for now. You can also use "\n" (or " ") in translations to +# force a linebreak and "\n\n" (or " ") to start a new paragraph. It is +# suggested not to use fixed line breaks in paragraphs as this depends on +# font settings. You should also avoid " " or " " as this is unusual. +# +# The manpage is also created from this file. If you want to add an extra +# paragraph, e.g. describing your copyright for the translation or other +# language dependent information, create a file named hex-a-hop..add. +# The first line of this file must read: +# PO4A-HEADER:mode=after;position=AUTHOR;beginboundary=\.SH +# Please *only* replace the word "AUTHOR" by the translation of this word to +# your language. For more details read po4a(7). +# +# The manpage uses \\(hy. This is a hyphen sign (looks like -) and is used to +# connect two words such as "real-time". If you use "-" it will be wrongly +# rendered by po4a as minus sign (\- in output). See also +# http://lists.debian.org/debian-devel/2003/03/msg01481.html. If you read +# a message containing \\(hy consider it as usual hyphen. In your translation +# you should also replace all hyphens by \\(hy. Commands, file names, ... never +# contain hyphens but 7 bit minus signs! +# +# There is also a desktop file hex-a-hop.desktop containing two translatable +# strings. Please update it as well. +msgid "" +msgstr "" +"Project-Id-Version: hex-a-hop 0.0.20070315-4\n" +"Report-Msgid-Bugs-To: hex-a-hop@packages.debian.org\n" +"POT-Creation-Date: 2007-09-20 00:13+0200\n" +"PO-Revision-Date: 2007-09-20 00:34+0200\n" +"Last-Translator: Helge Kreutzmann \n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: hex_puzzzle.cpp:1558 +#, c-format +msgid "Complete 1 more level to unlock!" +msgid_plural "Complete %d more levels to unlock!" +msgstr[0] "Einen weiteren Level zum Entsperren abschlieen!" +msgstr[1] "%d weitere Level zum Entsperren abschlieen!" + +#: hex_puzzzle.cpp:1565 +msgid "<>" +msgstr "<>" + +#. TRANSLATORS: Anti-Ice are pickups, which turn ice plates into solid +#. plates once you step on them. Each pickup changes one ice plate +#: hex_puzzzle.cpp:2655 +#, c-format +msgid "Anti-Ice: %d" +msgstr "Anti-Eis: %d" + +#: hex_puzzzle.cpp:2656 +#, c-format +msgid "Jumps: %d" +msgstr "Sprnge: %d" + +#: hex_puzzzle.cpp:2657 +#, c-format +msgid "Score: %d (%d)" +msgstr "Punktzahl: %d (%d)" + +#. TRANSLATORS: Par is similar to golf, a pre defined score which you +#. can attempt to beat +#: hex_puzzzle.cpp:2660 +#, c-format +msgid "Par: %d" +msgstr "Erwartet: %d" + +#: hex_puzzzle.cpp:2661 +#, c-format +msgid "Diff: %d" +msgstr "Diff: %d" + +#: hex_puzzzle.cpp:2664 +#, c-format +msgid " Par: %d Current: %d" +msgstr " Erwartet: %d Derzeit: %d" + +#: hex_puzzzle.cpp:2667 +#, c-format +msgid " Anti-Ice: %d" +msgstr " Anti-Eis: %d" + +#: hex_puzzzle.cpp:2669 +#, c-format +msgid " Jumps: %d" +msgstr " Sprnge: %d" + +#: hex_puzzzle.cpp:2675 +#, c-format +msgid "Points: %d" +msgstr "Punkte: %d" + +#: hex_puzzzle.cpp:2676 +#, c-format +msgid "Discovered: %d%% (%d/%d)" +msgstr "Entdeckt: %d%% (%d/%d)" + +#: hex_puzzzle.cpp:2677 +#, c-format +msgid "Complete: %d%% (%d)" +msgstr "Komplett: %d%% (%d)" + +#: hex_puzzzle.cpp:2678 +#, c-format +msgid "Mastered: %d%% (%d)" +msgstr "Gemeistert: %d%% (%d)" + +#: hex_puzzzle.cpp:2681 +#, c-format +msgid " %d%% Mastered" +msgstr " %d%% gemeistert" + +#: hex_puzzzle.cpp:2683 +#, c-format +msgid " %d%% Complete" +msgstr " %d%% komplett" + +#: hex_puzzzle.cpp:2735 +#, c-format +msgid "Best:% 3d" +msgstr "Bestwert:% 3d" + +#: hex_puzzzle.cpp:2736 +#, c-format +msgid "Par:% 3d" +msgstr "Erwartet:% 3d" + +#: hex_puzzzle.cpp:2739 +msgid "Completed" +msgstr "Erledigt" + +#: hex_puzzzle.cpp:2742 +msgid "Incomplete" +msgstr "Nicht erledigt" + +#: hex_puzzzle.cpp:2783 menus.h:576 +msgid "Level Complete!" +msgstr "Level erledigt!" + +#: hex_puzzzle.cpp:2899 +#, c-format +msgid "Special(%d,%d): %s (%d)" +msgstr "Spezial(%d,%d): %s (%d)" + +#: hex_puzzzle.cpp:2899 +msgid "" +msgstr "" + +#: hex_puzzzle.cpp:3044 +msgid "Select level" +msgstr "Level auswhlen" + +#: hex_puzzzle.cpp:4097 +msgid "Save level" +msgstr "Level speichern" + +#: hex_puzzzle.cpp:4103 +msgid "Open level" +msgstr "Level ffnen" + +#: menus.h:90 +msgid "" +"Basic controls:|Move around with the keys Q,W,E,A,S,D or the numeric " +"keypad. Alternatively, you can use the mouse and click on the tile you'd " +"like to move to. Use 'U', backspace or the right mouse button to undo " +"mistakes. The 'Esc' key (or middle mouse button) brings up a menu from " +"which you can restart if you get stuck." +msgstr "" +"Grundlegende Steuerung:|Sie knnen Ihre Figur mit den Tasten Q,W,E,A,S,D " +"oder mit dem numerischen Eingabefeld bewegen. Alternativ knnen Sie die Maus " +"verwenden und auf die Platte klicken, zu der Sie die Figur bewegen mchten.\n" +"\n" +"Verwenden Sie U, die Rckschritttaste oder die rechte Maustaste, um Fehler " +"rckgngig zu machen.\n" +"\n" +"Die Esc-Taste (oder die mittlere Maustaste) holt ein Men hervor, in dem " +"Sie den Level neu starten knnen, wenn Sie festsitzen." + +#: menus.h:94 +msgid "" +"Objective:|Your goal is to break all the green tiles. You mainly do this " +"by jumping on them. They will crack when you land on them, and only " +"disintegrate when you jump off. Try not to trap yourself!" +msgstr "" +"Ziel:|Ihr Ziel besteht darin, alle grnen Platten zu zerstren.\n" +"\n" +"Sie erreichen dies hauptschlich, indem Sie auf die Platten draufspringen.\n" +"\n" +"Sie werden brechen, wenn Sie auf ihnen landen, und sich erst auflsen, wenn " +"Sie herunterspringen.\n" +"\n" +"Sperren Sie sich nicht selber ein!" + +#: menus.h:96 +msgid "" +"The coloured walls flatten themselves when there are no matching coloured " +"tiles remaining." +msgstr "" +"Die farbigen Mauern werden platt, sobald es keine passenden farbigen Platten " +"mehr gibt." + +#: menus.h:98 +msgid "" +"You can bounce on the purple trampoline tiles to get around. But try not " +"to fall in the water. If you do, remember you can undo with 'U', " +"backspace or the right mouse button!" +msgstr "" +"Sie knnen auf die violetten Trampolin-Platten springen, um sich " +"herumzubewegen.\n" +"\n" +"Vermeiden Sie aber, ins Wasser zu fallen.\n" +"\n" +"Falls das passiert, knnen Sie es mit U, der Rckschritttaste oder der " +"rechten Maustaste rckgngig machen." + +#: menus.h:100 +msgid "" +"A red spinner tile will rotate the pieces around it when you step on it." +msgstr "" +"Ein rote Kreiselplatte rotiert die Stcke um sich herum, wenn Sie drauf " +"treten." + +#: menus.h:104 +msgid "" +"You don't need to destroy blue tiles to complete the level. But they'll " +"turn green when you step off them, and you know what you have to do to " +"green tiles..." +msgstr "" +"Sie brauchen blaue Platten nicht zu zerstren, um den Level abzuschlieen. " +"Allerdings werden Sie grn, wenn Sie von ihnen runter gehen, und Sie wissen, " +"was Sie mit grnen Platten machen mssen ..." + +#: menus.h:108 +msgid "" +"Yellow laser tiles fire when you step on them. Shooting other laser tiles " +"is more destructive." +msgstr "" +"Gelbe Laser-Platten feuern, wenn Sie darauf treten. Auf andere Laser-Platten " +"zu schieen zerstrt mehr." + +#: menus.h:110 +msgid "Ice is slippery! Please be careful!!" +msgstr "Eis ist glatt! Bitte vorsichtig sein!!" + +#: menus.h:114 +msgid "" +"The dark grey tiles with arrows on are builders. Landing on one creates " +"green tiles in any adjacent empty tile, and turns green tiles into walls." +msgstr "" +"Die dunkelgrauen Platten mit Pfeilen sind Bauplatten. Landen Sie auf einer, " +"werden grne Platten in allen anliegenden leeren Position erzeugt, und grne " +"Platten werden zu Mauern." + +#. TRANSLATORS: pop means vanish and Emy drowns (you loose) +#: menus.h:119 +msgid "" +"You can ride on the pink floating boats to get across water. They'll pop " +"if you try and float off the edge of the screen though, so look where " +"you're going." +msgstr "" +"Sie knnen auf rosa schwimmenden Booten ber das Wasser gelangen. Sie lsen " +"sich aber auf, falls Sie versuchen, ber den Rand des Bildschirms " +"hinauszuschwimmen, passen Sie also auf, wo die Reise hingeht." + +#: menus.h:121 +msgid "The blue lifts go up or down when you land on them." +msgstr "Die blauen Fahrsthle fahren hoch oder runter, wenn Sie darauf landen." + +#: menus.h:127 +msgid "" +"The spiky anti-ice pickups turn icy tiles into blue ones. They get used " +"automatically when you land on ice." +msgstr "" +"Die Anti-Eis-Spikes zum Einsammeln verwandeln Eisplatten in blaue Platten. " +"Sie werden automatisch verwendet, wenn Sie auf Eis landen." + +#. TRANSLATORS: Normally you jump from one plate to another. The golden jump (a +#. pickup) allows you to jump and land on the *same* plate +#: menus.h:131 +msgid "" +"Collecting the golden jump pickups will allow you to do a big vertical " +"jump. Try it out on different types of tiles. Use the space bar or " +"return key to jump. Or click on the tile you're currently on with the mouse." +msgstr "" +"Durch Einsammeln des goldenen Sprungs knnen Sie einen groen vertikalen " +"Sprung durchfhren. Probieren Sie ihn auf verschiedenartigen Platten aus. " +"Verwenden Sie die Leertaste oder die Eingabetaste, um zu springen. Oder " +"klicken Sie mit der Maus auf die Platte, auf der Sie gerade sind." + +#: menus.h:136 +msgid "" +"Map Screen:|You can choose which level to attempt next from the map " +"screen. Silver levels are ones you've cleared. Black levels are ones " +"you haven't completed yet, but are available to play." +msgstr "" +"Karten-Bildschirm:|Sie knnen den Level vom Kartenbildschirm aussuchen, den " +"Sie als nchstes versuchen wollen.\n" +"\n" +"Die Level in Silber haben Sie bereits geschafft.\n" +"\n" +"Die schwarzen Level haben Sie noch nicht beendet, knnen aber gespielt " +"werden." + +#. TRANSLATORS: Levels are depicted as black balls. Once you passed them, they +#. turn silver. If you reached the par, they turn golden (with a crown), and if +#. you beat the par, they turn their shape/color once more +#: menus.h:142 +msgid "" +"New feature unlocked!|Each level has an efficiency target for you to try " +"and beat. Every move you make and each non-green tile you destroy counts " +"against you. Why not try replaying some levels and going for gold?" +msgstr "" +"Neue Funktion freigeschaltet!|Jeder Level hat ein Effizienz-Ziel, das Sie " +"versuchen knnen, zu schlagen.\n" +"\n" +"Jede Bewegung die Sie durchfhren und jede nicht-grne Platte, die Sie " +"zerstren, zhlt gegen Sie.\n" +"\n" +"Warum versuchen Sie nicht, einige Level noch einmal zu spielen und auf Gold " +"zu bekommen?" + +#: menus.h:147 +msgid "" +"Thanks for playing this little game. I hope you enjoy it! -- -- " +"All content is Copyright 2005 Tom Beaumont email: tombeaumont@yahoo.com " +"Any constructive criticism gratefully received!" +msgstr "" +"Vielen Dank, dass Sie dieses kleine Spiel gespielt haben. Ich hoffe, Sie " +"hatten Ihren Spa!\n" +"\n" +"-- --\n" +"\n" +"Aller Inhalt ist (C) 2005 Tom Beaumont\n" +"E-Mail: tombeaumont@yahoo.com\n" +"\n" +"Jede konstruktive Kritik wird gerne angenommen!" + +#. TRANSLATORS: This string is copied twice into the POT file to workaround a +#. gettext limitation (no macro expansion). The extracted string "Welcome to " +#. will not be used. +#: menus.h:153 +msgid "Welcome to " +msgstr "Welcome to " + +#: menus.h:199 +msgid "Info:" +msgstr "Info:" + +#: menus.h:231 +msgid "Press any key" +msgstr "Beliebige Taste drcken" + +#. TRANSLATORS: This specifies how the text in the help dialog should +#. be aligned. Do *not* translate the text itself but use one of "left", +#. "center" or "right" (untranslated!). The default is "center". +#: menus.h:253 +msgid "text alignment" +msgstr "center" + +#: menus.h:339 +#, c-format +msgid "Help (Page --)" +msgstr "Hilfe (Seite --)" + +#: menus.h:341 +#, c-format +msgid "Help (Page %d/%d)" +msgstr "Hilfe (Seite %d/%d)" + +#: menus.h:428 +msgid "Resume" +msgstr "Fortfahren" + +#: menus.h:429 +msgid "Restart Level" +msgstr "Level neu starten" + +#: menus.h:430 +msgid "Return to Map" +msgstr "Zur Karte zurckkehren" + +#: menus.h:431 +msgid "Continue" +msgstr "Fortfahren" + +#: menus.h:432 +msgid "Toggle Fullscreen" +msgstr "Vollbild umschalten" + +#: menus.h:433 menus.h:1108 +msgid "Options" +msgstr "Optionen" + +#: menus.h:434 +msgid "Quit" +msgstr "Beenden" + +#: menus.h:435 +msgid "Yes" +msgstr "Ja" + +#: menus.h:436 +msgid "No" +msgstr "Nein" + +#: menus.h:437 +msgid "Return to Title" +msgstr "Zum Titel zurckkehren" + +#: menus.h:438 +msgid "Help" +msgstr "Hilfe" + +#: menus.h:439 +msgid "Start New Game" +msgstr "Neues Spiel starten" + +#: menus.h:440 +msgid "Yes, really delete it!" +msgstr "Ja, lsche es wirklich!" + +#: menus.h:441 +msgid "Don't do it!" +msgstr "Lass das!" + +#: menus.h:442 +msgid "Undo Last Move" +msgstr "Letzte Bewegung rckgngig" + +#: menus.h:443 +msgid "OK" +msgstr "Ok" + +#: menus.h:444 +msgid "View Credits Sequence" +msgstr "Danksagungssequenz anschauen" + +#: menus.h:576 +msgid "Emi can't swim..." +msgstr "Emi kann nicht schwimmen ..." + +#: menus.h:615 +#, c-format +msgid "New Best Score: %d Par Score: %d Par Beaten!" +msgstr "Neue Bestpunktzahl: %d Erwartete Punktzahl: %d Erwartung geschlagen!" + +#: menus.h:617 +#, c-format +msgid "New Best Score: %d Par Score: %d" +msgstr "Neue Bestpunktzahl: %d Erwartete Punktzahl: %d" + +#: menus.h:619 +#, c-format +msgid "Score: %d Previous Best: %d Par Score: %d" +msgstr "Punktzahl: %d Bisherige Bestpunktzahl: %d Erwartete Punktzahl: %d" + +#: menus.h:621 +msgid "Well Done! Level Completed!" +msgstr "" +"Gut gemacht!\n" +"Level beendet!" + +#: menus.h:700 +msgid " Very Well Done! " +msgstr " Sehr gut gemacht!" + +#: menus.h:705 +msgid "All Levels Cleared!" +msgstr "Alle Level geschafft!" + +#: menus.h:709 +msgid "Not a single green hexagon is left unbroken." +msgstr "Kein einziges grnes Sechseck ist nicht gebrochen." + +#: menus.h:711 +msgid "Truly, you are a master of hexagon hopping!" +msgstr "Sie sind wirklich ein Meister des Sechseck-Springens!" + +#: menus.h:715 +msgid "Credits" +msgstr "Danksagungen" + +#: menus.h:716 +msgid " +# Licensed under the GPL, see /usr/share/common-licenses/GPL + +Index: hex-a-hop.svn/hex_puzzzle.cpp +=================================================================== +--- hex-a-hop.svn.orig/hex_puzzzle.cpp 2007-09-20 00:49:22.000000000 +0200 ++++ hex-a-hop.svn/hex_puzzzle.cpp 2007-09-20 00:49:25.000000000 +0200 +@@ -307,7 +307,6 @@ + + #define MAX_DIR 6 + +-SDL_Rect font[256]; + SDL_Rect tile[2][70]; + short tileOffset[2][70][2]; + int Peek(SDL_Surface* i, int x, int y) +@@ -338,45 +337,7 @@ + return false; + return true; + } +-void MakeFont() +-{ +- memset(font, 0, sizeof(font)); + +- int h = FONT_SPACING; +- int x=-1, y=0; +- for (int i=33; i<=127; i++) +- { +- do +- { +- x++; +- if (x>=fontImage->w) +- x=0, y+=h; +- if (y >= fontImage->h) +- return; +- if (y+h > fontImage->h) +- h = fontImage->h - y; +- } while(IsEmpty(fontImage, x, y, 1, h)); +- +- int w=1; +- while(!IsEmpty(fontImage, x+w, y, 1, h) && x+ww) +- w++; +- int h1=h; +- while (h1>1 && IsEmpty(fontImage, x, y+h1-1, w, 1)) +- h1--; +- font[i].x = x; +- font[i].y = y; +- font[i].w = w; +- font[i].h = h1; +- //printf("character %c: % 4d % 4d % 4d % 4d\n", i, x, y, w, h1); +- x+=w; +- } +- +- int i=' '; +- font[i].x = x; +- font[i].y = y; +- font[i].w = font['j'].w; +- font[i].h = 0; +-} + void MakeTileInfo() + { + for (int i=0; i<140; i++) +@@ -396,16 +357,6 @@ + } + } + +-void PrintRaw(int x, int y, const char * tmp) +-{ +- for (int i=0; tmp[i]; i++) +- { +- SDL_Rect dst = {x, y, 1, 1}; +- SDL_BlitSurface(fontImage, &font[tmp[i]], screen, &dst); +- x += font[tmp[i]].w + FONT_X_SPACING; +- } +-} +- + void ConvertToUTF8(const std::string &text_locally_encoded, char *text_utf8, size_t text_utf8_length) + { + // Is this portable? +@@ -441,14 +392,6 @@ + va_end( marker ); /* Reset variable arguments. */ + } + +-int FontWidth(const char * string) +-{ +- int w = 0; +- for (int i=0; string[i]; i++) +- w += font[string[i]].w + FONT_X_SPACING; +- return w; +-} +- + /// Prints a string right aligned so that it ends at (x,y) + // TODO: Check that the maximal text width is already set + void PrintR(int x, int y, const char * string, ...) +@@ -480,23 +423,6 @@ + msg.replace(msg.find(" "), 2, "\n"); + + Print_Pango_Aligned(x, y, width, msg, align); +- /* +- { +- char * end = split ? strstr(scan," ") : 0; +- if (!end) +- { +- PrintRaw(x - FontWidth(scan)/2, y, scan); +- break; +- } +- else +- { +- *end = '\0'; +- PrintRaw(x - FontWidth(scan)/2, y, scan); +- scan = end+2; +- y += FONT_SPACING; +- } +- } +- */ + } + + void PrintC(bool split, int x, int y, const char * string, ...) +@@ -4194,7 +4120,6 @@ + if (first) + { + first = false; +- MakeFont(); + MakeTileInfo(); + } + +Index: hex-a-hop.svn/menus.h +=================================================================== +--- hex-a-hop.svn.orig/menus.h 2007-09-20 00:49:22.000000000 +0200 ++++ hex-a-hop.svn/menus.h 2007-09-20 00:49:25.000000000 +0200 +@@ -478,8 +478,8 @@ + int y = r2.y + FONT_SPACING/2 + int(FONT_SPACING * 1.5) * o; + if (left_align) + { +- int x = r.x + font[' '].w; +- int x1 = x + (font[' '].w + font['>'].w + FONT_X_SPACING*2) / 2; ++ int x = r.x + SDLPangoTextWidth(" "); ++ int x1 = x + SDLPangoTextWidth("> "); + if (select==o) + { + //x += int( sin(time*9)*2.5 ); +@@ -549,7 +549,7 @@ + void RenderTitle() + { + if (left_align) +- Print(r2.x+font[' '].w, r.y+4, title); ++ Print(r2.x+SDLPangoTextWidth(" "), r.y+4, title); + else + PrintC(false, r2.x+r2.w/2, r.y+4, title); + } +Index: hex-a-hop.svn/gfx_list.h +=================================================================== +--- hex-a-hop.svn.orig/gfx_list.h 2007-09-20 00:49:19.000000000 +0200 ++++ hex-a-hop.svn/gfx_list.h 2007-09-20 00:49:25.000000000 +0200 +@@ -17,7 +17,7 @@ + */ + + +-X(fontImage, "font", true) ++//X(fontImage, "font", true) + X(gradient, "gradient", false) + X(mapBG, "map", false) + X(mapBG2, "map_top", true) --- hex-a-hop-0.0.20070315.orig/debian/patches/series +++ hex-a-hop-0.0.20070315/debian/patches/series @@ -0,0 +1,18 @@ +endianess.patch +minimal-sdl-init.patch +proper_directories.patch +gettext_i18n.patch +patch-hex-a-hop-better-than-par.diff +typos.patch +compiler_warnings.patch +pango_fonts.patch +remove_old_font_handling.patch +array_subscripts_warning.patch +i18n_increase_array_sizes.patch +mouse_cursor_without_font.patch +misc_errors.patch +reduce_cpu_usage.patch +mouse-wheel-support.patch +segfault_443822.patch +remove_confirmation.patch +gcc_4.4.patch --- hex-a-hop-0.0.20070315.orig/debian/patches/gettext_i18n.patch +++ hex-a-hop-0.0.20070315/debian/patches/gettext_i18n.patch @@ -0,0 +1,821 @@ +# Copyright (C) 2007 Miriam Ruiz +# Copyright (C) 2007 Helge Kreutzmann (comments) +# Copyright (C) 2007 Jens Seidel (comments) +# Licensed under the GPL, see /usr/share/common-licenses/GPL + +Index: hex-a-hop.svn/i18n.h +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ hex-a-hop.svn/i18n.h 2007-09-20 00:49:10.000000000 +0200 +@@ -0,0 +1,43 @@ ++// (c) 2007 Miriam Ruiz ++// ++// This library is free software; you can redistribute it and/or ++// modify it under the terms of the GNU Library General Public ++// License as published by the Free Software Foundation; either ++// version 2 of the License, or (at your option) any later version. ++// ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++// Library General Public License for more details. ++// ++// You should have received a copy of the GNU Library General Public ++// License along with this library; if not, write to the Free Software ++// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 ++// USA. ++ ++#ifndef _I18N_H ++#define _I18N_H ++ ++#ifdef USE_GETTEXT ++ ++#include ++#define _(String) gettext (String) ++ ++class GetTextInit ++{ ++ protected: ++ static bool IsInit; ++ public: ++ GetTextInit(); ++ const char *GetEncoding() const; ++}; ++ ++static GetTextInit gettext_init; ++ ++#else ++ ++#define _(String) String ++ ++#endif ++ ++#endif +Index: hex-a-hop.svn/hex_puzzzle.cpp +=================================================================== +--- hex-a-hop.svn.orig/hex_puzzzle.cpp 2007-09-20 00:49:08.000000000 +0200 ++++ hex-a-hop.svn/hex_puzzzle.cpp 2007-09-20 00:49:10.000000000 +0200 +@@ -16,6 +16,7 @@ + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + ++#include "i18n.h" + + ////////////////////////////////////////////////////// + // Config +@@ -1576,14 +1577,14 @@ + + static char tmp1[100]; + static LevelInfo tmp = {0, "", tmp1}; +- sprintf(tmp1, "Complete %d more %s to unlock!", t-numComplete, t-numComplete==1?"level":"levels"); ++ sprintf(tmp1, ngettext("Complete 1 more level to unlock!", "Complete %d more levels to unlock!", t-numComplete), t-numComplete); + return &tmp; + } + + for (int i=0; i>"}; ++ static LevelInfo tmp = {0, "", _("<>")}; + return &tmp; + } + +@@ -2668,33 +2669,37 @@ + if (numUndo>1 && time < undo[0].time) + v[0]=v[1]=v[2]=0; + #ifdef EDIT +- Print(0,0,"Anti-Ice: %d", v[0]); +- Print(0,FONT_SPACING,"Jumps: %d", v[1]); +- Print(0,FONT_SPACING*2,"Score: %d (%d)", v[2], player_score); +- Print(0,FONT_SPACING*3,"Par: %d", levelPar); +- Print(0,FONT_SPACING*4,"Diff: %d", levelDiff); ++ /* TRANSLATORS: Anti-Ice are pickups, which turn ice plates into solid ++ plates once you step on them. Each pickup changes one ice plate */ ++ Print(0,0,_("Anti-Ice: %d"), v[0]); ++ Print(0,FONT_SPACING,_("Jumps: %d"), v[1]); ++ Print(0,FONT_SPACING*2,_("Score: %d (%d)"), v[2], player_score); ++ /* TRANSLATORS: Par is similar to golf, a pre defined score which you ++ can attempt to beat */ ++ Print(0,FONT_SPACING*3,_("Par: %d"), levelPar); ++ Print(0,FONT_SPACING*4,_("Diff: %d"), levelDiff); + #else + if (showScoring) +- Print(0, SCREEN_H-FONT_SPACING, " Par: %d Current: %d", levelPar, v[2]); ++ Print(0, SCREEN_H-FONT_SPACING, _(" Par: %d Current: %d"), levelPar, v[2]); + + if (v[0]) +- Print(0,0," Anti-Ice: %d", v[0]); ++ Print(0,0,_(" Anti-Ice: %d"), v[0]); + else if (v[1]) +- Print(0,0," Jumps: %d", v[1]); ++ Print(0,0,_(" Jumps: %d"), v[1]); + #endif + } + if (isRenderMap && isMap && !isFadeRendering) + { + #if 0//def EDIT +- Print(0,0,"Points: %d", numComplete+numMastered); +- Print(0,FONT_SPACING,"Discovered: %d%% (%d/%d)", numLevelsFound*100/numLevels, numLevelsFound, numLevels); +- Print(0,FONT_SPACING*2,"Complete: %d%% (%d)", numComplete*100/numLevels, numComplete); +- Print(0,FONT_SPACING*3,"Mastered: %d%% (%d)", numMastered*100/numLevels, numMastered); ++ Print(0,0,_("Points: %d"), numComplete+numMastered); ++ Print(0,FONT_SPACING,_("Discovered: %d%% (%d/%d)"), numLevelsFound*100/numLevels, numLevelsFound, numLevels); ++ Print(0,FONT_SPACING*2,_("Complete: %d%% (%d)"), numComplete*100/numLevels, numComplete); ++ Print(0,FONT_SPACING*3,_("Mastered: %d%% (%d)"), numMastered*100/numLevels, numMastered); + #else + if (numComplete==numLevels && progress.general.endSequence>0) +- Print(0, SCREEN_H-FONT_SPACING, " %d%% Mastered", numMastered*100/numLevels); ++ Print(0, SCREEN_H-FONT_SPACING, _(" %d%% Mastered"), numMastered*100/numLevels); + else +- Print(0, SCREEN_H-FONT_SPACING, " %d%% Complete", numComplete*100/numLevels); ++ Print(0, SCREEN_H-FONT_SPACING, _(" %d%% Complete"), numComplete*100/numLevels); + + if (numMastered >= numLevels && progress.general.endSequence < 2) + { +@@ -2746,14 +2751,14 @@ + { + if (progress.general.scoringOn) + { +- PrintC(false, dst.x, dst.y + FONT_SPACING*4 - FONT_SPACING/4, "Best:% 3d", player_score); +- PrintC(false, dst.x, dst.y + FONT_SPACING*5 - FONT_SPACING/4, "Par:% 3d", levelPar); ++ PrintC(false, dst.x, dst.y + FONT_SPACING*4 - FONT_SPACING/4, _("Best:% 3d"), player_score); ++ PrintC(false, dst.x, dst.y + FONT_SPACING*5 - FONT_SPACING/4, _("Par:% 3d"), levelPar); + } + else +- PrintC(false, dst.x, dst.y + FONT_SPACING*4 - FONT_SPACING/4, "Completed", player_score); ++ PrintC(false, dst.x, dst.y + FONT_SPACING*4 - FONT_SPACING/4, _("Completed"), player_score); + } + else +- PrintC(false, dst.x, dst.y + FONT_SPACING*4 - FONT_SPACING/4, "Incomplete", player_score); ++ PrintC(false, dst.x, dst.y + FONT_SPACING*4 - FONT_SPACING/4, _("Incomplete"), player_score); + } + } + } +@@ -2794,7 +2799,7 @@ + t=1-t; + int y = SCREEN_H/3 - FONT_SPACING + 1; + y = SCREEN_H + int((y-SCREEN_H)*t); +- PrintC(true, SCREEN_W/2, y, "Level Complete!"); ++ PrintC(true, SCREEN_W/2, y, _("Level Complete!")); + } + } + +@@ -2914,7 +2919,7 @@ + } + + #ifdef EDIT +- sprintf(tmp, "Special(%d,%d): %s (%d)", s.x, s.y, sp ? sp : "", GetPar(sp)); ++ sprintf(tmp, _("Special(%d,%d): %s (%d)"), s.x, s.y, sp ? sp : _(""), GetPar(sp)); + SDL_WM_SetCaption(tmp, NULL); + #endif + } +@@ -3059,7 +3064,7 @@ + + if (button_pressed==256) + { +- char* fn = LoadSaveDialog(false, true, "Select level"); ++ char* fn = LoadSaveDialog(false, true, _("Select level")); + if (fn) + { + char * l = strstr(fn, "Levels"); +@@ -4114,13 +4119,13 @@ + Mouse(mousex, mousey, 0, 0, 1024, 0, mouse_buttons); + + else if (key=='s' && (mod & KMOD_CTRL)){ +- char *fn = LoadSaveDialog(true, true, "Save level"); ++ char *fn = LoadSaveDialog(true, true, _("Save level")); + LoadSave(fn, true); + SDL_WM_SetCaption(currentFile, NULL); + } + + else if (key=='o' && (mod & KMOD_CTRL)){ +- char* fn = LoadSaveDialog(false, true, "Open level"); ++ char* fn = LoadSaveDialog(false, true, _("Open level")); + LoadSave(fn, false); + SDL_WM_SetCaption(currentFile, NULL); + } +Index: hex-a-hop.svn/level_list.h +=================================================================== +--- hex-a-hop.svn.orig/level_list.h 2007-09-20 00:48:52.000000000 +0200 ++++ hex-a-hop.svn/level_list.h 2007-09-20 00:49:10.000000000 +0200 +@@ -22,112 +22,117 @@ + const char *file, *name; + } levelNames[] = { + +-{0, "map_maybe\\map.lev", " Map",}, +-{0, "0_green\\asymmetrix.lev", " Orbital",}, +-{0, "0_green\\hive.lev", " Hive",}, +-{0, "0_green\\there and back.lev", " There and Back",}, +-{0, "0_green\\triangular.lev", " Triangular",}, +-{0, "1_trampoline\\01.lev", " Mini Island",}, +-{0, "1_trampoline\\01_b.lev", " Island Variation",}, +-{0, "1_trampoline\\archipeligo.lev", " Archipelago",}, +-{0, "1_trampoline\\arrow.lev", " Weathervane",}, +-{0, "1_trampoline\\Bridges.lev", " Bridges",}, +-{0, "1_trampoline\\explorer.lev", " Explorer",}, +-{0, "1_trampoline\\test_trampoline.lev", " Trampolines",}, +-{0, "2_greendoor\\Loopy.lev", " Not a Knot",}, +-{0, "2_greendoor\\more mountain.lev", " Another Mountain",}, +-{0, "2_greendoor\\Mountain.lev", " A Mountain",}, +-{0, "2_greendoor\\test_green_gate.lev", " Green Walls",}, +-{0, "2_greendoor\\winding order.lev", " Winding Order",}, +-{0, "2005_11_15\\boating.lev", " Rental Boat",}, +-{0, "2005_11_15\\ferry.lev", " Ferrying",}, +-{0, "2005_11_15\\HUB.LEV", " Transport Hub",}, +-{0, "2005_11_15\\learn lift.lev", " Lifts",}, +-{0, "2005_11_15\\leftovers.lev", " Leftovers",}, +-{0, "2005_11_15\\lumpy.lev", " Trampoline Retrieval",}, +-{0, "2005_11_15\\rolling hexagons.lev", " Rolling Hexagons",}, +-{0, "2005_11_15\\telephone.lev", " Telephone",}, +-{0, "2005_11_16\\breakthrough.lev", " Breakthrough",}, +-{0, "2005_11_19\\aa.lev", " Laser Safety",}, +-{0, "2005_11_19\\branches.lev", " Branching Pathway",}, +-{0, "2005_11_19\\one way up.lev", " Only One Way Up",}, +-{0, "2005_11_19\\outposts.lev", " Outposts",}, +-{0, "2005_11_19\\turntables.lev", " Roundabouts",}, +-{0, "2005_11_19\\two fish.lev", " Two Fish",}, +-{0, "3_2hitfloor\\all wound up.lev", "All Wound Up",}, +-{0, "3_2hitfloor\\collapse2.lev", " Toughened Tiles",}, +-{0, "3_2hitfloor\\Island.lev", " Island",}, +-{0, "3_2hitfloor\\more stripes.lev", " More Stripes",}, +-{0, "3_2hitfloor\\Stripey.lev", " Stripes",}, +-{0, "3_2hitfloor\\test_2hit_floor.lev", " One Two One Two",}, +-{0, "3_2hitfloor\\Turtle.lev", " Turtle",}, +-{0, "3_2hitfloor\\Wand.lev", " Wand",}, +-{0, "4_gun\\deathtrap.lev", " Deathtrap",}, +-{0, "4_gun\\eagerness.lev", " Eagerness",}, +-{0, "4_gun\\gun platform.lev", " Gun Platform",}, +-{0, "4_gun\\Nucleus.lev", " Nucleus",}, +-{0, "4_gun\\Sniper.lev", " Sniper",}, +-{0, "4_gun\\snowflake 2.lev", " Deadly Snowflake",}, +-{0, "4_gun\\snowflake.lev", " Snowflake",}, +-{0, "4_gun\\Test_gun.lev", " Laser Tiles",}, +-{0, "4_gun\\trigger happy.lev", " Trigger Happy",}, +-{0, "5_spinner\\lure.lev", " Lure",}, +-{0, "5_spinner\\Maxe.lev", " Maze",}, +-{0, "5_spinner\\Motion.lev", " Motion Sickness",}, +-{0, "5_spinner\\preperation mk 3.lev", " All About Preparation",}, +-{0, "5_spinner\\revolver cannon.lev", " Revolver Cannon",}, +-{0, "5_spinner\\small cog.lev", " Small Cog",}, +-{0, "5_spinner\\Sprocket.lev", " Sprocket",}, +-{0, "5_spinner\\switch.lev", " Switch",}, +-{0, "5_spinner\\test_spinner.lev", " Spinner Tiles",}, +-{0, "5_spinner\\three more ways.lev", " Three More Ways",}, +-{0, "5_spinner\\three ways mk 2.lev", " Three Ways To Go",}, +-{0, "6_ice\\oo.lev", "Please Skate Safely",}, +-{0, "6_ice\\refraction.lev", " Refraction",}, +-{0, "6_ice\\route finder.lev", " Route Finder",}, +-{0, "6_ice\\slippy.lev", "A Slippery Situation",}, +-{0, "7_item\\crooked.lev", " Crooked",}, +-{0, "7_item\\green honey.lev", " Green Honey",}, +-{0, "7_item\\kx.lev", " Carefully Does It",}, +-{0, "7_item\\radioactive ice.lev", " Radioactive Ice",}, +-{0, "7_item\\slider.lev", " Pro Skater",}, +-{0, "7_item\\spinners mk2.lev", " Spinners II",}, +-{0, "7_item\\spinners.lev", " Spinners",}, +-{0, "7_item\\test_ice.lev", " Deslippify",}, +-{0, "7_item\\tt.lev", " Tri Mesh",}, +-{0, "7_item\\Wheel.lev", " Wheel",}, +-{0, "8_item2\\finishing strike.lev", " Finishing Strike",}, +-{0, "8_item2\\p2.lev", " Big Jumps",}, +-{0, "8_item2\\wave cannon.lev", " Wave Cannon",}, +-{0, "9_boat\\clearance.lev", " Clearance",}, +-{0, "9_boat\\floating.lev", " Floating",}, +-{0, "9_boat\\forced fire.lev", " Forced Fire",}, +-{0, "9_boat\\no swimming allowed.lev", "No Swimming Allowed",}, +-{0, "a.lev", "A Little Light Lifting",}, +-{0, "A_Lift\\house.lev", " House",}, +-{0, "A_Lift\\hunting.lev", " Hunting",}, +-{0, "A_Lift\\Lifting.lev", " More Lifting",}, +-{0, "A_Lift\\opportunist_mini.lev", " Opportunist",}, +-{0, "A_Lift\\test_lift.lev", " Demolition",}, +-{0, "A_Lift\\upper.lev", " Upper",}, +-{0, "b.lev", "Beware Feedback Loops",}, +-{0, "B_Builder\\airlock ending.lev", " Somewhat Constructive",}, +-{0, "B_Builder\\overbuild.lev", " Overbuild",}, +-{0, "B_Builder\\reversing space.lev", " Reversing Space",}, +-{0, "B_Builder\\test_builder.lev", "Burn Your Bridges",}, +-{0, "c.lev", "A Strange Place",}, +-{0, "commute.lev", " Commute",}, +-{0, "d.lev", " Bouncing Required",}, +-{0, "de-icing.lev", " Fetch Quest",}, +-{0, "e.lev", " Laser Surgery",}, +-{0, "ice intro.lev", " Icy Tiles",}, +-{0, "icy road.lev", " Icy Road",}, +-{0, "invertor.lev", " Inversion",}, ++/* TRANSLATORS: The following strings (in level_list.h) are level names, which ++ should give (in a humerous way) the player an indication about this level. */ ++{0, "map_maybe\\map.lev", _(" Map"),}, ++{0, "0_green\\asymmetrix.lev", _(" Orbital"),}, ++{0, "0_green\\hive.lev", _(" Hive"),}, ++{0, "0_green\\there and back.lev", _(" There and Back"),}, ++{0, "0_green\\triangular.lev", _(" Triangular"),}, ++{0, "1_trampoline\\01.lev", _(" Mini Island"),}, ++{0, "1_trampoline\\01_b.lev", _(" Island Variation"),}, ++{0, "1_trampoline\\archipeligo.lev", _(" Archipelago"),}, ++{0, "1_trampoline\\arrow.lev", _(" Weathervane"),}, ++{0, "1_trampoline\\Bridges.lev", _(" Bridges"),}, ++{0, "1_trampoline\\explorer.lev", _(" Explorer"),}, ++{0, "1_trampoline\\test_trampoline.lev", _(" Trampolines"),}, ++{0, "2_greendoor\\Loopy.lev", _(" Not a Knot"),}, ++{0, "2_greendoor\\more mountain.lev", _(" Another Mountain"),}, ++{0, "2_greendoor\\Mountain.lev", _(" A Mountain"),}, ++{0, "2_greendoor\\test_green_gate.lev", _(" Green Walls"),}, ++{0, "2_greendoor\\winding order.lev", _(" Winding Order"),}, ++{0, "2005_11_15\\boating.lev", _(" Rental Boat"),}, ++{0, "2005_11_15\\ferry.lev", _(" Ferrying"),}, ++{0, "2005_11_15\\HUB.LEV", _(" Transport Hub"),}, ++{0, "2005_11_15\\learn lift.lev", _(" Lifts"),}, ++{0, "2005_11_15\\leftovers.lev", _(" Leftovers"),}, ++{0, "2005_11_15\\lumpy.lev", _(" Trampoline Retrieval"),}, ++{0, "2005_11_15\\rolling hexagons.lev", _(" Rolling Hexagons"),}, ++{0, "2005_11_15\\telephone.lev", _(" Telephone"),}, ++{0, "2005_11_16\\breakthrough.lev", _(" Breakthrough"),}, ++{0, "2005_11_19\\aa.lev", _(" Laser Safety"),}, ++{0, "2005_11_19\\branches.lev", _(" Branching Pathway"),}, ++{0, "2005_11_19\\one way up.lev", _(" Only One Way Up"),}, ++{0, "2005_11_19\\outposts.lev", _(" Outposts"),}, ++{0, "2005_11_19\\turntables.lev", _(" Roundabouts"),}, ++{0, "2005_11_19\\two fish.lev", _(" Two Fish"),}, ++{0, "3_2hitfloor\\all wound up.lev", _("All Wound Up"),}, ++{0, "3_2hitfloor\\collapse2.lev", _(" Toughened Tiles"),}, ++{0, "3_2hitfloor\\Island.lev", _(" Island"),}, ++{0, "3_2hitfloor\\more stripes.lev", _(" More Stripes"),}, ++{0, "3_2hitfloor\\Stripey.lev", _(" Stripes"),}, ++{0, "3_2hitfloor\\test_2hit_floor.lev", _(" One Two One Two"),}, ++{0, "3_2hitfloor\\Turtle.lev", _(" Turtle"),}, ++{0, "3_2hitfloor\\Wand.lev", _(" Wand"),}, ++{0, "4_gun\\deathtrap.lev", _(" Deathtrap"),}, ++{0, "4_gun\\eagerness.lev", _(" Eagerness"),}, ++{0, "4_gun\\gun platform.lev", _(" Gun Platform"),}, ++{0, "4_gun\\Nucleus.lev", _(" Nucleus"),}, ++{0, "4_gun\\Sniper.lev", _(" Sniper"),}, ++{0, "4_gun\\snowflake 2.lev", _(" Deadly Snowflake"),}, ++{0, "4_gun\\snowflake.lev", _(" Snowflake"),}, ++{0, "4_gun\\Test_gun.lev", _(" Laser Tiles"),}, ++{0, "4_gun\\trigger happy.lev", _(" Trigger Happy"),}, ++{0, "5_spinner\\lure.lev", _(" Lure"),}, ++{0, "5_spinner\\Maxe.lev", _(" Maze"),}, ++{0, "5_spinner\\Motion.lev", _(" Motion Sickness"),}, ++{0, "5_spinner\\preperation mk 3.lev", _(" All About Preparation"),}, ++{0, "5_spinner\\revolver cannon.lev", _(" Revolver Cannon"),}, ++{0, "5_spinner\\small cog.lev", _(" Small Cog"),}, ++{0, "5_spinner\\Sprocket.lev", _(" Sprocket"),}, ++{0, "5_spinner\\switch.lev", _(" Switch"),}, ++{0, "5_spinner\\test_spinner.lev", _(" Spinner Tiles"),}, ++{0, "5_spinner\\three more ways.lev", _(" Three More Ways"),}, ++{0, "5_spinner\\three ways mk 2.lev", _(" Three Ways To Go"),}, ++{0, "6_ice\\oo.lev", _("Please Skate Safely"),}, ++{0, "6_ice\\refraction.lev", _(" Refraction"),}, ++{0, "6_ice\\route finder.lev", _(" Route Finder"),}, ++{0, "6_ice\\slippy.lev", _("A Slippery Situation"),}, ++{0, "7_item\\crooked.lev", _(" Crooked"),}, ++{0, "7_item\\green honey.lev", _(" Green Honey"),}, ++{0, "7_item\\kx.lev", _(" Carefully Does It"),}, ++{0, "7_item\\radioactive ice.lev", _(" Radioactive Ice"),}, ++{0, "7_item\\slider.lev", _(" Pro Skater"),}, ++{0, "7_item\\spinners mk2.lev", _(" Spinners II"),}, ++{0, "7_item\\spinners.lev", _(" Spinners"),}, ++/* TRANSLATORS: There is a special kind of pickup, which will turn ice ++ plates into "normal" plates (you won't slip on them). So the name ++ is (probably) related to "Make less slippery". */ ++{0, "7_item\\test_ice.lev", _(" Deslippify"),}, ++{0, "7_item\\tt.lev", _(" Tri Mesh"),}, ++{0, "7_item\\Wheel.lev", _(" Wheel"),}, ++{0, "8_item2\\finishing strike.lev", _(" Finishing Strike"),}, ++{0, "8_item2\\p2.lev", _(" Big Jumps"),}, ++{0, "8_item2\\wave cannon.lev", _(" Wave Cannon"),}, ++{0, "9_boat\\clearance.lev", _(" Clearance"),}, ++{0, "9_boat\\floating.lev", _(" Floating"),}, ++{0, "9_boat\\forced fire.lev", _(" Forced Fire"),}, ++{0, "9_boat\\no swimming allowed.lev", _("No Swimming Allowed"),}, ++{0, "a.lev", _("A Little Light Lifting"),}, ++{0, "A_Lift\\house.lev", _(" House"),}, ++{0, "A_Lift\\hunting.lev", _(" Hunting"),}, ++{0, "A_Lift\\Lifting.lev", _(" More Lifting"),}, ++{0, "A_Lift\\opportunist_mini.lev", _(" Opportunist"),}, ++{0, "A_Lift\\test_lift.lev", _(" Demolition"),}, ++{0, "A_Lift\\upper.lev", _(" Upper"),}, ++{0, "b.lev", _("Beware Feedback Loops"),}, ++{0, "B_Builder\\airlock ending.lev", _(" Somewhat Constructive"),}, ++{0, "B_Builder\\overbuild.lev", _(" Overbuild"),}, ++{0, "B_Builder\\reversing space.lev", _(" Reversing Space"),}, ++{0, "B_Builder\\test_builder.lev", _("Burn Your Bridges"),}, ++{0, "c.lev", _("A Strange Place"),}, ++{0, "commute.lev", _(" Commute"),}, ++{0, "d.lev", _(" Bouncing Required"),}, ++{0, "de-icing.lev", _(" Fetch Quest"),}, ++{0, "e.lev", _(" Laser Surgery"),}, ++{0, "ice intro.lev", _(" Icy Tiles"),}, ++{0, "icy road.lev", _(" Icy Road"),}, ++{0, "invertor.lev", _(" Inversion"),}, + +-{0, "_20", "Complete __ levels to unlock"}, +-{0, "_35", "Complete __ levels to unlock"}, +-{0, "_55", "Complete __ levels to unlock"}, +-{0, "_75", "Complete __ levels to unlock"}, +-{0, "_90", "Complete __ levels to unlock"}, ++{0, "_20", _("Complete __ levels to unlock")}, ++{0, "_35", _("Complete __ levels to unlock")}, ++{0, "_55", _("Complete __ levels to unlock")}, ++{0, "_75", _("Complete __ levels to unlock")}, ++{0, "_90", _("Complete __ levels to unlock")}, + + }; +Index: hex-a-hop.svn/gfx.cpp +=================================================================== +--- hex-a-hop.svn.orig/gfx.cpp 2007-09-20 00:49:08.000000000 +0200 ++++ hex-a-hop.svn/gfx.cpp 2007-09-20 00:49:10.000000000 +0200 +@@ -16,6 +16,8 @@ + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + ++#include "i18n.h" ++ + #include "state.h" + + #ifdef WIN32 +Index: hex-a-hop.svn/i18n.cpp +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ hex-a-hop.svn/i18n.cpp 2007-09-20 00:49:10.000000000 +0200 +@@ -0,0 +1,49 @@ ++// (c) 2007 Miriam Ruiz ++// ++// This library is free software; you can redistribute it and/or ++// modify it under the terms of the GNU Library General Public ++// License as published by the Free Software Foundation; either ++// version 2 of the License, or (at your option) any later version. ++// ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++// Library General Public License for more details. ++// ++// You should have received a copy of the GNU Library General Public ++// License along with this library; if not, write to the Free Software ++// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 ++// USA. ++ ++#ifdef USE_GETTEXT ++ ++#include "i18n.h" ++ ++#include ++#include ++#include ++ ++GetTextInit::GetTextInit() ++{ ++ if (!IsInit) ++ { ++ IsInit = true; ++ setlocale (LC_MESSAGES, ""); ++ setlocale (LC_CTYPE, ""); ++ setlocale (LC_COLLATE, ""); ++ textdomain ("hex-a-hop"); ++ bindtextdomain ("hex-a-hop", NULL); ++ } ++} ++ ++bool GetTextInit::IsInit = false; ++ ++const char *GetTextInit::GetEncoding() const ++{ ++ // See http://svn.xiph.org/trunk/vorbis-tools/intl/localcharset.c ++ // if nl_langinfo isn't found ++ char *locale_enc = nl_langinfo(CODESET); ++ return locale_enc; ++} ++ ++#endif +Index: hex-a-hop.svn/menus.h +=================================================================== +--- hex-a-hop.svn.orig/menus.h 2007-09-20 00:48:52.000000000 +0200 ++++ hex-a-hop.svn/menus.h 2007-09-20 00:49:10.000000000 +0200 +@@ -84,61 +84,70 @@ + const char * hint[] = { + + /*EMPTY*/ +-"Basic controls:|Move around with the keys Q,W,E,A,S,D or the numeric keypad. Alternatively, you can use the mouse and click on the tile you'd like to move to. Use 'U', backspace or the right mouse button to undo mistakes. The 'Esc' key (or middle mouse button) brings up a menu from which you can restart if you get stuck.", ++_("Basic controls:|Move around with the keys Q,W,E,A,S,D or the numeric keypad. Alternatively, you can use the mouse and click on the tile you'd like to move to. Use 'U', backspace or the right mouse button to undo mistakes. The 'Esc' key (or middle mouse button) brings up a menu from which you can restart if you get stuck."), + /*NORMAL*/ + 0, + /*COLLAPSABLE*/ +-"Objective:|Your goal is to break all the green tiles. You mainly do this by jumping on them. They will crack when you land on them, and only disintegrate when you jump off. Try not to trap yourself!", ++_("Objective:|Your goal is to break all the green tiles. You mainly do this by jumping on them. They will crack when you land on them, and only disintegrate when you jump off. Try not to trap yourself!"), + /*COLLAPSE_DOOR*/ +-"The coloured walls flatten themselves when there are no matching coloured tiles remaining.", ++_("The coloured walls flatten themselves when there are no matching coloured tiles remaining."), + /*TRAMPOLINE*/ +-"You can bounce on the purple trampoline tiles to get around. But try not to fall in the water. If you do, remember you can undo with 'U', backspace or the right mouse button!", ++_("You can bounce on the purple trampoline tiles to get around. But try not to fall in the water. If you do, remember you can undo with 'U', backspace or the right mouse button!"), + /*SPINNER*/ +-"A red spinner tile will rotate the pieces around it when you step on it.", ++_("A red spinner tile will rotate the pieces around it when you step on it."), + /*WALL*/ + 0, + /*COLLAPSABLE2*/ +-"You don't need to destroy blue tiles to complete the level. But they'll turn green when you step off them, and you know what you have to do to green tiles...", ++_("You don't need to destroy blue tiles to complete the level. But they'll turn green when you step off them, and you know what you have to do to green tiles..."), + /*COLLAPSE_DOOR2*/ + 0, + /*GUN*/ +-"Yellow laser tiles fire when you step on them. Shooting other laser tiles is more destructive.", ++_("Yellow laser tiles fire when you step on them. Shooting other laser tiles is more destructive."), + /*TRAP*/ +-"Ice is slippery! Please be careful!!", ++_("Ice is slippery! Please be careful!!"), + /*COLLAPSABLE3*/ + 0, + /*BUILDER*/ +-"The dark grey tiles with arrows on are builders. Landing on one creates green tiles in any adjacent empty tile, and turns green tiles into walls.", ++_("The dark grey tiles with arrows on are builders. Landing on one creates green tiles in any adjacent empty tile, and turns green tiles into walls."), + /*SWITCH*/ + 0, + /*FLOATING_BALL*/ +-"You can ride on the pink floating boats to get across water. They'll pop if you try and float off the edge of the screen though, so look where you're going.", ++/* TRANSLATORS: pop means vanish and Emy drowns (you loose) */ ++_("You can ride on the pink floating boats to get across water. They'll pop if you try and float off the edge of the screen though, so look where you're going."), + /*LIFT_DOWN*/ +-"The blue lifts go up or down when you land on them.", ++_("The blue lifts go up or down when you land on them."), + /*LIFT_UP*/ + 0, + + 0,0,0,0, + //Item 0 (21) +-"The spiky anti-ice pickups turn icy tiles into blue ones. They get used automatically when you land on ice.", ++_("The spiky anti-ice pickups turn icy tiles into blue ones. They get used automatically when you land on ice."), + //Item 1 (22) +-"Collecting the golden jump pickups will allow you to do a big vertical jump. Try it out on different types of tile. Use the space bar or return key to jump. Or click on the tile you're currently on with the mouse.", ++/* TRANSLATORS: Normally you jump from one plate to another. The golden jump (a ++ pickup) allows you to jump and land on the *same* plate */ ++_("Collecting the golden jump pickups will allow you to do a big vertical jump. Try it out on different types of tile. Use the space bar or return key to jump. Or click on the tile you're currently on with the mouse."), + + 0,0, + + // Map (25) +-"Map Screen:|You can choose which level to attempt next from the map screen. Silver levels are ones you've cleared. Black levels are ones you haven't completed yet, but are available to play.", ++_("Map Screen:|You can choose which level to attempt next from the map screen. Silver levels are ones you've cleared. Black levels are ones you haven't completed yet, but are available to play."), + + // Scoring (26) +-"New feature unlocked!|Each level has an efficiency target for you to try and beat. Every move you make and each non-green tile you destroy counts against you. Why not try replaying some levels and going for gold?", ++/* TRANSLATORS: Levels are depicted as black balls. Once you passed them, they ++ turn silver. If you reached the par, they turn golden (with a crown), and if ++ you beat the par, they turn their shape/color once more */ ++_("New feature unlocked!|Each level has an efficiency target for you to try and beat. Every move you make and each non-green tile you destroy counts against you. Why not try replaying some levels and going for gold?"), + + 0,0,0, + + // End of help (30) +-"Thanks for playing this little game. I hope you enjoy it! -- -- All content is Copyright 2005 Tom Beaumont email: tombeaumont@yahoo.com Any constructive criticism gratefully received!", ++_("Thanks for playing this little game. I hope you enjoy it! -- -- All content is Copyright 2005 Tom Beaumont email: tombeaumont@yahoo.com Any constructive criticism gratefully received!"), + + // First help page (31) +-"Welcome to " GAMENAME "! This is a puzzle game based on hexagonal tiles. There is no time limit and no real-time elements, so take as long as you like. Use the cursor keys or click on the arrows to scroll through the help pages. More pages will be added as you progress through the game.", ++/* TRANSLATORS: This string is copied twice into the POT file to workaround a ++ gettext limitation (no macro expansion). The extracted string "Welcome to " ++ will not be used. */ ++_("Welcome to " GAMENAME "! This is a puzzle game based on hexagonal tiles. There is no time limit and no real-time elements, so take as long as you like. Use the cursor keys or click on the arrows to scroll through the help pages. More pages will be added as you progress through the game."), + }; + + struct HintMessage : public Menu +@@ -174,7 +183,7 @@ + if (!x) + { + msg = m; +- strcpy(title, "Info:"); ++ strcpy(title, _("Info:")); + } + else + { +@@ -196,7 +205,7 @@ + Render(0, y); + + if (!state && time>0.2) +- Print(SCREEN_W*3/4, SCREEN_H-FONT_SPACING, "Press any key"); ++ Print(SCREEN_W*3/4, SCREEN_H-FONT_SPACING, _("Press any key")); + } + + void Render(int x, int y) +@@ -281,9 +290,9 @@ + const double SPD = 10; + + #ifdef EDIT +- sprintf (title, "Help (Page --)", page_display+1, page_count); ++ sprintf (title, _("Help (Page --)"), page_display+1, page_count); + #else +- sprintf (title, "Help (Page %d/%d)", page_display+1, page_count); ++ sprintf (title, _("Help (Page %d/%d)"), page_display+1, page_count); + #endif + + int y=SCREEN_H/4; +@@ -369,23 +378,23 @@ + optionSlotName[1], + optionSlotName[2], + optionSlotName[3], +- "Resume", +- "Restart Level", +- "Return to Map", +- "Continue", +- "Toggle Fullscreen", +- "Options", +- "Quit", +- "Yes", +- "No", +- "Return to Title", +- "Help", +- "Start New Game", +- "Yes, really delete it!", +- "Don't do it!", +- "Undo Last Move", +- "OK", +- "View Credits Sequence", "View Credits Sequence", ++ _("Resume"), ++ _("Restart Level"), ++ _("Return to Map"), ++ _("Continue"), ++ _("Toggle Fullscreen"), ++ _("Options"), ++ _("Quit"), ++ _("Yes"), ++ _("No"), ++ _("Return to Title"), ++ _("Help"), ++ _("Start New Game"), ++ _("Yes, really delete it!"), ++ _("Don't do it!"), ++ _("Undo Last Move"), ++ _("OK"), ++ _("View Credits Sequence"), _("View Credits Sequence"), + }; + + +@@ -522,7 +531,7 @@ + par(_par), + best_score(_prev_score), + win(_win), +- OptMenu(_win ? "Level Complete!" : "Emi can't swim...") ++ OptMenu(_win ? _("Level Complete!") : _("Emi can't swim...")) + { + if (!win) + opt[num_opt++] = OPT_UNDO; +@@ -557,13 +566,13 @@ + int x = r.x+r.w/2; + int y = r2.y + FONT_SPACING/2; + if (score < best_score && score <= par) +- PrintC(true, x, y, "New Best Score: %d Par Score: %d Par Beaten!", score, par); ++ PrintC(true, x, y, _("New Best Score: %d Par Score: %d Par Beaten!"), score, par); + else if (score < best_score) +- PrintC(true, x, y, "New Best Score: %d Par Score: %d", score, par); ++ PrintC(true, x, y, _("New Best Score: %d Par Score: %d"), score, par); + else if (par && best_score) +- PrintC(true, x, y, "Score: %d Previous Best: %d Par Score: %d", score, best_score, par); ++ PrintC(true, x, y, _("Score: %d Previous Best: %d Par Score: %d"), score, best_score, par); + else +- PrintC(true, x, y+FONT_SPACING/2, "Well Done! Level Completed!"); ++ PrintC(true, x, y+FONT_SPACING/2, _("Well Done! Level Completed!")); + } + } + +@@ -642,49 +651,49 @@ + }; + + const char *ending[] = { +- " Very Well Done! ", ++ _(" Very Well Done! "), + "", "", "", "", "", "", + + "", "", "*15,4", "", "", + +- "All Levels Cleared!", ++ _("All Levels Cleared!"), + + "", "", "*5,7", "", "", + +- "Not a single green hexagon is left unbroken.", ++ _("Not a single green hexagon is left unbroken."), + "", +- "Truly, you are a master of hexagon hopping!", ++ _("Truly, you are a master of hexagon hopping!"), + + "", "", "*9,10", "", "", + +- "", "Credits", "", "", "", +- "Tom Beaumont", "", "", +- "Tom Beaumont", "", "", +- "Tom Beaumont", "", "", +- "Kris Beaumont", "", "", ++ "", _("Credits"), "", "", "", ++ _("Tom Beaumont", "", "", ++ _("Tom Beaumont", "", "", ++ _("Tom Beaumont", "", "", ++ _("Kris Beaumont", "", "", + // "", "Photoshop LE", ">Inno Setup", ">Wings 3D", ">MSVC", ">SDL", "", +- "Copperplate gothic bold", ">Verdana", "", ++ _("Photoshop LE", ">Inno Setup", ">Wings 3D", ">MSVC", ">SDL", "", ++ _("Copperplate gothic bold", ">Verdana", "", + + "", "", "*12,14", "", "", + +- "Thanks for playing!" ++ _("Thanks for playing!") + }; + + const char *ending2[] = { +- " Absolutely Amazing! ", ++ _(" Absolutely Amazing! "), + "", "", "", "", "", + + "", "", "*15,4", "", "", + +- "All Levels Mastered!!", ++ _("All Levels Mastered!!"), + + "", "", "*5,7", "", "", + +- "You crushed every last green hexagon with", +- "breathtaking efficiency!", ++ _("You crushed every last green hexagon with"), ++ _("breathtaking efficiency!"), + "", +- "You truly are a grand master of hexagon hopping!", ++ _("You truly are a grand master of hexagon hopping!"), + }; + + const int endingLen = sizeof(ending)/sizeof(ending[0]); +@@ -833,7 +842,7 @@ + y+=FONT_SPACING; + } + if (scroll > scrollMax + FONT_SPACING*10) +- PrintC(true, x, SCREEN_H/2-FONT_SPACING/2, "The End"); ++ PrintC(true, x, SCREEN_H/2-FONT_SPACING/2, _("The End")); + } + + void Cancel(); +@@ -920,11 +929,11 @@ + fclose(f); + + if (p.general.completionPercentage==100 && p.general.masteredPercentage==100) +- sprintf(optionSlotName[i], "Continue game %d (All Clear!)", i+1, p.general.completionPercentage, p.general.masteredPercentage); ++ sprintf(optionSlotName[i], _("Continue game %d (All Clear!)"), i+1, p.general.completionPercentage, p.general.masteredPercentage); + else if (p.general.completionPercentage==100) +- sprintf(optionSlotName[i], "Continue game %d (%d%% + %d%%)", i+1, p.general.completionPercentage, p.general.masteredPercentage); ++ sprintf(optionSlotName[i], _("Continue game %d (%d%% + %d%%)"), i+1, p.general.completionPercentage, p.general.masteredPercentage); + else +- sprintf(optionSlotName[i], "Continue game %d (%d%% complete)", i+1, p.general.completionPercentage); ++ sprintf(optionSlotName[i], _("Continue game %d (%d%% complete)"), i+1, p.general.completionPercentage); + + opt[num_opt++] = OPT_GAMESLOT_0 + i; + } +@@ -963,7 +972,7 @@ + + struct QuitConfirmMenu : public OptMenuTitle + { +- QuitConfirmMenu() : OptMenuTitle("Quit: Are you sure?") ++ QuitConfirmMenu() : OptMenuTitle(_("Quit: Are you sure?")) + { + opt[num_opt++] = OPT_QUIT_CONFIRM; + opt[select=num_opt++] = OPT_QUIT_CANCEL; +@@ -983,7 +992,7 @@ + { + //left_align = 1; + +- sprintf(tmp, "Really delete game %d?", num+1); ++ sprintf(tmp, _("Really delete game %d?"), num+1); + opt[num_opt++] = OPT_DELETE_CONFIRM; + opt[select=num_opt++] = OPT_DELETE_CANCEL; + Init(); +@@ -1023,7 +1032,7 @@ + + struct PauseMenu : public OptMenu + { +- PauseMenu(bool isMap, bool allowGotoMap, int allowEnd, int allowEnd2) : OptMenu("Paused") ++ PauseMenu(bool isMap, bool allowGotoMap, int allowEnd, int allowEnd2) : OptMenu(_("Paused")) + { + opt[num_opt++] = OPT_RESUME; + if (!isMap) +@@ -1050,7 +1059,7 @@ + struct OptionMenu : public OptMenuTitle + { + bool title; +- OptionMenu(bool _title) : OptMenuTitle("Options"), title(_title) ++ OptionMenu(bool _title) : OptMenuTitle(_("Options")), title(_title) + { + opt[num_opt++] = OPT_FULLSCREEN; + +Index: hex-a-hop.svn/Makefile +=================================================================== +--- hex-a-hop.svn.orig/Makefile 2007-09-20 00:49:08.000000000 +0200 ++++ hex-a-hop.svn/Makefile 2007-09-20 00:49:10.000000000 +0200 +@@ -5,7 +5,7 @@ + DATA_DIR="." + CXXFLAGS += -g + GCC =g++ +-CXXSOURCES = gfx.cpp hex_puzzzle.cpp ++CXXSOURCES = gfx.cpp hex_puzzzle.cpp i18n.cpp + #INCLUDES = + + --- hex-a-hop-0.0.20070315.orig/debian/patches/endianess.patch +++ hex-a-hop-0.0.20070315/debian/patches/endianess.patch @@ -0,0 +1,394 @@ +# Copyright (C) 2007 Miriam Ruiz +# Copyright (C) 2007 Jens Seidel +# Licensed under the GPL, see /usr/share/common-licenses/GPL + +Index: hex-a-hop.svn/packfile.h +=================================================================== +--- hex-a-hop.svn.orig/packfile.h 2007-09-20 00:48:52.000000000 +0200 ++++ hex-a-hop.svn/packfile.h 2007-09-20 00:49:01.000000000 +0200 +@@ -16,11 +16,21 @@ + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + ++#include ++#include ++ ++#if SDL_BYTEORDER == SDL_LIL_ENDIAN ++#define SWAP16(X) (X) ++#define SWAP32(X) (X) ++#else ++#define SWAP16(X) SDL_Swap16(X) ++#define SWAP32(X) SDL_Swap32(X) ++#endif + + struct PackFile1 + { + class Entry { +- int len; ++ int32_t len; + public: + char name[1]; + +@@ -73,10 +83,11 @@ + if (numfiles || e || data) + FATAL("Calling Packfile1::Read when already initialised."); + +- int size; ++ int32_t size; + fseek(f, -(int)sizeof(size), SEEK_END); + int end_offset = ftell(f); + fread(&size, sizeof(size), 1, f); ++ size = SWAP32(size); + fseek(f, end_offset - size, SEEK_SET); + + data = malloc(size); +@@ -88,10 +99,12 @@ + while ((void*)i < data_end) + { + numfiles++; ++ int32_t *data_length = (int32_t*)i; ++ *data_length = SWAP32(*data_length); + i = i->GetNext(); + } + +- e = new Entry* [numfiles]; ++ e = new Entry* [numfiles]; // CHECKME: where to delete? + + i = (Entry*)data; + for (int j=0; jGetNext()) +Index: hex-a-hop.svn/hex_puzzzle.cpp +=================================================================== +--- hex-a-hop.svn.orig/hex_puzzzle.cpp 2007-09-20 00:48:52.000000000 +0200 ++++ hex-a-hop.svn/hex_puzzzle.cpp 2007-09-20 00:49:01.000000000 +0200 +@@ -444,10 +444,12 @@ + } + + +-typedef int Tile; ++// somewhere else Tile map[][] is assigned to an unsigned char not int32_t ++// but the data file format expects it to be 32 bit wide!?? ++typedef int32_t Tile; + typedef int Dir; + struct Pos{ +- int x,y; ++ int32_t x,y; + Pos() : x(0), y(0) {} + Pos(int a, int b) : x(a), y(b) {} + bool operator == (Pos const & p) const +@@ -1495,9 +1497,9 @@ + #define MAP_SIZE 30 + char* special[MAP_SIZE][MAP_SIZE]; + Tile map[MAP_SIZE][MAP_SIZE]; +- int map_item[MAP_SIZE][MAP_SIZE]; ++ int32_t map_item[MAP_SIZE][MAP_SIZE]; + int tileCount[NumTileTypes]; +- int levelPar, levelDiff; ++ int32_t levelPar, levelDiff; + int turboAnim; + Pos player; + int player_items[2]; +@@ -1565,14 +1567,20 @@ + + fgetc(f); // Remove '\n' character + +- int par, diff; ++ int32_t par, diff; + unsigned char bounds[4]; + Pos playerStart; + fread(&par, sizeof(par), 1, f); +- if (version >= 4) ++ par = SWAP32(par); ++ ++ if (version >= 4) { + fread(&diff, sizeof(diff), 1, f); ++ diff = SWAP32(diff); ++ } + fread(bounds, sizeof(bounds), 1, f); +- fread(&playerStart, sizeof(player), 1, f); ++ fread(&playerStart, sizeof(playerStart), 1, f); ++ playerStart.x = SWAP32(playerStart.x); ++ playerStart.y = SWAP32(playerStart.y); + + int highval=0; + +@@ -1821,8 +1829,8 @@ + typedef unsigned int _fn(void*, unsigned int, unsigned int, FILE*); + _fn * fn = (loadPtr ? (_fn*)fread_replace : (_fn*)fread); + +- int par = 99999, diff = 0; +- int version; ++ int32_t par = 99999, diff = 0; ++ int16_t version; + + if (!f && !loadPtr) + return getdiff ? diff : par; +@@ -1831,7 +1839,11 @@ + + if (fn(&par, sizeof(par), 1, f) != 1) + par = 99999; +- if (fn(&diff, sizeof(diff), 1, f) != 1 || diff<0 || diff>10) ++ else ++ par = SWAP32(par); ++ size_t ret = fn(&diff, sizeof(diff), 1, f); ++ diff = SWAP32(diff); ++ if (ret != 1 || diff<0 || diff>10) + diff = 0; + + #ifdef USE_LEVEL_PACKFILE +@@ -1902,13 +1914,18 @@ + return false; + } + ++ /** \brief Writes/reads game status to/from a file ++ * ++ * The game data file is written in little endian so it can be shared ++ * across different machines. ++ */ + void _LoadSave(FILE* f, bool save) + { + typedef unsigned int _fn(void*, unsigned int, unsigned int, FILE*); + _fn * fn = save ? (_fn*)fwrite : (loadPtr ? (_fn*)fread_replace : (_fn*)fread); + + #define VERSION 4 +- int version = VERSION; ++ int version = VERSION; // 1--9 + if (save) + fprintf(f, "%d\n", version); + else +@@ -1935,13 +1952,26 @@ + if (version==1) + { + for (int i=0; i=2 && version<=4) + { +@@ -1966,18 +1996,28 @@ + memset(map_item, 0, sizeof(map_item)); + } + +- if (version>=3) ++ if (version>=3) { ++ levelPar = SWAP32(levelPar); + fn(&levelPar, 1, sizeof(levelPar), f); ++ levelPar = SWAP32(levelPar); ++ } + else if (!save) + levelPar = 0; + +- if (version>=4) ++ if (version>=4) { ++ levelDiff = SWAP32(levelDiff); + fn(&levelDiff, 1, sizeof(levelDiff), f); ++ levelDiff = SWAP32(levelDiff); ++ } + else if (!save) + levelDiff = 0; + + fn(bounds, sizeof(bounds), 1, f); ++ player.x = SWAP32(player.x); ++ player.y = SWAP32(player.y); + fn(&player, sizeof(player), 1, f); ++ player.x = SWAP32(player.x); ++ player.y = SWAP32(player.y); + + int offsetx=0, offsety=0; + +@@ -2016,24 +2056,27 @@ + for (int j=bounds[2]; j<=bounds[3]; j++) + if (special[i][j]) + { +- short len = strlen(special[i][j]); ++ int16_t len = strlen(special[i][j]); + unsigned char x=i, y=j; + fn(&x, sizeof(x), 1, f); + fn(&y, sizeof(y), 1, f); ++ len = SWAP16(len); + fn(&len, sizeof(len), 1, f); ++ len = SWAP16(len); + fn(special[i][j], 1, len, f); + } + } + else + { + while(1){ +- short len; ++ int16_t len; + unsigned char x, y; + if (!fn(&x, sizeof(x), 1, f)) + break; + fn(&y, sizeof(y), 1, f); + x += offsetx; y += offsety; + fn(&len, sizeof(len), 1, f); ++ len = SWAP16(len); + if (len<0) break; + char* tmp = new char[len+1]; + tmp[len] = 0; +@@ -2398,10 +2441,12 @@ + FILE* f = file_open(bmp, "rb"); + if (!f) FATAL("Unable to open file", bmp); + +- short w,h; ++ int16_t w,h; + fread(&w, sizeof(w), 1, f); + fread(&h, sizeof(h), 1, f); +- if (w>1500 || h>1500) FATAL("Invalid file", bmp); ++ w = SWAP16(w); ++ h = SWAP16(h); ++ if (w>1500 || h>1500 || w<=0 || h<=0) FATAL("Invalid file", bmp); + + tmp = new uint32[(int)w*h]; + +@@ -2414,9 +2459,12 @@ + else + { + fread(&c, sizeof(c), 1, f); ++ c = SWAP32(c); + cnt = c >> 24; +- if (cnt==255) ++ if (cnt==255) { + fread(&cnt, sizeof(cnt), 1, f); ++ cnt = SWAP32(cnt); ++ } + } + tmp[p] = c | 0xff000000; + } +Index: hex-a-hop.svn/savestate.h +=================================================================== +--- hex-a-hop.svn.orig/savestate.h 2007-09-20 00:48:52.000000000 +0200 ++++ hex-a-hop.svn/savestate.h 2007-09-20 00:49:01.000000000 +0200 +@@ -23,12 +23,16 @@ + { + friend struct HexPuzzle; + ++ // CHECKME: If char is larger than 8 bits (== 1 byte???) ++ // the code is no longer big endian safe? SWAP16/32 is necessary? ++ // Or is a byte always of the same size as char, e.g. 16 bits, so ++ // that int16_t is equally saved on big and little endian systems? + char * bestSolution; +- int bestSolutionLength; +- int bestScore; ++ int32_t bestSolutionLength; ++ int32_t bestScore; + #define NUM_LAST_SCORES 19 +- int lastScores[NUM_LAST_SCORES]; +- int unlocked; ++ int32_t lastScores[NUM_LAST_SCORES]; ++ int32_t unlocked; + public: + LevelSave() + { +@@ -47,11 +51,24 @@ + typedef unsigned int _fn(void*, unsigned int, unsigned int, FILE*); + _fn * fn = save ? (_fn*)fwrite : (_fn*)fread; + ++ // we write little endian data ++ bestSolutionLength = SWAP32(bestSolutionLength); ++ bestScore = SWAP32(bestScore); ++ for (int i=0; ilittle endian + fwrite(&general, sizeof(general), 1, f); ++ general.SwapBytes(); // revert changes + for(X* x=first; x; x=x->next) + { +- short len = strlen(x->name); ++ int16_t len = strlen(x->name); ++ len = SWAP16(len); + fwrite(&len, sizeof(len), 1, f); +- fwrite(x->name, len, 1, f); ++ len = SWAP16(len); ++ fwrite(x->name, 1, len, f); + + x->LoadSave(f,save); + +@@ -214,6 +246,7 @@ + if (v=='2') + { + fread(&general, sizeof(general), 1, f); ++ general.SwapBytes(); + v = '1'; + } + if (v=='1') +@@ -221,8 +254,9 @@ + while(!feof(f)) + { + char temp[1000]; +- short len; ++ int16_t len; + fread(&len, sizeof(len), 1, f); ++ len = SWAP16(len); + if (feof(f)) break; + fread(temp, len, 1, f); + temp[len] = 0; --- hex-a-hop-0.0.20070315.orig/debian/patches/proper_directories.patch +++ hex-a-hop-0.0.20070315/debian/patches/proper_directories.patch @@ -0,0 +1,133 @@ +# Copyright (C) 2007 Miriam Ruiz +# Copyright (C) 2007 Jens Seidel +# Licensed under the GPL, see /usr/share/common-licenses/GPL + +Index: hex-a-hop.svn/hex_puzzzle.cpp +=================================================================== +--- hex-a-hop.svn.orig/hex_puzzzle.cpp 2007-09-20 00:49:01.000000000 +0200 ++++ hex-a-hop.svn/hex_puzzzle.cpp 2007-09-20 00:49:08.000000000 +0200 +@@ -27,7 +27,13 @@ + + //#define MAP_LOCKED_VISIBLE + ++#ifndef GAME_NAME + #define GAME_NAME "Hex-a-hop" ++#endif ++ ++#ifndef DATA_DIR ++#define DATA_DIR "." ++#endif + + #ifdef EDIT + // #define MAP_EDIT_HACKS +@@ -67,6 +73,15 @@ + #include "packfile.h" + #endif + ++#include ++#include ++#include ++#include ++ ++#ifndef PATH_MAX ++#define PATH_MAX 4096 ++#endif ++ + void RenderTile(bool reflect, int t, int x, int y, int cliplift=-1); + + int keyState[SDLK_LAST] = {0}; +@@ -76,15 +91,34 @@ + // printf("file_open( \"%s\", \"%s\" )\n", file, flags ); + extern String base_path; + static String filename; // static to reduce memory alloc/free calls. +- if (file[0]=='\0' || file[1]!=':') //If a full path is specified, don't prepend base_path +- filename = base_path; ++ if (file[0]=='/') //If a full path is specified, don't prepend base_path ++ filename = ""; ++ else ++ { ++ if (strncmp(file, "save", 4) == 0) ++ { ++ const char *home = getenv("HOME"); ++ if (home) ++ { ++ char save_path[PATH_MAX]; ++ snprintf(save_path, sizeof(save_path), "%s/.hex-a-hop", home); ++ if (!strchr(flags, 'r')) ++ if (mkdir(save_path, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != -1) ++ printf("Creating directory \"%s\"\n", (const char *)save_path); ++ strncat(save_path, "/", sizeof(save_path)); ++ filename = save_path; ++ } ++ else filename = "/tmp/"; ++ } ++ else filename = base_path; ++ } + filename += file; + // printf(" -> \"%s\"\n", filename ); +- ++ + filename.fix_backslashes(); + FILE* f = fopen( filename, flags ); + +- if (!f) ++ if (!f && strncmp(file, "save", 4) != 0) + { + printf("Warning: unable to open file \"%s\" for %s\n", (const char*)filename, strchr(flags, 'r') ? "reading" : "writing"); + } +@@ -4099,7 +4133,7 @@ + } + void LoadGraphics() + { +- #define X(NAME,FILE,ALPHA) NAME = Load("graphics/" FILE BMP_SUFFIX, ALPHA); ++ #define X(NAME,FILE,ALPHA) NAME = Load(DATA_DIR "/graphics/" FILE BMP_SUFFIX, ALPHA); + #include "gfx_list.h" + + static int first = 1; +Index: hex-a-hop.svn/gfx.cpp +=================================================================== +--- hex-a-hop.svn.orig/gfx.cpp 2007-09-20 00:49:05.000000000 +0200 ++++ hex-a-hop.svn/gfx.cpp 2007-09-20 00:49:08.000000000 +0200 +@@ -28,6 +28,10 @@ + #undef USE_BBTABLET + #endif + ++#ifndef DATA_DIR ++#define DATA_DIR "." ++#endif ++ + StateMakerBase* StateMakerBase::first = 0; + State* StateMakerBase::current = 0; + +@@ -166,7 +170,7 @@ + + int main(int argc, char * argv[]) + { +- base_path = argv[0]; ++ base_path = DATA_DIR "/"; + for (int i=strlen(base_path)-1; i>=0; i--) + if (base_path[i]=='/' || base_path[i]=='\\') + { +Index: hex-a-hop.svn/Makefile +=================================================================== +--- hex-a-hop.svn.orig/Makefile 2007-09-20 00:48:52.000000000 +0200 ++++ hex-a-hop.svn/Makefile 2007-09-20 00:49:08.000000000 +0200 +@@ -2,7 +2,8 @@ + NAME = Hex-a-hop + VERSION = 1.0.0 + CC = gcc +-CXXFLAGS += -D_VERSION=\"$(VERSION)\" -g ++DATA_DIR="." ++CXXFLAGS += -g + GCC =g++ + CXXSOURCES = gfx.cpp hex_puzzzle.cpp + #INCLUDES = +@@ -13,7 +14,7 @@ + OBJS=$(CXXSOURCES:.cpp=.o) + + %.o : %.cpp +- $(GCC) $(CXXFLAGS) `sdl-config --cflags` -c -o $@ $< ++ $(GCC) $(CXXFLAGS) -D_VERSION=\"$(VERSION)\" -DDATA_DIR=\"$(DATA_DIR)\" `sdl-config --cflags` -c -o $@ $< + + $(NAME) : $(OBJS) + $(GCC) $(CXXFLAGS) $(OBJS) `sdl-config --libs` -lm \ --- hex-a-hop-0.0.20070315.orig/debian/patches/compiler_warnings.patch +++ hex-a-hop-0.0.20070315/debian/patches/compiler_warnings.patch @@ -0,0 +1,453 @@ +# Copyright (C) 2007 Jens Seidel +# Licensed under the GPL, see /usr/share/common-licenses/GPL + +Index: hex-a-hop.svn/menus.h +=================================================================== +--- hex-a-hop.svn.orig/menus.h 2007-09-20 00:49:17.000000000 +0200 ++++ hex-a-hop.svn/menus.h 2007-09-20 00:49:19.000000000 +0200 +@@ -31,7 +31,7 @@ + struct Menu { + bool renderBG; + +- Menu() : under(activeMenu), time(0), renderBG(true) { activeMenu = this; } ++ Menu() : renderBG(true), under(activeMenu), time(0) { activeMenu = this; } + + virtual ~Menu() { + if(this!=deadMenu) FATAL("this!=deadMenu"); +@@ -47,7 +47,7 @@ + deadMenu = m; + } + +- virtual bool KeyPressed(int key, int mod) ++ virtual bool KeyPressed(int key, int /*mod*/) + { + if (key=='w' || key==SDLK_UP || key==SDLK_KP8 || key=='q' || key=='e' || key==SDLK_KP7 || key==SDLK_KP9) + Move(-1), noMouse=1; +@@ -64,13 +64,13 @@ + return false; + return true; + } +- virtual void Mouse(int x, int y, int dx, int dy, int buttons_pressed, int buttons_released, int buttons) ++ virtual void Mouse(int /*x*/, int /*y*/, int /*dx*/, int /*dy*/, int buttons_pressed, int /*buttons_released*/, int /*buttons*/) + { + if (buttons_pressed==4 || buttons_pressed==2) + Cancel(); + } + +- virtual void Move(int dir) {} ++ virtual void Move(int /*dir*/) {} + virtual void Select() {} + virtual void Cancel() {} + +@@ -218,13 +218,13 @@ + PrintC(true, x+SCREEN_W/2, y+FONT_SPACING/2, msg); + } + +- virtual void Mouse(int x, int y, int dx, int dy, int buttons_pressed, int buttons_released, int buttons) ++ virtual void Mouse(int /*x*/, int /*y*/, int /*dx*/, int /*dy*/, int buttons_pressed, int /*buttons_released*/, int /*buttons*/) + { + if (buttons_pressed && state==0 && time>0.2) + state = 1, time=0; + } + +- bool KeyPressed(int key, int mod) ++ bool KeyPressed(int /*key*/, int /*mod*/) + { + if (state==0 && time>0.2) + state = 1, time=0; +@@ -364,7 +364,7 @@ + OPT_END, OPT_END2, + }; + +-char optionSlotName[MAX_GAMESLOT][40] = {0}; ++char optionSlotName[MAX_GAMESLOT][40] = { {0} }; + char currentSlot[80] = ""; + int freeSlot = -1; + char* GetSlotName(int i, char * t) +@@ -505,7 +505,6 @@ + } + void RenderTitle() + { +- int y = r2.y + FONT_SPACING / 2; + if (left_align) + Print(r2.x+font[' '].w, r.y+4, title); + else +@@ -527,11 +526,11 @@ + bool win; + int score, par, best_score; + WinLoseScreen(bool _win, int _score=0, int _par=0, int _prev_score=0) : ++ OptMenu(_win ? _("Level Complete!") : _("Emi can't swim...")), ++ win(_win), + score(_score), + par(_par), +- best_score(_prev_score), +- win(_win), +- OptMenu(_win ? _("Level Complete!") : _("Emi can't swim...")) ++ best_score(_prev_score) + { + if (!win) + opt[num_opt++] = OPT_UNDO; +@@ -761,7 +760,7 @@ + } + + Particle() : type(EMPTY) {} +- Particle(int t, int _x) : type(t), x(_x) ++ Particle(int t, int _x) : x(_x), type(t) + { + xa=ys=xs=0; ya=400; + //if (t==1) +@@ -815,7 +814,7 @@ + SDL_Rect a = {0,0,SCREEN_W,SCREEN_H}; + SDL_FillRect(screen, &a, SDL_MapRGB(screen->format, 10,25,25)); + +- for (int i=0; i scrollMax) + // scroll = fmod(scroll, scrollMax); + // scroll = 0, time = 0; +@@ -896,7 +895,7 @@ + }; + + Ending* Ending::ending = 0; +-void* Ending::Particle::operator new(size_t sz) ++void* Ending::Particle::operator new(size_t /*sz*/) + { + static int start = 0; + const int max = sizeof(ending->p)/sizeof(ending->p[0]); +@@ -929,7 +928,7 @@ + fclose(f); + + if (p.general.completionPercentage==100 && p.general.masteredPercentage==100) +- sprintf(optionSlotName[i], _("Continue game %d (All Clear!)"), i+1, p.general.completionPercentage, p.general.masteredPercentage); ++ sprintf(optionSlotName[i], _("Continue game %d (All Clear!)"), i+1); + else if (p.general.completionPercentage==100) + sprintf(optionSlotName[i], _("Continue game %d (%d%% + %d%%)"), i+1, p.general.completionPercentage, p.general.masteredPercentage); + else +@@ -1090,7 +1089,7 @@ + int dir; + double speed; + int result; +- Fader(int _dir, int _result, double _speed=1) : dir(_dir), result(_result), speed(_speed) ++ Fader(int _dir, int _result, double _speed=1) : dir(_dir), speed(_speed), result(_result) + { + renderBG = under ? under->renderBG : true; + } +Index: hex-a-hop.svn/Makefile +=================================================================== +--- hex-a-hop.svn.orig/Makefile 2007-09-20 00:49:10.000000000 +0200 ++++ hex-a-hop.svn/Makefile 2007-09-20 00:49:19.000000000 +0200 +@@ -3,7 +3,9 @@ + VERSION = 1.0.0 + CC = gcc + DATA_DIR="." +-CXXFLAGS += -g ++# See http://www.thescripts.com/forum/thread471291.html for ++# details to -Wno-char-subscripts ++CXXFLAGS += -Wall -W -Wno-char-subscripts -g + GCC =g++ + CXXSOURCES = gfx.cpp hex_puzzzle.cpp i18n.cpp + #INCLUDES = +Index: hex-a-hop.svn/gfx.cpp +=================================================================== +--- hex-a-hop.svn.orig/gfx.cpp 2007-09-20 00:49:10.000000000 +0200 ++++ hex-a-hop.svn/gfx.cpp 2007-09-20 00:49:19.000000000 +0200 +@@ -92,7 +92,7 @@ + return 0; + } + #else +- char* LoadSaveDialog(bool save, bool levels, const char * title) ++ char* LoadSaveDialog(bool /*save*/, bool /*levels*/, const char * /*title*/) + { + return 0; + } +@@ -170,7 +170,7 @@ + return x; + } + +-int main(int argc, char * argv[]) ++int main(int /*argc*/, char * /*argv*/[]) + { + base_path = DATA_DIR "/"; + for (int i=strlen(base_path)-1; i>=0; i--) +@@ -268,7 +268,6 @@ + // printf("Main loop...\n"); + + StateMakerBase::GetNew(); +- int time = SDL_GetTicks(); + + while(!quitting) + { +Index: hex-a-hop.svn/gfx_list.h +=================================================================== +--- hex-a-hop.svn.orig/gfx_list.h 2007-09-20 00:48:51.000000000 +0200 ++++ hex-a-hop.svn/gfx_list.h 2007-09-20 00:49:19.000000000 +0200 +@@ -30,4 +30,5 @@ + //X(uiGraphics, "ui", true) + + +-#undef X +\ No newline at end of file ++#undef X ++ +Index: hex-a-hop.svn/hex_puzzzle.cpp +=================================================================== +--- hex-a-hop.svn.orig/hex_puzzzle.cpp 2007-09-20 00:49:14.000000000 +0200 ++++ hex-a-hop.svn/hex_puzzzle.cpp 2007-09-20 00:49:19.000000000 +0200 +@@ -532,8 +532,9 @@ + + struct RenderStage + { ++ virtual ~RenderStage() {} + virtual void Render(RenderObject* r, double time, bool reflect) = 0; +- virtual int GetDepth(double time) { return 1; } ++ virtual int GetDepth(double /*time*/) { return 1; } + }; + + class RenderObject +@@ -792,7 +793,7 @@ + void RenderTile(bool reflect, int t, int x, int y, int cliplift) + { + SDL_Rect src = tile[reflect][t]; +- SDL_Rect dst = {x-scrollX-GFX_SIZE/2, y-scrollY-GFX_SIZE+TILE_H1}; ++ SDL_Rect dst = {x-scrollX-GFX_SIZE/2, y-scrollY-GFX_SIZE+TILE_H1, 0, 0}; + dst.x += tileOffset[reflect][t][0]; + dst.y += tileOffset[reflect][t][1]; + if (reflect) +@@ -831,7 +832,7 @@ + else + y -= h; + SDL_Rect src = {sx, sy, 64, 80}; +- SDL_Rect dst = {x-scrollX-32, y-scrollY-65}; ++ SDL_Rect dst = {x-scrollX-32, y-scrollY-65, 0, 0}; + SDL_BlitSurface(girlGraphics, &src, screen, &dst); + } + +@@ -895,7 +896,7 @@ + isFadeRendering = d; + } + +- void Render(RenderObject* r, double time, bool reflect) ++ void Render(RenderObject* /*r*/, double time, bool reflect) + { + if (reflect) return; + if (time > 0.5) +@@ -913,7 +914,7 @@ + bool done; + ScrollRender(int a,int b) : x(a), y(b), done(false) {} + +- void Render(RenderObject* r, double time, bool reflect) ++ void Render(RenderObject* /*r*/, double /*time*/, bool /*reflect*/) + { + if (done) return; + scrollX = x, scrollY = y; +@@ -934,7 +935,7 @@ + LevelSelectRender(Pos const & _p, int i2, int adj) : p(_p), item(i2), adj(adj) + {} + +- void Render(RenderObject* r, double time, bool reflect) ++ void Render(RenderObject* /*r*/, double /*time*/, bool reflect) + { + if (item==0) + return; +@@ -972,7 +973,7 @@ + ItemCollectRender(int i2, Pos const & p) : ItemRender(i2, 0, p) + {} + +- void Render(RenderObject* r, double time, bool reflect) ++ void Render(RenderObject* /*r*/, double /*time*/, bool /*reflect*/) + { + } + }; +@@ -1002,7 +1003,7 @@ + Pos p; + double specialDuration; + +- TileRender(int i, Pos const & _p, int _special=0) : t(i), p(_p), special(_special), specialDuration(LASER_LINE_TIME) ++ TileRender(int i, Pos const & _p, int _special=0) : special(_special), t(i), p(_p), specialDuration(LASER_LINE_TIME) + {} + + void Render(RenderObject* r, double time, bool reflect) +@@ -1130,7 +1131,7 @@ + LaserRender(Pos _p, int dir, int r) : p(_p), d(dir), range(r) + {} + +- void Render(RenderObject* r, double time) ++ void Render(RenderObject* /*r*/, double /*time*/) + { + } + }; +@@ -1147,12 +1148,12 @@ + seed = rand(); + } + +- virtual int GetDepth(double time) ++ virtual int GetDepth(double /*time*/) + { + return p.x + p.y*2; + } + +- void Render(RenderObject* r, double time, bool reflect) ++ void Render(RenderObject* /*r*/, double time, bool reflect) + { + if (type==1 && time > 2.5) + type = -1, new WinLoseScreen(false); +@@ -1223,7 +1224,7 @@ + seed = rand(); + } + +- void Render(RenderObject* r, double time, bool reflect) ++ void Render(RenderObject* /*r*/, double time, bool reflect) + { + if (type) + RenderTile(reflect, height ? COLLAPSE_DOOR : COLLAPSABLE, p.getScreenX(), p.getScreenY()); +@@ -1266,11 +1267,11 @@ + int height; + int type; + +- BuildRender(Pos _p, Dir _d, int _h, int _r=0, int _type=0) : p(_p), dir(_d), height(_h), reverse(_r), type(_type) ++ BuildRender(Pos _p, Dir _d, int _h, int _r=0, int _type=0) : p(_p), dir(_d), reverse(_r), height(_h), type(_type) + { + } + +- void Render(RenderObject* r, double time, bool reflect) ++ void Render(RenderObject* /*r*/, double time, bool reflect) + { + if (time >= BUILD_TIME) + RenderTile(reflect, height ^ reverse ? (type ? COLLAPSE_DOOR2 : COLLAPSE_DOOR) : (type ? COLLAPSABLE2 : COLLAPSABLE), p.getScreenX(), p.getScreenY()); +@@ -1346,9 +1347,9 @@ + double speed; + bool dead; + +- PlayerRender(Pos a, int h, bool d) : p(a), dead(d), target(a), speed(0), p_h(h), target_h(h), r(3), type(0) ++ PlayerRender(Pos a, int h, bool d) : p(a), target(a), p_h(h), target_h(h), r(3), type(0), speed(0), dead(d) + {} +- PlayerRender(int _r, Pos a, int h1, Pos t, int h2, bool d) : p(a), dead(d), target(t), speed(JUMP_TIME), p_h(h1), target_h(h2), r(_r), type(0) ++ PlayerRender(int _r, Pos a, int h1, Pos t, int h2, bool d) : p(a), target(t), p_h(h1), target_h(h2), r(_r), type(0), speed(JUMP_TIME), dead(d) + { + int dist = MAX(ABS(p.x-target.x), ABS(p.y-target.y)); + if (dist > 1) +@@ -1363,15 +1364,12 @@ + if (f>1) f=1; + if (f==1) dead = this->dead; + +- double x = p.x + (target.x - p.x) * f; +- double y = p.y + (target.y - p.y) * f; +- + if (f==1 || f>0.5 && p_h>target_h) + return target.x+target.y*2; + return MAX(target.x+target.y*2 , p.x+p.y*2); + } + +- void Render(RenderObject* ro, double time, bool reflect) ++ void Render(RenderObject* /*ro*/, double time, bool reflect) + { + bool dead = false; + double f = speed ? time / speed : 1; +@@ -1581,7 +1579,7 @@ + return &tmp; + } + +- for (int i=0; i>")}; +@@ -2634,7 +2632,6 @@ + src.w = SCREEN_W; + src.h = 1; + +- const bool farView = false; + if (isRenderMap) + { + src.x += (int)( sin(i*0.9 + time*3.7) * sin(i*0.3 + time*0.7)*4 ); +@@ -3208,7 +3205,7 @@ + { + static Pos hits[100]; + static Dir hitDir[100]; +- static int numHits=0; ++ static unsigned int numHits=0; + if (!recurse) + numHits = 0; + +@@ -3220,7 +3217,7 @@ + + Pos p = newpos + fd; + int range = 0; +- for (range; range +# based on patch from "trick" (see #440377 for details) +# Licensed under the GPL, see /usr/share/common-licenses/GPL + +Index: hex-a-hop.svn/gfx.cpp +=================================================================== +--- hex-a-hop.svn.orig/gfx.cpp 2007-09-20 00:49:22.000000000 +0200 ++++ hex-a-hop.svn/gfx.cpp 2007-09-20 00:49:39.000000000 +0200 +@@ -414,6 +414,8 @@ + videoExposed = 0; + } + ++ SDL_Delay(10); ++ + #ifdef USE_BBTABLET + // Tablet //////////////////////// + bbTabletEvent evt; --- hex-a-hop-0.0.20070315.orig/debian/patches/patch-hex-a-hop-better-than-par.diff +++ hex-a-hop-0.0.20070315/debian/patches/patch-hex-a-hop-better-than-par.diff @@ -0,0 +1,33 @@ +# Copyright (C) 2007 Sam Hocevar +# Licensed under the GPL, see /usr/share/common-licenses/GPL + +Index: hex-a-hop.svn/hex_puzzzle.cpp +=================================================================== +--- hex-a-hop.svn.orig/hex_puzzzle.cpp 2007-09-20 00:49:10.000000000 +0200 ++++ hex-a-hop.svn/hex_puzzzle.cpp 2007-09-20 00:49:14.000000000 +0200 +@@ -2229,7 +2229,7 @@ + + int par = GetPar(x); + if (progress.general.scoringOn && l->PassesPar( par )) +- t = 4; ++ t = l->BeatsPar( par ) ? 40 : 4; + } + if (recurse) + return t; +Index: hex-a-hop.svn/savestate.h +=================================================================== +--- hex-a-hop.svn.orig/savestate.h 2007-09-20 00:49:01.000000000 +0200 ++++ hex-a-hop.svn/savestate.h 2007-09-20 00:49:14.000000000 +0200 +@@ -105,6 +105,12 @@ + + return score <= bestScore; + } ++ bool BeatsPar(int par) ++ { ++ if (!Completed()) ++ return false; ++ return bestScore < par; ++ } + bool PassesPar(int par) + { + if (!Completed()) --- hex-a-hop-0.0.20070315.orig/debian/patches/mouse-wheel-support.patch +++ hex-a-hop-0.0.20070315/debian/patches/mouse-wheel-support.patch @@ -0,0 +1,15 @@ +Index: hex-a-hop.svn/menus.h +=================================================================== +--- hex-a-hop.svn.orig/menus.h 2007-09-20 00:49:31.000000000 +0200 ++++ hex-a-hop.svn/menus.h 2007-09-20 00:49:41.000000000 +0200 +@@ -312,6 +312,10 @@ + else + Cancel(); + } ++ else if (buttons_pressed==8) ++ Move(-1); ++ else if (buttons_pressed==16) ++ Move(1); + else + Menu::Mouse(x,y,dx,dy,buttons_pressed, buttons_released, buttons); + } --- hex-a-hop-0.0.20070315.orig/debian/patches/array_subscripts_warning.patch +++ hex-a-hop-0.0.20070315/debian/patches/array_subscripts_warning.patch @@ -0,0 +1,82 @@ +# Copyright (C) 2007 Jens Seidel +# Licensed under the GPL, see /usr/share/common-licenses/GPL + +Index: hex-a-hop.svn/hex_puzzzle.cpp +=================================================================== +--- hex-a-hop.svn.orig/hex_puzzzle.cpp 2007-09-20 00:49:25.000000000 +0200 ++++ hex-a-hop.svn/hex_puzzzle.cpp 2007-09-20 00:49:27.000000000 +0200 +@@ -3818,7 +3818,7 @@ + + if (!isMap && !editMode && undoTime < 0) + { +- if (keyState['z'] || keyState[SDLK_BACKSPACE] || keyState['u']) ++ if (keyState[SDLK_z] || keyState[SDLK_BACKSPACE] || keyState[SDLK_u]) + { + Undo(); + return; +@@ -3827,12 +3827,12 @@ + if (isMap && !editMode) + { + +- if ((keyState['q'] | keyState[SDLK_KP7]) & 2) keyboardp.x--; +- else if ((keyState['d'] | keyState[SDLK_KP3]) & 2) keyboardp.x++; +- else if ((keyState['e'] | keyState[SDLK_KP9]) & 2) keyboardp.x++, keyboardp.y--; +- else if ((keyState['a'] | keyState[SDLK_KP1]) & 2) keyboardp.x--, keyboardp.y++; +- else if ((keyState['w'] | keyState[SDLK_KP8] | keyState[SDLK_UP]) & 2) keyboardp.y--; +- else if ((keyState['s'] | keyState[SDLK_KP2] | keyState[SDLK_DOWN]) & 2) keyboardp.y++; ++ if ((keyState[SDLK_q] | keyState[SDLK_KP7]) & 2) keyboardp.x--; ++ else if ((keyState[SDLK_d] | keyState[SDLK_KP3]) & 2) keyboardp.x++; ++ else if ((keyState[SDLK_e] | keyState[SDLK_KP9]) & 2) keyboardp.x++, keyboardp.y--; ++ else if ((keyState[SDLK_a] | keyState[SDLK_KP1]) & 2) keyboardp.x--, keyboardp.y++; ++ else if ((keyState[SDLK_w] | keyState[SDLK_KP8] | keyState[SDLK_UP]) & 2) keyboardp.y--; ++ else if ((keyState[SDLK_s] | keyState[SDLK_KP2] | keyState[SDLK_DOWN]) & 2) keyboardp.y++; + else if ((keyState[SDLK_LEFT]) & 2) keyboardp.x--, keyboardp.y+=keyboardp.x&1; + else if (((keyState[SDLK_RIGHT]) & 2)) { if (keyboardp.x < mapRightBound) keyboardp.y-=keyboardp.x&1, keyboardp.x++; } + else if ((keyState[SDLK_RETURN] | keyState[SDLK_KP5] | keyState[SDLK_SPACE] | keyState[SDLK_KP_ENTER]) & 2) +@@ -3862,12 +3862,12 @@ + { + static int usedDiag = 0; + +- if (keyState['q'] || keyState[SDLK_KP7]) HandleKey('q', 0); +- else if (keyState['w'] || keyState[SDLK_KP8]) HandleKey('w', 0); +- else if (keyState['e'] || keyState[SDLK_KP9]) HandleKey('e', 0); +- else if (keyState['a'] || keyState[SDLK_KP1]) HandleKey('a', 0); +- else if (keyState['s'] || keyState[SDLK_KP2]) HandleKey('s', 0); +- else if (keyState['d'] || keyState[SDLK_KP3]) HandleKey('d', 0); ++ if (keyState[SDLK_q] || keyState[SDLK_KP7]) HandleKey('q', 0); ++ else if (keyState[SDLK_w] || keyState[SDLK_KP8]) HandleKey('w', 0); ++ else if (keyState[SDLK_e] || keyState[SDLK_KP9]) HandleKey('e', 0); ++ else if (keyState[SDLK_a] || keyState[SDLK_KP1]) HandleKey('a', 0); ++ else if (keyState[SDLK_s] || keyState[SDLK_KP2]) HandleKey('s', 0); ++ else if (keyState[SDLK_d] || keyState[SDLK_KP3]) HandleKey('d', 0); + + else if (keyState[SDLK_UP] && keyState[SDLK_LEFT]) HandleKey('q', 0), usedDiag=1; + else if (keyState[SDLK_UP] && keyState[SDLK_RIGHT]) HandleKey('e', 0), usedDiag=1; +Index: hex-a-hop.svn/Makefile +=================================================================== +--- hex-a-hop.svn.orig/Makefile 2007-09-20 00:49:22.000000000 +0200 ++++ hex-a-hop.svn/Makefile 2007-09-20 00:49:27.000000000 +0200 +@@ -3,9 +3,7 @@ + VERSION = 1.0.0 + CC = gcc + DATA_DIR="." +-# See http://www.thescripts.com/forum/thread471291.html for +-# details to -Wno-char-subscripts +-CXXFLAGS += -Wall -W -Wno-char-subscripts -g ++CXXFLAGS += -Wall -W -g + GCC =g++ + CXXSOURCES = gfx.cpp hex_puzzzle.cpp i18n.cpp + #INCLUDES = +Index: hex-a-hop.svn/menus.h +=================================================================== +--- hex-a-hop.svn.orig/menus.h 2007-09-20 00:49:25.000000000 +0200 ++++ hex-a-hop.svn/menus.h 2007-09-20 00:49:27.000000000 +0200 +@@ -910,7 +910,7 @@ + t = td; + if (keyState[SDLK_LSHIFT]) + t = td*5; +- if (keyState['0']) ++ if (keyState[SDLK_0]) + t = MAX(-td*5, -time); + + Menu::Update(t); --- hex-a-hop-0.0.20070315.orig/debian/patches/segfault_443822.patch +++ hex-a-hop-0.0.20070315/debian/patches/segfault_443822.patch @@ -0,0 +1,17 @@ +# Copyright (C) 2007 Roland Clobus + +Index: hex-a-hop/hex_puzzzle.cpp +=================================================================== +--- hex-a-hop.orig/hex_puzzzle.cpp 2007-12-17 10:41:09.000000000 +0100 ++++ hex-a-hop/hex_puzzzle.cpp 2007-12-17 15:04:22.000000000 +0100 +@@ -602,7 +602,10 @@ + { + while (numStages > 0 && time[numStages-1] >= t) + numStages--; ++ if (currentStage > 0 && currentStage >= numStages) ++ currentStage = numStages - 1; + } ++ if (currentStage < 0) currentStage = 0; + } + void Wipe() + { --- hex-a-hop-0.0.20070315.orig/debian/patches/gcc_4.4.patch +++ hex-a-hop-0.0.20070315/debian/patches/gcc_4.4.patch @@ -0,0 +1,27 @@ +Description: Fix invalid conversions from char * to const char *. +Index: hex-a-hop-0.0.20070315/menus.h +=================================================================== +--- hex-a-hop-0.0.20070315.orig/menus.h 2009-12-12 11:34:42.000000000 -0500 ++++ hex-a-hop-0.0.20070315/menus.h 2009-12-12 11:35:06.000000000 -0500 +@@ -192,7 +192,7 @@ + { + state = 0; time = 0; + memset(title, 0, sizeof(title)); +- char * x = strstr(m, "|"); ++ const char * x = strstr(m, "|"); + if (!x) + { + msg = m; +Index: hex-a-hop-0.0.20070315/savestate.h +=================================================================== +--- hex-a-hop-0.0.20070315.orig/savestate.h 2009-12-12 11:35:15.000000000 -0500 ++++ hex-a-hop-0.0.20070315/savestate.h 2009-12-12 11:35:31.000000000 -0500 +@@ -278,7 +278,7 @@ + + LevelSave* GetLevel(const char * name, bool create) + { +- char * l = strstr(name, "Levels"); ++ const char * l = strstr(name, "Levels"); + if (l) + name = l; + --- hex-a-hop-0.0.20070315.orig/debian/patches/pango_fonts.patch +++ hex-a-hop-0.0.20070315/debian/patches/pango_fonts.patch @@ -0,0 +1,439 @@ +# Copyright (C) 2007 Jens Seidel +# Licensed under the GPL, see /usr/share/common-licenses/GPL + +Index: hex-a-hop.svn/gfx.cpp +=================================================================== +--- hex-a-hop.svn.orig/gfx.cpp 2007-09-20 00:49:19.000000000 +0200 ++++ hex-a-hop.svn/gfx.cpp 2007-09-20 00:49:22.000000000 +0200 +@@ -19,6 +19,7 @@ + #include "i18n.h" + + #include "state.h" ++#include + + #ifdef WIN32 + #include +@@ -30,6 +31,14 @@ + #undef USE_BBTABLET + #endif + ++// If included multiple times: ++// BUG: multiple definition of `MATRIX_WHITE_BACK' ++// see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=437517 ++#include "SDL_Pango.h" ++ ++#include ++#include ++ + #ifndef DATA_DIR + #define DATA_DIR "." + #endif +@@ -110,6 +119,7 @@ + float styluspressure = 0; + SDL_Surface * screen = 0; + SDL_Surface * realScreen = 0; ++SDLPango_Context *context = 0; + + extern State* MakeWorld(); + +@@ -157,6 +167,89 @@ + } + String base_path; + ++/// determine length of longest line with current font (wrapping allowed if text_width != -1) ++int SDLPangoTextHeight(const std::string &text_utf8, int text_width) ++{ ++ // SDLPango_SetMinimumSize limits indeed the maximal size! See ++ // http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=438691 ++ SDLPango_SetMinimumSize(context, text_width, 0); ++ SDLPango_SetText(context, text_utf8.c_str(), -1); ++ return SDLPango_GetLayoutHeight(context); ++} ++ ++/** \brief Determine length of longest line with current font ++ * ++ * Whether line breaks are allowed or not needs to be set before using ++ * SDLPango_SetMinimumSize! ++ */ ++int SDLPangoTextWidth(const std::string &text_utf8) ++{ ++ SDLPango_SetText(context, text_utf8.c_str(), -1); ++ return SDLPango_GetLayoutWidth(context); ++} ++ ++/// Display the specified UTF-8 text left aligned at (x,y) ++void Print_Pango(int x, int y, const std::string &text_utf8) ++{ ++ // Workaround for possible crash, see ++ // http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=439071 ++ if (text_utf8.size() == 0 || text_utf8.size() == 1 && text_utf8[0]==127) ++ return; ++ assert(text_utf8.find("\n") == std::string::npos); ++ SDLPango_SetMinimumSize(context, SCREEN_W, 0); ++ SDLPango_SetText(context, text_utf8.c_str(), -1); ++ SDL_Surface *surface = SDLPango_CreateSurfaceDraw(context); ++ SDL_Rect dst = {x, y, 1, 1}; ++ SDL_BlitSurface(surface, NULL, screen, &dst); ++ SDL_FreeSurface(surface); ++} ++ ++/** \brief Display the specified UTF-8 text according to the alignment ++ * ++ * If line breaks are already properly set (manually) the will be respected ++ * and no new line breaks will be added. This assumes that th text is not too ++ * wide. ++ * ++ * \param x the displayed text is horizontally centered around x ++ * \param y the displayed text starts at y ++ * \param width background window size into which the text needs to fit ++ * \param text_utf8 the text to be displayed, in UTF8 encoding ++ * \param align=1: horizontally centered around (x,y) ++ * */ ++void Print_Pango_Aligned(int x, int y, int width, const std::string &text_utf8, int align) ++{ ++ // Workaround for possible crash, see ++ // http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=439071 ++ if (text_utf8.size() == 0 || text_utf8.size() == 1 && text_utf8[0]==127) ++ return; ++ if (width<=0) ++ return; ++ SDLPango_SetMinimumSize(context, width, 0); ++ int real_width = SDLPangoTextWidth(text_utf8); ++ // Workaround for a crash in SDL Pango, see ++ // http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=439855 ++ if (real_width>width) ++ SDLPango_SetMinimumSize(context, real_width, 0); ++ ++ SDLPango_Alignment alignment; ++ if (align==0) ++ alignment = SDLPANGO_ALIGN_LEFT; ++ else if (align==2) { ++ alignment = SDLPANGO_ALIGN_RIGHT; ++ x -= width; ++ } else { ++ alignment = SDLPANGO_ALIGN_CENTER; ++ x -= width/2; ++ } ++ // SDLPango_SetText_GivenAlignment is not (yet?) part of the official Pango ++ // distribution, see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=437865 ++ SDLPango_SetText_GivenAlignment(context, text_utf8.c_str(), -1, alignment); ++ SDL_Surface *surface = SDLPango_CreateSurfaceDraw(context); ++ SDL_Rect dst = {x, y, 1, 1}; ++ SDL_BlitSurface(surface, NULL, screen, &dst); ++ SDL_FreeSurface(surface); ++} ++ + int TickTimer() + { + static int time = SDL_GetTicks(); +@@ -204,6 +297,10 @@ + */ + + SDL_Init(SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE); ++ SDLPango_Init(); ++ context = SDLPango_CreateContext_GivenFontDesc("sans-serif bold 12"); ++ SDLPango_SetDefaultColor(context, MATRIX_TRANSPARENT_BACK_WHITE_LETTER); ++ SDLPango_SetMinimumSize(context, SCREEN_W, 0); + + SDL_Surface* icon = SDL_LoadBMP("graphics/icon.bmp"); + if (icon) +@@ -378,7 +475,7 @@ + if (!td.isValid()) + printf("No tablet/driver found\n"); + #endif +- } ++ } + if (m->msg == WM_DROPFILES) + { + HDROP h = (HDROP)m->wParam; +@@ -476,6 +573,7 @@ + } + } + ++ SDLPango_FreeContext(context); + SDL_Quit(); + return 0; + } +Index: hex-a-hop.svn/hex_puzzzle.cpp +=================================================================== +--- hex-a-hop.svn.orig/hex_puzzzle.cpp 2007-09-20 00:49:19.000000000 +0200 ++++ hex-a-hop.svn/hex_puzzzle.cpp 2007-09-20 00:49:22.000000000 +0200 +@@ -17,6 +17,11 @@ + */ + + #include "i18n.h" ++#include ++#include ++#include // TODO: remove it later ++#include ++#include + + ////////////////////////////////////////////////////// + // Config +@@ -401,15 +406,37 @@ + } + } + ++void ConvertToUTF8(const std::string &text_locally_encoded, char *text_utf8, size_t text_utf8_length) ++{ ++ // Is this portable? ++ size_t text_length = text_locally_encoded.length()+1; ++ errno = 0; ++ static const char *locale_enc = gettext_init.GetEncoding(); ++ iconv_t cd = iconv_open("UTF-8", locale_enc); ++ char *in_buf = const_cast(&text_locally_encoded[0]); ++ char *out_buf = &text_utf8[0]; ++ iconv(cd, &in_buf, &text_length, &out_buf, &text_utf8_length); ++ iconv_close(cd); ++ if (errno != 0) ++ std::cerr << "An error occurred recoding " << text_locally_encoded << " to UTF8" << std::endl; ++} ++ ++int SDLPangoTextWidth(const std::string &text_utf8); ++void Print_Pango(int x, int y, const std::string &text_utf8); ++void Print_Pango_Aligned(int x, int y, int width, const std::string &text_utf8, int align); ++ ++/// Prints a left aligned string (a single line) beginning at (x,y) ++// TODO: Check that the maximal text width is already set + void Print(int x, int y, const char * string, ...) + { + va_list marker; + va_start( marker, string ); /* Initialize variable arguments. */ + +- char tmp[1000]; ++ char tmp[1000], tmp_utf8[5000]; // FIXME: Check this limit + vsprintf((char*)tmp, string, marker); + +- PrintRaw(x, y, tmp); ++ ConvertToUTF8(tmp, tmp_utf8, sizeof(tmp_utf8)/sizeof(char)); ++ Print_Pango(x, y, tmp_utf8); + + va_end( marker ); /* Reset variable arguments. */ + } +@@ -422,29 +449,38 @@ + return w; + } + ++/// Prints a string right aligned so that it ends at (x,y) ++// TODO: Check that the maximal text width is already set + void PrintR(int x, int y, const char * string, ...) + { + va_list marker; + va_start( marker, string ); /* Initialize variable arguments. */ + +- char tmp[1000]; ++ char tmp[1000], tmp_utf8[5000]; // FIXME: Check this limit + vsprintf((char*)tmp, string, marker); + +- PrintRaw(x-FontWidth(tmp), y, tmp); ++ ConvertToUTF8(tmp, tmp_utf8, sizeof(tmp_utf8)/sizeof(char)); ++ Print_Pango(x-SDLPangoTextWidth(tmp_utf8), y, tmp_utf8); + + va_end( marker ); /* Reset variable arguments. */ + } + +-void PrintC(bool split, int x, int y, const char * string, ...) ++/** \brief Prints a string horizontally centered around (x,y) ++ * ++ * " " in the string is interpreted as linebreak ++*/ ++void Print_Aligned(bool split, int x, int y, int width, const char * string, int align) + { +- va_list marker; +- va_start( marker, string ); /* Initialize variable arguments. */ ++ char tmp_utf8[5000]; // FIXME: Check this limit + +- char tmp[1000]; +- vsprintf((char*)tmp, string, marker); ++ ConvertToUTF8(string, tmp_utf8, sizeof(tmp_utf8)/sizeof(char)); + +- char* scan = tmp; +- while (1) ++ std::string msg(tmp_utf8); ++ while (split && msg.find(" ") != std::string::npos) ++ msg.replace(msg.find(" "), 2, "\n"); ++ ++ Print_Pango_Aligned(x, y, width, msg, align); ++ /* + { + char * end = split ? strstr(scan," ") : 0; + if (!end) +@@ -460,10 +496,28 @@ + y += FONT_SPACING; + } + } ++ */ ++} ++ ++void PrintC(bool split, int x, int y, const char * string, ...) ++{ ++ va_list marker; ++ va_start( marker, string ); /* Initialize variable arguments. */ ++ ++ char tmp[1000]; // FIXME: Check this limit ++ vsprintf((char*)tmp, string, marker); + + va_end( marker ); /* Reset variable arguments. */ +-} + ++ static bool print = true; // avoid flickering! ++ if (print) { ++ std::cerr << "Warning: don't know window width for message:\n" << tmp << "\n"; ++ for (unsigned int i=0; i + + struct Menu; + Menu* activeMenu = 0; + Menu* deadMenu = 0; + ++int SDLPangoTextHeight(const std::string &text_utf8, int width); ++ + static void HackKeyPress(int key, int mod) + { + int k = keyState[key]; +@@ -154,11 +157,22 @@ + { + static int flags; + ++ SDL_Rect InnerTextWindowRect; ++ SDL_Rect OuterTextWindowRect; + const char * msg; +- char title[50]; +- int numLines; ++ char title[50]; // FIXME + int state; + ++ const SDL_Rect &GetInnerWindowRect() const ++ { ++ return InnerTextWindowRect; ++ } ++ ++ const SDL_Rect &GetOuterWindowRect() const ++ { ++ return OuterTextWindowRect; ++ } ++ + static bool FlagTile(int t, bool newStuff=true) + { + if (t==LIFT_UP) t=LIFT_DOWN; +@@ -176,7 +190,6 @@ + + void Init(const char * m) + { +- numLines = 1; + state = 0; time = 0; + memset(title, 0, sizeof(title)); + char * x = strstr(m, "|"); +@@ -191,9 +204,19 @@ + msg=x+1; + } + +- const char * s = m; +- while ((s=strstr(s, " "))) +- s+=2, numLines++; ++ char msg_utf8[5000]; ++ ConvertToUTF8(msg, msg_utf8, sizeof(msg_utf8)/sizeof(char)); ++ ++ std::string text(msg_utf8); ++ while (text.find(" ") != std::string::npos) ++ text.replace(text.find(" "), 2, "\n"); ++ ++ InnerTextWindowRect.w = SCREEN_W-TILE_W1*2; ++ InnerTextWindowRect.h = SDLPangoTextHeight(text, InnerTextWindowRect.w - 2*FONT_SPACING); ++ InnerTextWindowRect.h += FONT_SPACING; ++ OuterTextWindowRect = InnerTextWindowRect; ++ OuterTextWindowRect.w += 4; ++ OuterTextWindowRect.h += FONT_SPACING+4; + } + + virtual void Render() +@@ -205,17 +228,35 @@ + Render(0, y); + + if (!state && time>0.2) +- Print(SCREEN_W*3/4, SCREEN_H-FONT_SPACING, _("Press any key")); ++ PrintR(SCREEN_W-FONT_SPACING, SCREEN_H-FONT_SPACING, _("Press any key")); + } + + void Render(int x, int y) + { +- SDL_Rect r2 = {x+TILE_W1, y, SCREEN_W-TILE_W1*2, numLines*FONT_SPACING+FONT_SPACING}; +- SDL_Rect r = {r2.x-2, r2.y-2-FONT_SPACING, r2.w+4, r2.h+4+FONT_SPACING}; ++ //if (y<0) { ++ // std::cout << "Error in Render: " << x << " " << y << "\n"; // CHECKME ++ // y = 0; ++ //} ++ InnerTextWindowRect.x = x+TILE_W1; ++ InnerTextWindowRect.y = y; ++ OuterTextWindowRect.x = InnerTextWindowRect.x-2; ++ OuterTextWindowRect.y = InnerTextWindowRect.y-2-FONT_SPACING; ++ // Height is reduced in SDL_FillRect!!? Why? ==> Use a copy: ++ SDL_Rect r2 = InnerTextWindowRect; ++ SDL_Rect r = OuterTextWindowRect; + SDL_FillRect(screen, &r, SDL_MapRGB(screen->format, 60,90,90)); + SDL_FillRect(screen, &r2, SDL_MapRGB(screen->format, 20,50,50)); +- Print(r.x+FONT_SPACING/4, y-FONT_SPACING, title); +- PrintC(true, x+SCREEN_W/2, y+FONT_SPACING/2, msg); ++ Print(OuterTextWindowRect.x+FONT_SPACING/4, y-FONT_SPACING, "%s", title); ++ /* TRANSLATORS: This specifies how the text in the help dialog should ++ be aligned. Do *not* translate the text itself but use one of "left", ++ "center" or "right" (untranslated!). The default is "center". */ ++ std::string alignment = _("text alignment"); ++ if (alignment == "right") ++ Print_Aligned(true, InnerTextWindowRect.x + InnerTextWindowRect.w - FONT_SPACING, y+FONT_SPACING/2, InnerTextWindowRect.w - 2*FONT_SPACING, msg, 2); ++ else if (alignment == "left") ++ Print_Aligned(true, InnerTextWindowRect.x + FONT_SPACING, y+FONT_SPACING/2, InnerTextWindowRect.w - 2*FONT_SPACING, msg, 0); ++ else ++ Print_Aligned(true, x+SCREEN_W/2, y+FONT_SPACING/2, InnerTextWindowRect.w - 2*FONT_SPACING, msg, 1); + } + + virtual void Mouse(int /*x*/, int /*y*/, int /*dx*/, int /*dy*/, int buttons_pressed, int /*buttons_released*/, int /*buttons*/) +@@ -265,7 +306,8 @@ + { + if (y < SCREEN_H/4-FONT_SPACING+2) + Move(-1); +- else if (y > SCREEN_H/4+FONT_SPACING*numLines+FONT_SPACING) ++ else if (y > HintMessage::GetOuterWindowRect().y+ ++ HintMessage::GetOuterWindowRect().h) + Move(1); + else + Cancel(); +@@ -304,7 +346,8 @@ + //if (!noMouse) + { + PrintC(false, SCREEN_W/2, y-FONT_SPACING*2, "^"); +- PrintC(false, SCREEN_W/2, y+FONT_SPACING*(numLines+1)+FONT_SPACING/2-2, "_"); ++ PrintC(false, SCREEN_W/2, HintMessage::GetOuterWindowRect().y+ ++ HintMessage::GetOuterWindowRect().h, "_"); + } + + HintMessage::Render(0,y); --- hex-a-hop-0.0.20070315.orig/debian/patches/remove_confirmation.patch +++ hex-a-hop-0.0.20070315/debian/patches/remove_confirmation.patch @@ -0,0 +1,191 @@ +Index: hex-a-hop-0.0.20070315/menus.h +=================================================================== +--- hex-a-hop-0.0.20070315.orig/menus.h 2009-04-06 14:39:44.000000000 -0400 ++++ hex-a-hop-0.0.20070315/menus.h 2009-04-06 14:48:32.000000000 -0400 +@@ -70,7 +70,7 @@ + virtual void Mouse(int /*x*/, int /*y*/, int /*dx*/, int /*dy*/, int buttons_pressed, int /*buttons_released*/, int /*buttons*/) + { + if (buttons_pressed==4 || buttons_pressed==2) +- Cancel(); ++ Pop(); + } + + virtual void Move(int /*dir*/) {} +@@ -310,7 +310,7 @@ + HintMessage::GetOuterWindowRect().h) + Move(1); + else +- Cancel(); ++ Pop(); + } + else if (buttons_pressed==8) + Move(-1); +@@ -399,8 +399,6 @@ + OPT_FULLSCREEN, + OPT_OPTIONS, + OPT_QUIT, +- OPT_QUIT_CONFIRM, +- OPT_QUIT_CANCEL, + OPT_QUIT_MENU_CONFIRM, + OPT_HELP, + OPT_GAMESLOT_NEW, +@@ -432,8 +430,6 @@ + _("Toggle Fullscreen"), + _("Options"), + _("Quit"), +- _("Yes"), +- _("No"), + _("Return to Title"), + _("Help"), + _("Start New Game"), +@@ -1014,20 +1010,7 @@ + #endif + } + bool KeyPressed(int key, int mod); +-}; +- +-struct QuitConfirmMenu : public OptMenuTitle +-{ +- QuitConfirmMenu() : OptMenuTitle(_("Quit: Are you sure?")) +- { +- opt[num_opt++] = OPT_QUIT_CONFIRM; +- opt[select=num_opt++] = OPT_QUIT_CANCEL; +- Init(); +- +- r.y += FONT_SPACING*1; +- r2.y += FONT_SPACING*2; +- } +- ++ void Cancel (); + }; + + struct DeleteConfirmMenu : public OptMenuTitle +@@ -1061,25 +1044,12 @@ + } + }; + +-bool TitleMenu::KeyPressed(int key, int mod) +-{ +- if (key==SDLK_DELETE || key==SDLK_BACKSPACE || key==SDLK_F2) +- { +- if (select<0 || select>=num_opt || opt[select]OPT_GAMESLOT_LAST) +- return true; +- int i = opt[select] - OPT_GAMESLOT_0; +- +- new DeleteConfirmMenu(i); +- +- return true; +- } +- return OptMenu::KeyPressed(key, mod); +-} +- + struct PauseMenu : public OptMenu + { ++ bool escape_to_map; + PauseMenu(bool isMap, bool allowGotoMap, int allowEnd, int allowEnd2) : OptMenu(_("Paused")) + { ++ escape_to_map = !isMap && allowGotoMap; + opt[num_opt++] = OPT_RESUME; + if (!isMap) + opt[num_opt++] = OPT_RESTART; +@@ -1087,19 +1057,19 @@ + opt[num_opt++] = OPT_HELP; + if (allowEnd || allowEnd2) + opt[num_opt++] = allowEnd2 ? OPT_END2 : OPT_END; +- opt[num_opt++] = (isMap || !allowGotoMap) ? OPT_QUIT_MENU_CONFIRM : OPT_GOTO_MAP; ++ opt[num_opt++] = escape_to_map ? OPT_GOTO_MAP : OPT_QUIT_MENU_CONFIRM; + Init(); + } + virtual bool KeyPressed(int key, int mod) + { + if (key=='p' || key==SDLK_PAUSE) + { +- Cancel(); ++ Pop(); + return true; + } + return Menu::KeyPressed(key, mod); + } +- ++ void Cancel (); + }; + + struct OptionMenu : public OptMenuTitle +@@ -1182,12 +1152,38 @@ + } + }; + ++bool TitleMenu::KeyPressed(int key, int mod) ++{ ++ if (key==SDLK_DELETE || key==SDLK_BACKSPACE || key==SDLK_F2) ++ { ++ if (select<0 || select>=num_opt || opt[select]OPT_GAMESLOT_LAST) ++ return true; ++ int i = opt[select] - OPT_GAMESLOT_0; ++ ++ new DeleteConfirmMenu(i); ++ ++ return true; ++ } ++ return OptMenu::KeyPressed(key, mod); ++} ++ ++void TitleMenu::Cancel () ++{ ++ new Fader (-1, -2); ++} ++ + void Ending::Cancel() + { + new Fader(-1, -6, 0.3); + // Pop(); + } + ++void PauseMenu::Cancel () ++{ ++ opt[select] = escape_to_map ? OPT_GOTO_MAP : OPT_QUIT_MENU_CONFIRM; ++ Select (); ++} ++ + void ToggleFullscreen(); + + void OptMenu::Select() +@@ -1197,11 +1193,11 @@ + switch(opt[select]) + { + case OPT_RESUME: +- Cancel(); ++ Pop(); + break; + + case OPT_RESTART: +- Cancel(); ++ Pop(); + HackKeyPress('r', KMOD_CTRL); + break; + +@@ -1211,15 +1207,11 @@ + HackKeyPress(SDLK_ESCAPE, KMOD_CTRL); + break; + +- case OPT_QUIT: +- new QuitConfirmMenu(); +- break; +- + case OPT_FULLSCREEN: + ToggleFullscreen(); + break; + +- case OPT_QUIT_CONFIRM: ++ case OPT_QUIT: + new Fader(-1, -2); + break; + +@@ -1236,7 +1228,6 @@ + new HintReview(); + break; + +- case OPT_QUIT_CANCEL: + case OPT_BACK: + Pop(); + break; --- hex-a-hop-0.0.20070315.orig/debian/patches/minimal-sdl-init.patch +++ hex-a-hop-0.0.20070315/debian/patches/minimal-sdl-init.patch @@ -0,0 +1,13 @@ +Index: hex-a-hop.svn/gfx.cpp +=================================================================== +--- hex-a-hop.svn.orig/gfx.cpp 2007-09-20 00:48:52.000000000 +0200 ++++ hex-a-hop.svn/gfx.cpp 2007-09-20 00:49:05.000000000 +0200 +@@ -197,7 +197,7 @@ + SDL_Flip(screen); + */ + +- SDL_Init(SDL_INIT_EVERYTHING | SDL_INIT_NOPARACHUTE); ++ SDL_Init(SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE); + + SDL_Surface* icon = SDL_LoadBMP("graphics/icon.bmp"); + if (icon) --- hex-a-hop-0.0.20070315.orig/debian/patches/misc_errors.patch +++ hex-a-hop-0.0.20070315/debian/patches/misc_errors.patch @@ -0,0 +1,77 @@ +Index: hex-a-hop.svn/hex_puzzzle.cpp +=================================================================== +--- hex-a-hop.svn.orig/hex_puzzzle.cpp 2007-09-20 00:49:33.000000000 +0200 ++++ hex-a-hop.svn/hex_puzzzle.cpp 2007-09-20 00:49:35.000000000 +0200 +@@ -608,8 +608,8 @@ + { + if (currentStage > 0 && numStages > 0) + { +- memmove(&time[0], &time[currentStage], sizeof(time[0]) * numStages-currentStage); +- memmove(&stage[0], &stage[currentStage], sizeof(stage[0]) * numStages-currentStage); ++ memmove(&time[0], &time[currentStage], sizeof(time[0]) * (numStages-currentStage)); ++ memmove(&stage[0], &stage[currentStage], sizeof(stage[0]) * (numStages-currentStage)); + numStages -= currentStage; + currentStage = 0; + } +@@ -1804,6 +1804,9 @@ + char* ReadAll(FILE* f) + { + int size; ++ // FIXME: According to http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht20Ht/c_faq_de ++ // undefined for binary streams! (POSIX does not differ between ascii and binary, so ++ // we are on the safe side in Linux) + fseek(f, 0, SEEK_END); + size = ftell(f); + fseek(f, 0, SEEK_SET); +@@ -1888,7 +1891,8 @@ + PackFile1::Entry* e = levelFiles.Find(filename); + if (!e) return false; + +- strcpy(currentFile, filename); ++ if (currentFile != filename) // equal (overlapping) strings are forbidden ++ strcpy(currentFile, filename); + currentLevelInfo = GetLevelInfo(currentFile); + + loadPtr = (char*)e->Data(); +Index: hex-a-hop.svn/packfile.h +=================================================================== +--- hex-a-hop.svn.orig/packfile.h 2007-09-20 00:49:19.000000000 +0200 ++++ hex-a-hop.svn/packfile.h 2007-09-20 00:49:35.000000000 +0200 +@@ -29,9 +29,22 @@ + + struct PackFile1 + { ++ /* Is it *NOT* save to interpret a byte stream as list of Entries! ++ * The alignment could increase the Entry size on some systems without attribute. ++ * ++ * It works on: i386, amd64, mips o32 ABI, powerPC ++ * Maybe it's also compiler dependent ... ++ * ++ * See also http://c-faq.com/struct/padding.html, ++ * http://c-faq.com/strangeprob/ptralign.html and Debian bug #442854 ++ * (Need to refer to a C FAQ in a (so called) C++ program, argh ...) ++ * */ + class Entry { + int32_t len; + public: ++ // an array of size 1 (no char* pointer!) is saved after len, ++ // accessing name[0] should (but doesn't always) fit the first byte after len ++ // See e.g. http://c-faq.com/aryptr/index.html + char name[1]; + + Entry* GetNext() +@@ -51,7 +64,13 @@ + { + return len - strlen(name) - 1; + } +- }; ++ } ++#ifdef __GNUC__ ++ __attribute__ ((__packed__)); ++ int static_assert1[sizeof(Entry)==5 ? 0 : -1]; ++#else ++ int static_assert1[sizeof(Entry)<=8 ? 0 : -1]; ++#endif + + int numfiles; + Entry** e; --- hex-a-hop-0.0.20070315.orig/debian/patches/i18n_increase_array_sizes.patch +++ hex-a-hop-0.0.20070315/debian/patches/i18n_increase_array_sizes.patch @@ -0,0 +1,49 @@ +# Copyright (C) 2007 Jens Seidel +# Licensed under the GPL, see /usr/share/common-licenses/GPL + +Index: hex-a-hop.svn/hex_puzzzle.cpp +=================================================================== +--- hex-a-hop.svn.orig/hex_puzzzle.cpp 2007-09-20 00:49:27.000000000 +0200 ++++ hex-a-hop.svn/hex_puzzzle.cpp 2007-09-20 00:49:31.000000000 +0200 +@@ -1553,7 +1553,7 @@ + if (t <= numComplete) + return 0; + +- static char tmp1[100]; ++ static char tmp1[1000]; + static LevelInfo tmp = {0, "", tmp1}; + sprintf(tmp1, ngettext("Complete 1 more level to unlock!", "Complete %d more levels to unlock!", t-numComplete), t-numComplete); + return &tmp; +Index: hex-a-hop.svn/menus.h +=================================================================== +--- hex-a-hop.svn.orig/menus.h 2007-09-20 00:49:27.000000000 +0200 ++++ hex-a-hop.svn/menus.h 2007-09-20 00:49:31.000000000 +0200 +@@ -160,7 +160,7 @@ + SDL_Rect InnerTextWindowRect; + SDL_Rect OuterTextWindowRect; + const char * msg; +- char title[50]; // FIXME ++ char title[500]; + int state; + + const SDL_Rect &GetInnerWindowRect() const +@@ -407,8 +407,8 @@ + OPT_END, OPT_END2, + }; + +-char optionSlotName[MAX_GAMESLOT][40] = { {0} }; +-char currentSlot[80] = ""; ++char optionSlotName[MAX_GAMESLOT][400] = { {0} }; ++char currentSlot[800] = ""; + int freeSlot = -1; + char* GetSlotName(int i, char * t) + { +@@ -1028,7 +1028,7 @@ + + struct DeleteConfirmMenu : public OptMenuTitle + { +- char tmp[80]; ++ char tmp[800]; + int num; + DeleteConfirmMenu(int _num) : OptMenuTitle(&tmp[0]), num(_num) + { --- hex-a-hop-0.0.20070315.orig/debian/patches/mouse_cursor_without_font.patch +++ hex-a-hop-0.0.20070315/debian/patches/mouse_cursor_without_font.patch @@ -0,0 +1,24 @@ +Index: hex-a-hop.svn/hex_puzzzle.cpp +=================================================================== +--- hex-a-hop.svn.orig/hex_puzzzle.cpp 2007-09-20 00:49:31.000000000 +0200 ++++ hex-a-hop.svn/hex_puzzzle.cpp 2007-09-20 00:49:33.000000000 +0200 +@@ -2790,10 +2790,6 @@ + { + RenderTile(false, editTile, mousex+scrollX, mousey+scrollY); + } +- else +- { +- Print(mousex, mousey-2, "\x7f"); +- } + } + } + +@@ -4128,7 +4124,7 @@ + // }; + // static SDL_Cursor * c = SDL_CreateCursor(data, mask, 32, 32, 1, 1); + // SDL_SetCursor(c); +- SDL_ShowCursor(0); ++ SDL_ShowCursor(1); + } + void FreeGraphics() + { --- hex-a-hop-0.0.20070315.orig/debian/patches/typos.patch +++ hex-a-hop-0.0.20070315/debian/patches/typos.patch @@ -0,0 +1,35 @@ +Index: hex-a-hop.svn/menus.h +=================================================================== +--- hex-a-hop.svn.orig/menus.h 2007-09-20 00:49:10.000000000 +0200 ++++ hex-a-hop.svn/menus.h 2007-09-20 00:49:17.000000000 +0200 +@@ -125,7 +125,7 @@ + //Item 1 (22) + /* TRANSLATORS: Normally you jump from one plate to another. The golden jump (a + pickup) allows you to jump and land on the *same* plate */ +-_("Collecting the golden jump pickups will allow you to do a big vertical jump. Try it out on different types of tile. Use the space bar or return key to jump. Or click on the tile you're currently on with the mouse."), ++_("Collecting the golden jump pickups will allow you to do a big vertical jump. Try it out on different types of tiles. Use the space bar or return key to jump. Or click on the tile you're currently on with the mouse."), + + 0,0, + +@@ -147,7 +147,7 @@ + /* TRANSLATORS: This string is copied twice into the POT file to workaround a + gettext limitation (no macro expansion). The extracted string "Welcome to " + will not be used. */ +-_("Welcome to " GAMENAME "! This is a puzzle game based on hexagonal tiles. There is no time limit and no real-time elements, so take as long as you like. Use the cursor keys or click on the arrows to scroll through the help pages. More pages will be added as you progress through the game."), ++_("Welcome to " GAMENAME "! This is a puzzle game based on hexagonal tiles. There is no time limit and no real-time element, so take as long as you like. Use the cursor keys or click on the arrows to scroll through the help pages. More pages will be added as you progress through the game."), + }; + + struct HintMessage : public Menu +Index: hex-a-hop.svn/level_list.h +=================================================================== +--- hex-a-hop.svn.orig/level_list.h 2007-09-20 00:49:10.000000000 +0200 ++++ hex-a-hop.svn/level_list.h 2007-09-20 00:49:17.000000000 +0200 +@@ -57,7 +57,7 @@ + {0, "2005_11_19\\turntables.lev", _(" Roundabouts"),}, + {0, "2005_11_19\\two fish.lev", _(" Two Fish"),}, + {0, "3_2hitfloor\\all wound up.lev", _("All Wound Up"),}, +-{0, "3_2hitfloor\\collapse2.lev", _(" Toughened Tiles"),}, ++{0, "3_2hitfloor\\collapse2.lev", _(" Toughened Tiles"),}, + {0, "3_2hitfloor\\Island.lev", _(" Island"),}, + {0, "3_2hitfloor\\more stripes.lev", _(" More Stripes"),}, + {0, "3_2hitfloor\\Stripey.lev", _(" Stripes"),}, --- hex-a-hop-0.0.20070315.orig/debian/tools/Makefile +++ hex-a-hop-0.0.20070315/debian/tools/Makefile @@ -0,0 +1,22 @@ +CC=gcc +CFLAGS=-Wall -O2 `sdl-config --cflags` +LDFLAGS=`sdl-config --libs` +SOURCES=bmp2dat.c dat2bmp.c +OBJECTS=$(SOURCES:.c=.o) +PROGRAMS=$(SOURCES:.c=) + +all: $(PROGRAMS) + +%: %.o + $(CC) $(LDFLAGS) $< -o $@ + +.c.o: + $(CC) $(CFLAGS) -c $< -o $@ + +clean: + rm -f $(PROGRAMS) + rm -f $(OBJECTS) + +install: + mkdir -p $(DESTDIR)/usr/bin + cp $(PROGRAMS) $(DESTDIR)/usr/bin/ --- hex-a-hop-0.0.20070315.orig/debian/tools/dat2bmp.c +++ hex-a-hop-0.0.20070315/debian/tools/dat2bmp.c @@ -0,0 +1,82 @@ +// gcc -Wall -g dat2bmp.c -o dat2bmp `sdl-config --cflags --libs` + +#include +#include +#include +#include +#include +#include + +#include + +#define ERROR_PRINTF(...) { fprintf(stderr, "%s:%s:%u Error: ", __FILE__, __PRETTY_FUNCTION__, __LINE__); fprintf(stderr,__VA_ARGS__); fflush(stderr); } + +int main(int argc, const char *argv[]) +{ + FILE* f = NULL; + uint32_t *tmp = NULL; + const char *bmp = NULL; + const char *dat = NULL; + SDL_Surface * g = NULL; + + if (argc < 3) + { + fprintf(stderr, "Usage: %s file.dat file.bmp\n", argv[0]); + return -1; + } + + dat = argv[1]; + bmp = argv[2]; + + f = fopen(dat, "rb"); + if (!f) + { + ERROR_PRINTF("Unable to open file %s: %s", dat, strerror(errno)); + return -1; + } + + short w,h; + fread(&w, sizeof(w), 1, f); + fread(&h, sizeof(h), 1, f); + + if (w>1500 || h>1500) + { + ERROR_PRINTF("Invalid file %s", dat); + return -1; + } + + tmp = (uint32_t *)calloc((int) w * h, sizeof(uint32_t)); + + uint32_t c = 0; + uint32_t cnt = 0; + int p = 0; + for (p = 0; p < (int) w * h; p++) + { + if (cnt) + cnt -= 0x1; + else + { + fread(&c, sizeof(c), 1, f); + cnt = c >> 24; + if (cnt==255) + fread(&cnt, sizeof(cnt), 1, f); + } + tmp[p] = c | 0xff000000; + } + + g = SDL_CreateRGBSurfaceFrom(tmp, w, h, 32, w*4, + 0xff0000, + 0xff00, + 0xff, + 0xff000000 ); + + if (SDL_SaveBMP(g, bmp) == -1) + { + ERROR_PRINTF("Unable to write BMP file %s: %s", bmp, strerror(errno)); + return -1; + } + + fclose(f); + free(tmp); + return 0; +} --- hex-a-hop-0.0.20070315.orig/debian/tools/bmp2dat.c +++ hex-a-hop-0.0.20070315/debian/tools/bmp2dat.c @@ -0,0 +1,109 @@ +// gcc -Wall -g bmp2dat.c -o bmp2dat `sdl-config --cflags --libs` + +#include +#include +#include +#include +#include +#include + +#include + +#define IMAGE_DAT_OR_MASK 0xff030303 // Reduce colour depth of images slightly for better compression (and remove useless top 8 bits!) + +#define ERROR_PRINTF(...) { fprintf(stderr, "%s:%s:%u Error: ", __FILE__, __PRETTY_FUNCTION__, __LINE__); fprintf(stderr,__VA_ARGS__); fflush(stderr); } + +static int Peek(SDL_Surface* i, int x, int y) +{ + if (x<0 || y<0 || x>=i->w || y>=i->h) + return 0; + unsigned int p=0; + const int BytesPerPixel = i->format->BytesPerPixel; + const int BitsPerPixel = i->format->BitsPerPixel; + if (BitsPerPixel==8) + p = ((unsigned char*)i->pixels)[i->pitch*y + x*BytesPerPixel]; + else if (BitsPerPixel==15 || BitsPerPixel==16) + p = *(short*)(((char*)i->pixels) + (i->pitch*y + x*BytesPerPixel)); + else if (BitsPerPixel==32) + p = *(unsigned int*)(((char*)i->pixels) + (i->pitch*y + x*BytesPerPixel)); + else if (BitsPerPixel==24) + p = (int)((unsigned char*)i->pixels)[i->pitch*y + x*BytesPerPixel] + | (int)((unsigned char*)i->pixels)[i->pitch*y + x*BytesPerPixel] << 8 + | (int)((unsigned char*)i->pixels)[i->pitch*y + x*BytesPerPixel] << 16; + + return p; +} + +static int IsEmpty(SDL_Surface* im, int x, int y, int w, int h) +{ + int i, j; + for (i=x; ih-1)) + return 0; + return 1; +} + +int main(int argc, const char *argv[]) +{ + typedef unsigned int uint32; + SDL_Surface * g = NULL; + const char *bmp = NULL; + const char *dat = NULL; + int colourKey = 1; + + if (argc < 3) + { + fprintf(stderr, "Usage: %s file.bmp file.dat\n", argv[0]); + return -1; + } + + bmp = argv[1]; + dat = argv[2]; + + g = SDL_LoadBMP(bmp); + +// SDL_PixelFormat p; +// p.sf = 1; +// SDL_Surface* tmp = SDL_ConvertSurface(g, &p, SDL_SWSURFACE); + + short w=g->w, h=g->h; + char* buf = (char*) g->pixels; + if (colourKey) + { + while (IsEmpty(g, w-1, 0, 1, h) && w>1) + w--; + while (IsEmpty(g, 0, h-1, w, 1) && h>1) + h--; + } + + FILE* f = fopen(dat, "wb"); + fwrite(&w, sizeof(w), 1, f); + fwrite(&h, sizeof(h), 1, f); + + uint32 mask = IMAGE_DAT_OR_MASK; + int i; + for (i=0; i<(int)w*h; ) + { + uint32 c = (*(uint32*)&buf[(i%w)*3 + (i/w)*g->pitch] | mask); + int i0 = i; + while (i < (int)w*h && c == (*(uint32*)&buf[(i%w)*3 + (i/w)*g->pitch] | mask)) + i++; + c &= 0xffffff; + i0 = i-i0-1; + if (i0 < 0xff) + c |= i0 << 24; + else + c |= 0xff000000; + + fwrite(&c, sizeof(c), 1, f); + + if (i0 >= 0xff) + fwrite(&i0, sizeof(i0), 1, f); + } + fclose(f); + + SDL_FreeSurface(g); + + return 0; +}